Автоматический перезапуск сервиса в Linux

Дата: 16.02.2016Метки:

Вы наверняка сталкивались с ситуацией, когда в системе периодически падает один из процессов. Чтобы восстановить его работу, приходится каждый раз запускать сервис вручную. Выяснить причину возникновения проблемы может быть достаточно сложно. От безысходности временно приходится решать проблему с помощью костылей.

В этой заметке я расскажу о одном из возможных способов временного решения проблемы. Для мониторинга и автоматического перезапуска сервиса в 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

Важно помнить, что это временно решение до того момента, как будет найдена и устранена сама причина возникновения проблемы.