Как настроить задание cron для мониторинга нескольких PI (через SSH), на которых выполняется один и тот же сценарий демона (служба)?
Я думал об использовании задания cron для отслеживания статуса службы и записи в файл на моем сервере, если статус службы активен или неактивен, а затем я могу позже использовать содержимое этого файла для отображения результатов Cron работа на веб-странице (но это я выясню позже).
Я открыт для других вариантов, если кто-то может найти более простой способ, используя другой инструмент, например, Bash-скрипт, Python-скрипт, PHP и т. д.,
По вашему вопросу
Как проверить, запущена ли служба демона
в RHEL / CentOS v4.x / 5.x / 6.x и Fedora Linux (более старая версия) Проверьте службу Cron
Вы можете просто использовать любую из следующих команд, чтобы увидеть, работает ли crond или нет, введите:
$ pgrep crond
ИЛИ ЖЕ
$ service crond status
Пример выходов:
# crond (pid 4370) is running...
Если он не запущен, введите следующие две команды для запуска crond:
$ chkconfig crond on
$ service crond start
Убедитесь, что cron запущен, просмотрев файл журнала, введите:
$ tail -f /var/log/cron
Замечание о CentOS / RHEL v7.x + и последней версии Fedora Linux
Вам нужно использовать следующую команду, чтобы узнать, работает ли crond или нет:
$ systemctl status crond.service
Пример выходов:
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since Tue 2015-05-19 14:53:32 EDT; 3min 7s ago
Main PID: 1292 (crond)
CGroup: /system.slice/crond.service
└─1292 /usr/sbin/crond -n
Если не работает, настройте службу crond на автоматический запуск при загрузке:
$ sudo systemctl enable crond.service
$ sudo systemctl start crond.service
Замечание о службе Cron в Debian / Ubuntu Linux (более старая версия)
В Debian и Ubuntu Linux cron регистрирует свои действия в системном журнале, то есть использует файл / var / log / messages:
$ tail -f /var/log/messages
Чтобы узнать, запущен ли демон cron, введите:
$ pgrep cron
Если он не запущен, введите:
$ update-rc.d cron defaults
$ /etc/init.d/cron start
Замечание о Debian Linux v8.x + и последней версии Ubuntu Linux
Синтаксис следующий, чтобы проверить, работает ли служба cron или нет:
# systemctl status cron
Пример выходов:
â— cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled)
Active: active (running) since Tue 2015-05-19 11:49:32 IST; 12h ago
Docs: man:cron(8)
Main PID: 1053 (cron)
CGroup: /system.slice/cron.service
├─1053 /usr/sbin/cron -f
└─3020 /usr/bin/atop -a -w /var/log/atop/atop_20150520 600
Если не работает, настройте службу crond на автоматический запуск при загрузке:
$ sudo systemctl enable cron.service
$ sudo systemctl start cron.service
Я перепробовал много ответов (в том числе и на этой странице), но ни один код не работал для nginx.
Я не знаю точно, почему коды не запускали службу nginx, даже если некоторые из них определили, что она успешно отключена.
Единственное, что я нашел для работы, было это.
Добавление файла сценария bash с кодом:
(я добавил код в файл /opt/nginxstartifdown.sh
)
#!/bin/bash
service=$@
/bin/systemctl -q is-active "$service.service"status=$?
if [ "$status" == 0 ]; then
echo "OK"else
/bin/systemctl start "$service.service"fi
Добавление этого к работе cron (sudo crontab -e
)
* * * * * /opt/nginxstartifdown.sh nginx > /dev/null
ссылка от: (не мой сайт, не мой контент)
https://maslosoft.com/kb/watching-for-service-with-cron/
Делитесь им так, чтобы он мог помочь кому-то, ищущему nginx, когда он выключается.