Для того, чтобы создать сторожевой таймер бедного человека и убедиться, что приложение перезапускается в случае сбоя (пока я не выясню почему), мне нужно написать PHP CLI-скрипт, который будет запускаться cron каждые 5 минут для проверки запущен ли процесс.
Исходя из этой страницы , я попробовал следующий код, но он всегда возвращает True, даже если я вызываю его с поддельными данными:
function processExists($file = false) {
$exists= false;
$file= $file ? $file : __FILE__;
// Check if file is in process list
exec("ps -C $file -o pid=", $pids);
if (count($pids) > 1) {
$exists = true;
}
return $exists;
}
#if(processExists("lighttpd"))
if(processExists("dummy"))
print("Exists\n")
else
print("Doesn't exist\n");
Далее я попробовал этот код ...
(exec("ps -A | grep -i 'lighttpd -D' | grep -v grep", $output);)
print $output;
... но не получите то, что я ожидаю:
/tmp> ./mycron.phpcli
Arrayroot:/tmp>
FWIW, этот скрипт запускается с версией CLI PHP 5.2.5, а ОС - uClinux 2.6.19.3.
Спасибо за любую подсказку.
Редактировать: Кажется, это работает нормально
exec("ps aux | grep -i 'lighttpd -D' | grep -v grep", $pids);
if(empty($pids)) {
print "Lighttpd not running!\n";
} else {
print "Lighttpd OK\n";
}