我如何杀死一个失控的cronjob

我有一个被设置为不断运行的cronjob。 这是一个从twitter发送数据的php文件。 然而,twitter每隔一段时间就会closures,或者我们失去连接,所以我有cron检查每分钟来尝试运行该文件。 php脚本检查一个locking文件,以确保多个副本不运行。 事情是这个脚本将运行几个小时,我想能够死它。 不过,我似乎无法使用类似的命令find它

ps ux 

cronjob是从我的用户开始的,我曾经看过在root下看到它。 我似乎无法find运行的进程。

我在用

 /usr/bin/php /var/www/twitter/stream.php 

在我的cron文件中执行,我知道它正在运行,因为它每分钟写一个文件到一个目录。 我可以停止cron,但这个过程继续下去,我只需要杀死它。 不知道这是否属于这里或堆栈溢出。

要在ps显示守护进程,您需要包含-e选项(System V / POSIX)或(BSDish)。 尝试ps auxps -ef

你这样做是错的。 (至less在我的愚见:-)

你可以按照Geekosaur或者James Yale的build议来做你想做的事情,但是我认为你真的需要PHP的pcntl_alarm()函数(和它的相对pcntl_signal ),这将允许你的PHP脚本利用SIGALRM工具,错误。

你用闹钟做什么是你的电话(它可以像“退出,如果我已经跑了一个小时”一样简单,或者像“检查我们是否从twitter获得数据一样复杂”初始化连接,如果我们还没有得到数据退出,并让脚本再次运行“ – 这一切都取决于你的脚本是多么复杂)。

关于SIGALRM和信号处理的更多问题应该可以转到StackOverflow – 他们(希望)熟悉它,并且可以从编程的angular度给你更多的指导:-)

通常进程将PID写入锁文件,这样你就可以find进程是否在运行以及它的ID是在一个地方。

我build议你修改你的脚本来做到这一点,那么你可以posix_kill或类似的要求。