Вы наверняка сталкивались с ситуацией, когда в системе периодически падает один из процессов. Чтобы восстановить его работу, приходится каждый раз запускать сервис вручную. Выяснить причину возникновения проблемы может быть достаточно сложно. От безысходности временно приходится решать проблему с помощью костылей.
В этой заметке я расскажу о одном из возможных способов временного решения проблемы. Для мониторинга и автоматического перезапуска сервиса в Linux мы будем использовать cron. Команда будет выполнятся каждую минуту и в случае отсутствия в системе процесса с указанным именем, будет выполнен автоматический перезапуск сервиса.
Для начала нам необходимо выяснить полный путь к скрипту, который выполняет запуск сервиса. В debian/Ubuntu скрипты запуска сервисов расположены в каталоге /etc/init.d/
. Можно самостоятельно найти нужный скрипт или выполнить команду:
$ find /etc/init.d -name service_name /etc/init.d/service_name
Выполните команду crontab -e
, а затем добавьте новое задание в cron:
*/1 * * * * ps -A | grep service_name || /etc/init.d/service_name restart
Важно помнить, что это временно решение до того момента, как будет найдена и устранена сама причина возникновения проблемы.