Cron 作业检查 PHP 脚本是否正在运行

Cron 作业检查 PHP 脚本是否正在运行

我在 Cron 作业方面遇到了麻烦,我基本上有两个 PHP 脚本,我想在我的服务器上持续运行。目前我正在使用无限循环让它们继续前进,但它们似乎会在随机的时间停止。

理想情况下,我想编写一个脚本来检查脚本是否正在运行,如果没有则启动它们。

我想知道我该怎么做?

答案1

你想要的是一个守护进程,而不是一个 cron 作业。cron 作业用于执行某些操作定期地(或在启动时),不是用于保持进程存活。我鼓励您阅读该文章,然后做一些非常简单的事情,如下所示:

#!/bin/sh
while true
do
   /my/script.php >> /var/log/my_script.log 2>&1
done

答案2

要检查正在运行的进程,您可以列出所有正在运行的进程(使用 ps),然后使用 grep 过滤要查找的进程:

 ps aux | grep YOUR_PHP_COMMAND

如果您只想在命令未运行时启动命令,可以使用以下脚本:

CMD="/bin/sleep 3" # replace it with your command
if ! ps x|grep -v grep|grep "$CMD"; then 
  $CMD
fi

注意:您需要使用“grep -v grep”从进程列表中排除 grep 进程。

如果你想把它放在一个 CRON JOB 中,你可以用 ' 将它打包在一行中;'

CMD="/bin/sleep 3"  ;  if ! ps aux|grep -v grep|grep "$CMD"; then $CMD  ;  fi

请记住,CRON 作业非常适合安排事情。如果您只想保持程序运行,更好的方法是无限循环,每当程序结束时就启动该程序。

相关内容