如何通过 Cron 作业或脚本检查守护进程服务是否 运行?

How to check if a daemon service is running via Cron job or script?

我如何设置一个 cron 作业来监控 运行 同一个守护程序脚本(服务)的多个 PI(通过 SSH)?

我正在考虑使用 cron 作业来监视服务状态并在服务状态为活动或非活动时写入服务器上的文件,然后我可以稍后使用该文件的内容来显示将 Cron 作业的结果放到网页上(但这是我稍后要弄清楚的)。

如果有人可以使用不同的工具找到更简单的方法,我愿意接受其他选择,例如bash 脚本,python 脚本,PHP 等,

关于你的问题

How to check if a daemon service is running

in 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

关于 Debian 的说明 / Ubuntu Linux(旧版本)Cron 服务 在 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

我尝试了很多答案(也包括在这个页面上)但是 none 的代码适用于 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 关闭时打开它的人。