Прежде всего. Я ничего не знаю о сценариях bash. во-вторых, это очень большая проблема с моей стороны, и я не знаю, что делать.
В настоящее время у меня есть этот сайт. который был написан на php. и использует почтовый сервер и push-уведомления, которые запускаются как демон с использованием supervisord. Мой сайт работает хорошо, но время от времени мой почтовый сервер и push-уведомления не работают, потому что супервизор перестал работать; Мне пришлось перезапустить его вручную, чтобы он снова заработал.
Я думал, что мне сделать, чтобы у него автозапуск. потом возникла идея. для перезапуска службы с помощью сценария bash и заданий cron. Я знаю, это было глупо.
Я создал сценарий bash. просто простой.
#!/bin/bash
# A simple script
echo " -- Restarting Supervisord --"
sudo service supervisor stop
sudo service supervisor start
echo "Done!"
когда я запускаю это вручную через
./supervisord_restart.sh
это был результат, который я получил
-- Restarting Supervisord --
Job for supervisor.service failed. See "systemctl status supervisor.service" and "journalctl -xe" for details.
Done!
все так что я не знаю, правильно ли это в cronjob
0 0,12 * * * /supervisord_restart.sh
кстати, если я правильно поступаю. Мне нужен мой сценарий bash, чтобы проверить, запущен ли suprevisord, а затем выполнить команды.
Предполагая, что ваш сервис имеет status
, вы можете сделать что-нибудь столь же простое, как в задании cron:
0 0,12 * * * service whatever status >/dev/null || service whatever restart
Таким образом, вы сначала запускаете проверку состояния, отбрасываете подробный вывод, а затем проверяете, что код выхода не равен 0 (что было бы хорошо), и в этом случае - перезапуск.
Действительно, с такой легкой проверкой вы можете чаще запускать задание cron.
Если вы получаете сообщение об ошибке «команда не найдена» из задания cron, это может быть не в PATH по умолчанию, поэтому добавьте вызовы с помощью / usr / sbin / или / sbin / или где бы он ни был в вашей системе.
Прежде всего: вы должны исследовать "настоящий" проблема с супервизором вместо перезапуска службы каждую ночь.
При этом попробуйте использовать /etc/init.d/supervisor stop
/ start
или restart
. Часто cron имеет проблемы с использованием service
. Вы также должны создать cron под управлением супервизора пользователя или как root через sudo crontab -e
. Также всегда используйте полные пути в cron, поэтому не /supervisord_restart.sh
но /usr/local/bin/supervisord_restart.sh
или похожие.
(И: какой дистрибутив Linux вы используете)