如何暂时禁用用户的cronjob?


14

如何暂时禁用一个或多个用户的Cron作业?特别是,我不想暂停用户的cron权限-只是不解雇他们的任何工作。

我在SLES 11 SP2和SP3系统上


您不能只使用命令的-u user开关crontab#在作业前面添加注释字符来禁用给定用户吗?
Janis'3

@Janis然后,我需要跟踪用户(有很多)已经被注释掉的内容,加上用户可以继续添加其他内容(我没有将它们添加到/etc/cron.deny中)。太多的手工工作:(
Dinesh 2015年

Dinesh,我(-)误解了您想要对禁用项进行细粒度的控制。
Janis'3

Answers:


10

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


谢谢。在我的系统上,它是/ var / spool / cron / tabs / $ username。但即使在之后,它仍然会执行chmod
Dinesh'3

更改文件权限后,我还需要停止/重新启动cron。我认为可能是因为cron可能会将这些内容保存在内存中。所以我加touch $usernamechmod。但这没有帮助。(顺便说一句cron.deny
Dinesh 2015年

@Dinesh实际上,您需要更新文件的mtime,否则cron认为它没有更改,并保留了缓存的信息。我昨天在测试时注意到了这一点,但忘了在回答中提及它,对此感到抱歉。
吉尔斯(Gillles)“所以-别再邪恶了”

如果您只想对所有标准用户禁用:chgrp root /var/spool/cron/crontabs
–hrdwagon 2015年

9

禁用用户crontab的方法如下:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

并重新启用:

crontab -u [username] /tmp/[username].cron.tmp

这样做还有一个好处,就是您可以以该用户身份运行而不需要root用户(只需删除-u参数即可)。



0

如果您只想cron完全停止所有作业一会儿-例如,在进行系统维护时,它们可能会交互不良-这些命令通常是

systemctl stop crond.service

并且,恢复

systemctl start crond.service

我认为您需要root或wheel权限才能执行这些操作;如有必要,请通过sudo或(最后手段)以root身份登录运行它们。

对于所提出的特定问题,矫kill过正,但是提供了“一站式购物”功能,不需要播放文件系统或临时文件。


3
由于这将对所有用户禁用cron,因此它并不能真正回答问题。
斯科特,

-1

我同意,通过systemctl的路径是采用的路径。在树莓上,脚趾将是

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
这将停止整个cron服务。OP希望能够选择要禁用的用户crontab。
roaima

1
它也与另一个答案
roaima
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.