Сценарий bash для перезапуска службы, если она не запущена

Иногда некоторые службы и процессы перестают работать в нашей системе по тем или иным причинам. Если это давно работающая служба, которую мы ждем, чтобы запустить, это может быть очень неприятно. Хотя мы тратим время на изучение проблемы и ее устранение, было бы лучше автоматически запускать службу, когда она останавливается. Хотя существует множество сторонних служб, таких как supervisord, которые предлагают такую возможность, вы также можете сделать это, написав простой сценарий оболочки.

 

Сценарий оболочки для перезапуска службы, если она не запущена

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

Вот основная команда для проверки того, запущен ли процесс, например httpd, или нет.

Приведенная выше команда ps выводит список всех запущенных процессов. Мы передаем ее вывод команде grep и ищем строку 'httpd', чтобы узнать, содержит ли она запись для процесса Apache. Мы также передаем его команде grep еще раз, чтобы исключить запись команды grep, выполненной ранее, поскольку она уже содержит строку 'httpd'.

Если статус выхода вышеуказанной команды не равен 0, это означает, что процесс не запущен. Теперь команда для запуска процесса MySQL выглядит следующим образом

Давайте соберем все это вместе в сценарий оболочки. Создайте пустой сценарий оболочки с помощью следующей команды.

Добавьте в него следующие строки.

Сохраните и закройте файл. В приведенном выше сценарии мы сначала устанавливаем среду выполнения, затем запускаем вышеупомянутую команду ps, чтобы проверить, запущен MySQL или нет. Затем мы проверяем статус выхода этой команды, хранящийся в переменной $? Если он не равен 0, мы выполняем команду для запуска службы MySQL.

Сделайте сценарий оболочки исполняемым с помощью следующей команды.

Вы можете запустить сценарий оболочки с помощью следующей команды.

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

Добавьте в него следующую строку. Обязательно укажите полный путь к вашему сценарию оболочки (например, /home/ubuntu/auto-restart.sh), чтобы процесс cron смог правильно его найти.

Сохраните и закройте файл. Вот и все. Теперь ваш shell-скрипт будет автоматически запускаться каждые 15 минут, проверяя, запущен ли MySQL или нет, и автозапускаться, если он умер, разбился или перестал работать.

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

Вот пример проверки наличия PHP и MySQL, в дополнение к Apache, и их запуска, если они не работают.

Заключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий