如何使用 cron 停止 systemd 服务?

Jim*_*ron 2 linux debian cron systemd

我有一个简单的 crontab 条目,它应该停止服务,但它不起作用。

* * * * * systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)

我什至试过:

* * * * * /bin/systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)

因为那不是命令显示的 systemctl 的位置。

该行适用于 root 用户,但不适用于 root 的 crontab。

不工作,我的意思是服务没有关闭。我可以确认服务器仍在运行并且 systemctl status nginx 显示它处于活动状态。

我究竟做错了什么?

Ale*_*lex 5

可能是因为你没有告诉 cron 使用 root。

* * * * * root /bin/systemctl stop nginx
Run Code Online (Sandbox Code Playgroud)

这将每分钟执行一次命令,无论 nginx 状态如何(启动与否)

话虽如此,如果目标是确保 nginx 永远不会启动,为什么不禁用它呢?

systemctl disable nginx
Run Code Online (Sandbox Code Playgroud)

==编辑==

Aaron Copley 在评论中提出的好观点,为了确保即使在启动后 nginx 也不会启动,命令应该是;

systemctl mask nginx
Run Code Online (Sandbox Code Playgroud)