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

时间:2018-03-01 15:09:44

标签: php python bash cron daemon

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

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

如果有人能够使用不同的工具找出更简单的方法,我会接受其他选择,例如。 bash脚本,python脚本,PHP等,

2 个答案:

答案 0 :(得分:0)

关于你的问题

  

如何检查守护程序服务是否正在运行

在RHEL / CentOS v4.x / 5.x / 6.x和Fedora Linux(旧版本)中验证Cron服务 您只需使用以下任一命令查看crond是否正在运行,请输入:

$ pgrep crond

OR

$ 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记录其操作记录到syslog工具,即使用/ 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

答案 1 :(得分:0)

我尝试了很多答案(也包括此页面上的内容),但是没有任何代码可用于nginx。

我不知道为什么即使其中一些代码确定Nginx服务已成功关闭,代码也不启动Nginx服务。

我发现唯一正在工作的就是这个。

添加具有以下代码的bash脚本文件:

(我已将代码添加到文件List<ModifiedPartList> PartList = new List<ModifiedPartList>(); List<ModifiedPartList> MpartList= new List<ModifiedPartList>();; anotherMethode() { MpartList = CombinePartListforView(bar, ViewNum); * * * PartList.Clear(); } 中)

/opt/nginxstartifdown.sh

将其添加到cron作业#!/bin/bash service=$@ /bin/systemctl -q is-active "$service.service" status=$? if [ "$status" == 0 ]; then echo "OK" else /bin/systemctl start "$service.service" fi

sudo crontab -e

引用来自:(不是我的网站,不是我的内容) https://maslosoft.com/kb/watching-for-service-with-cron/

共享它,以便它可以帮助想要关闭它的人随时打开nginx。