Как насчет просто перезапустить интерпретатор php, когда он умрет?
while true ; do php -f $file -print >> /var/log/file.log ; done
Конечно, кто-то может отправить сценарий SIGSTOP
, SIGTSTP
, SIGTTIN
, SIGTTOU
, чтобы он завис, но, возможно, у этого человека есть действительно веская причина. Вы можете заблокировать их все, кроме SIGSTOP
, так что, возможно, все в порядке.
Или, если скрипт выполняет что-то вроде вызова read(2)
на устройстве или сокете, которые никогда не вернутся, это на самом деле не обеспечит «жизнеспособность» вашего скрипта. (Но тогда вы бы использовали неблокирующий ввод-вывод для предотвращения этой ситуации, так что это покрыто.)
О, да, вы также можете вставить его в ваш / etc / inittab. Но я не дам вам больше намека на это, потому что я думаю, что это, вероятно, плохая идея.
И уже существует много подобных инструментов: daemontools и Linux Heartbeat - первые два, которые приходят на ум.