Как способ создания сторожевого пса-бедняка и убедитесь, что приложение перезагрузилось, если оно сработает (пока не выясню, почему), мне нужно написать PHP CLI script, который будет выполняться cron каждые 5mn чтобы проверить, все еще запущен процесс.
Основываясь на на этой странице, я попробовал следующий код, но он всегда возвращает 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, этот script запускается с версией 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";
}