如何通过 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 关闭时打开它的人。
我如何设置一个 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 关闭时打开它的人。