在cronjob中启动/停止systemd服务

6
  1. 我有一个服务名为"bots",文件路径为"/etc/systemd/system/bots.service"
  2. 我有一个名为"runcron.sh"的shell脚本,内容如下
service bots stop

service bots start
  1. 如果我运行./runcron.sh,服务将会成功停止并重新启动,但如果我将它放在类似下面的crontab中,它将无法成功运行:

*/5 * * * * /home/vps171-107/runcron.sh

如何让runcron.sh在crontab中成功停止并重新启动机器人服务?

更新:

经过@armnotstrong的帮助,我已将脚本更改为:

/usr/sbin/service bots stop
/usr/sbin/service bots start

它有效!

1个回答

4

可能是环境问题,crontab 可能会使用 sh 而不是 bash 执行命令,请尝试:

*/5 * * * * bash /home/vps171-107/runcron.sh

尝试将错误日志重定向到/tmp/cron.log并查看发生了什么:bash /home/vps171-107/runcron.sh>> /tmp/cron.log 2>&1 - armnotstrong
它说/home/vps171-107/runcron.sh:第2行:service:命令未找到。 - user38931
如果我改成 /usr/sbin/service bots stop,它就可以工作了。非常感谢。 - user38931
很高兴能帮忙 :D - armnotstrong
请问您能否更新您的答案,将以下内容更改为:/usr/sbin/service bots stop /usr/sbin/service bots start这样我就可以将您的答案标记为已接受的答案了吗? - user38931
3
你自己发现了这个坑,因此你应该亲自回答这个问题,并将这个作为答案 :D - armnotstrong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接