时间:2011-01-06 19:33:00

标签: php shell

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

另一种方法是,循环启动你的php程序:

for ((;;))
do
   my.php 
done

使用Linux ps,您可以使用

ps -C "my.php"

而不是grep,以识别my.php。 Grep命令经常发现自己。也许你的ps有类似的开关?

答案 2 :(得分:1)

如果你真的觉得需要grep ps的输出,请注意你的grep发现本身。

[ghoti@pc ~]$ sleep 60 &
[1] 66677
[ghoti@pc ~]$ ps aux | grep sleep
ghoti      66677   0.0  0.0   3928    784  11  S     4:11PM     0:00.00 sleep 60
ghoti      66681   0.0  0.0  16440   1348  11  S+    4:12PM     0:00.00 grep sleep
[ghoti@pc ~]$

有一种简单的方法可以避免这种情况。只需将grep的一部分变成更复杂的正则表达式。

[ghoti@pc ~]$ sleep 60 &
[2] 66717
[ghoti@pc ~]$ ps aux | grep '[s]leep'
ghoti      66677   0.0  0.0   3928    784  11  S     4:11PM     0:00.00 sleep 60
ghoti      66717   0.0  0.0   3928    784  11  S     4:13PM     0:00.00 sleep 60
[ghoti@pc ~]$ 

另一方面,如果您只是想确保您的PHP脚本始终运行,您可以将它包装在它死亡时重新运行它的东西:

while true; do
  php /path/to/my.php
done

如果你想在启动时运行它,你可以在服务器上编辑你的crontab,并使用@reboot标签,假设你正在使用“Vixie”cron(在Linux和BSD上很常见):

@reboot /path/to/wrapperscript

您可以 man crontab man 5 crontab 了解有关如何使用cron和@reboot标记的更多详细信息。