Похоже, что подходит для superivisord .Следующая конфигурация гарантирует, что 10 процессов всегда работают, и имеет дело с ротацией журналов, что также удобно.Весь вывод, включая stderr, будет записан в /var/log/worker.log.С "autorestart = true" supervisord заменит дочерний процесс, как только он выйдет.
[program:worker]
command=php /path/to/worker.php
process_name=%(program_name)s_%(process_num)d
stdout_logfile=/var/log/%(program_name)s.log
redirect_stderr=true
stdout_capture_maxbytes=512MB
stdout_logfile_backups=3
numprocs=10
numprocs_start=0
autostart=true
autorestart=true
Как только вы установили конфигурацию supervisor (обычно /etc/supervisord/conf.d), вы можетеиспользуйте supervisorctl как удобный способ запуска и остановки группы процессов.
$ supervisorctl start worker
...
$ supervisorctl stop worker
...
$ supervisorctl status
worker:worker_0 RUNNING pid 8985, uptime 0:09:24
worker:worker_1 RUNNING pid 10157, uptime 0:08:52
...
worker:worker_9 RUNNING pid 12459, uptime 0:08:31