在 CentOS 7 上使用 cron 作业运行服务

Posted

技术标签:

【中文标题】在 CentOS 7 上使用 cron 作业运行服务【英文标题】:Run service using cron job on CentOS 7 【发布时间】:2016-12-18 09:50:32 【问题描述】:

我想在 CentOS 7 上使用 cron 作业运行 apollo-broker-service 服务。 为此,我创建了一个文件 /home/guest/start_apollo,如下所述

#!/bin/bash

if pidof -x "apollo" >/dev/null; then
echo "Apollo MQTT is Running."
else
echo "Apollo MQTT is Stopped."
service apollo-broker-service start
fi

我使用 ssh root 登录并运行以下命令

cd /home/guest/
chown root start_apollo
chgrp -R root start_apollo
chmod +x start_apollo

我想每 1 分钟运行一次 /home/nagios/start_apollo 为此,我在 /etc/crontab

中添加了以下行
01 * * * * root /home/nagios/start_apollo > /var/log/start_apollo_service.log

我创建了一个具有以下权限的 /var/log/start_apollo_service.log

-rwxr-xr-x   1 root   root         0 Aug 11 20:08 start_apollo_service.log

然后使用以下命令重新启动 crond 服务

systemctl restart crond.service

毕竟我的 cron 作业无法正常工作,并且 /var/log/start_apollo_service.log 上没有创建日志

【问题讨论】:

【参考方案1】:

我相信你的 cronjob 不是设置为每 1 分钟运行一次,而是每小时 1 分钟运行一次。

先试试这个,如果你真的想在第 01 分钟每小时换一次:

* * * * * root /home/nagios/start_apollo > /var/log/start_apollo_service.log

【讨论】:

当我尝试“*/1 * * * * root /home/nagios/start_apollo > /var/log/start_apollo_service.log”时,我的 cron 作业每 1 分钟成功运行一次 apollo 服务。当我尝试使用 cron 作业运行它时,我有另一个服务“nohup node /root/code/demo-project/index.js > /root/index.js &”,但它没有运行。你能帮帮我吗? 我认为 nohup 和 & 不合适。这些只是“守护”脚本所必需的,cron 已经为你做了这些。这可能是另一个问题。顺便说一句......你可以投票给我的答案;)【参考方案2】:

我使用以下方法解决了我的问题

*/1 * * * * root /home/nagios/start_apollo > /var/log/start_apollo_service.log

【讨论】:

以上是关于在 CentOS 7 上使用 cron 作业运行服务的主要内容,如果未能解决你的问题,请参考以下文章

Centos 5 上的慢 cron 作业

Docker 并行运行 cron 作业

在 Google Cloud DataProc 上安排 cron 作业

如何防止 cron 作业执行(如果它已经在运行)

AIX 7.1 中的 Cron 作业在错误的时间运行

使用php7版本在cpanel上运行cron作业