我创建了一个我想要一直运行的php文件。然后我创建了一个基本包装器,我希望CRON运行以确保脚本仍在运行 - 并在需要时重新启动它。
我的crontab -e
条目是这样的:
20 * * * * /var/www/bot/cron.php
cron.php的内容如下所示。
#!/usr/bin/php
<?php
@exec ('ps aux | grep loop', $output, $ret_var);
$running = false;
foreach ($output as $line)
{
if (strpos($line, 'bot.php') !== false)
{
$running = true;
break;
}
}
if (! $running)
{
@exec('/usr/bin/nohup php ' . __DIR__ . '/bot.php >/var/log/bot_out 2>&1 &');
}
die();
然而,我无法正常工作。有什么我想念的吗?
我没有得到任何错误日志,/var/log/bot_out
确实显示一些运行时错误,所以我知道必须调用PHP。
PHP Warning: Module 'apc' already loaded in Unknown on line 0
PHP Warning: Module 'suhosin' already loaded in Unknown on line 0
答案 0 :(得分:1)
20 * * * * /var/www/bot/cron.sh
然后是cron.sh的内容
#!/bin/bash
KP=$(pgrep -P 1 -f bot.php)
if [ "X$KP" = "X" ]
then
/usr/bin/nohup php PATH_TO_YOUR_SCRIPT/bot.php
fi