如何暂时禁用一个或多个用户的 cron 作业?特别是,我不想暂停用户的 cron 权限——只是不想解雇他们的任何工作。
我在 SLES 11 SP2 和 SP3 系统上
Gil*_*il' 11
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
应该做的伎俩。使用chmod 600
和恢复touch
(您需要更改文件的 mtime 以使 cron(尝试)重新加载它)。
至少在 Debian 上,并且可能在一般情况下使用 Vixie cron,chmod 400 /var/spool/cron/crontabs/$username
也可以做到这一点,因为该实现坚持要求权限恰好为 600。然而,这仅持续到用户运行crontab
命令为止。
如果您想要一种稳健的方式,我认为没有什么比暂时将其 crontab 移开或更改权限并暂时将它们添加到/etc/cron.deny
.
小智 9
像这样禁用用户 crontab 怎么样:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
Run Code Online (Sandbox Code Playgroud)
并重新启用:
crontab -u [username] /tmp/[username].cron.tmp
Run Code Online (Sandbox Code Playgroud)
这有一个额外的好处,你可以在不需要 root 的情况下以该用户身份运行它(只需去掉 -u 参数)。
小智 9
如果您只想cron
完全停止所有作业一段时间——例如,在进行系统维护时,它们可能会与之产生不良交互——命令通常如下:
sudo systemctl stop crond.service
Run Code Online (Sandbox Code Playgroud)
并且,恢复
sudo systemctl start crond.service
Run Code Online (Sandbox Code Playgroud)
但请注意,某些系统使用cron.service
而不是crond.service
; 您可以通过以下方式了解它:
sudo systemctl stop crond.service
Run Code Online (Sandbox Code Playgroud)
对于提出的具体问题来说有点过分了,但提供了“一站式购物”,并且不需要使用文件系统或临时文件。也适用于具有单个用户帐户的小型嵌入式系统(Raspberry Pi、Beagle Bone 等)。