Можно ли настроить мой CentOS VPS для постоянной проверки, чтобы убедиться, что php-скрипт запущен? В настоящее время я использую метод php screen, который отлично работает, но если он каким-то образом прерывается, как я могу начать его резервное копирование?
Я попытался добавить команду в /etc/rc.d/rc.local, но сегодня утром проверил, скрипт не запускается.
Эта задача хорошо подходит для монитора процесса, такого как Монит.
Конфигурация мониторинга будет намного проще с Monit, если ваш процесс PHP создает файл PID. Доступна статья, описывающая, как использовать Monit для проверки и запуска процессов PHP. Вот.
для этого можно использовать supervisord. Это приложение на Python, но очень простое в настройке. Supervisord предоставляет в своей конфигурации директиву автоматического перезапуска, которая перезапустит сценарий в случае его смерти.
вы можете прочитать об этом на http://phpadvent.org/2009/daemonize-your-php-by-sean-coates
Эта задача хорошо подходит для внешнего мониторинга, такого как AlertFox, Pingdom, Monitis, ... (все они имеют бесплатные планы).
Подход всегда один и тот же: вы создаете страницу PHP, которая проверяет, запущен ли сценарий PHO, и служба мониторинга периодически вызывает его:
http://blog.alertfox.com/2011/01/monitoring-disk-space-and-other-status.html
Вы можете написать сценарий проверки, который анализирует вывод ps
в поисках вашего экземпляра php. Если он существует, ваш скрипт должен завершиться без вывода сообщений; в противном случае ваш скрипт должен запустить вашу php-программу, а затем написать сообщение на стандартный вывод, предупреждающее, что процесс мертв и его необходимо перезапустить.
Затем добавьте свой скрипт проверки в свой crontab (например,)
MAILTO=you@domain.com
*/5 * * * * /path/to/checking-script.sh
В этом примере ваш сценарий проверки запускается каждые 5 минут. Если процесс php мертв и ваш проверяющий скрипт перезапускает его, он также выведет вышеупомянутое сообщение, которое будет отправлено вам по электронной почте (в виде предупреждения).