2

我每小时都在运行一个用 PHP 编程的爬虫,并有一个 cron 作业。当一切都按预期进行时,脚本会自动退出。但是,由于某些原因,有时它会陷入无限循环。情况变得更糟,因为我使用锁定文件来避免重复运行,当爬虫卡住时,它永远不会再次运行,直到它手动杀死它( ps aux -> kill )

无论发生什么,我如何确保脚本在几个小时后结束?

我应该在 php 代码中添加一行吗?直接在 Linux 中这样做不是更健壮吗?

到目前为止,我最好的想法是制作一个包含所有必要命令的小批处理文件,然后使用 cron 而不是直接使用 php 脚本调用该批处理。

我是对的,命令应该是什么?

谢谢

编辑:到目前为止我发现的最好的是:http ://www.linuxquestions.org/questions/linux-general-1/how-to-kill-the-process-after-specific-time-624453

bash 太长了,我希望有一个更智能、更短的解决方案。

干杯

4

1 回答 1

3

这将杀死一个多小时前开始的 php 进程:

$(ps -eo comm,pid,etimes | awk '/^php/ {if ($3 > 3600) { print "kill "$2}}')

3600 - 以秒为单位的时间戳

PS你可以运行命令

> ps -eo comm,pid,etimes

之前和之后,以确保一切顺利。

PPS 我知道这是个老问题,但有人可能会觉得它有帮助

于 2018-03-01T20:59:16.453 回答