如何禁用crontab -l中的所有内容?


68

我只想暂停一切。不要执行上列出的任何内容crontab -l

Answers:



133

首先,备份crontab:

crontab -l > my_cron_backup.txt

然后可以将其清空:

crontab -r

恢复:

crontab my_cron_backup.txt
crontab -l

2
时,这是特别有帮助/tmp被破坏(如果你的crontab -e使用mktemp/tmp
凯文·李

1
+1最后,这对我有用。谢谢
Pavan 2015年

@alex这应该是公认的答案
Luis Ferrao

crontab -r是我一直在寻找的东西。谢谢 !
forzagreen

64

您是否具有root用户访问权限?只是暂停cron

sudo /etc/init.d/crond stop

准备好后重新启动

sudo /etc/init.d/crond start

5
假设您要停止所有用户(包括root用户)的crontab。选定的答案以及kubanskamac的答案将仅对当前(所需?)用户起作用。
凯文·K

我们的crond服务已停止。这为我们指明了正确的方向,以检查crond是否正在运行,然后重新启动。
保罗

4
如果您使用的是Ubuntu,则可以使用sudo service cron stop
Joel

1
在Debian上是/etc/init.d/cron stop
法赫姆·米莎

2
@Faheem在Debian上也很流行service cron stop
史蒂芬·基特

10

如果使用vi作为编辑器,则只需:%s/^/#/在命令模式下输入即可。在所有行(%)中,它将(s ///)行(^)的开头替换为哈希(#)。


如果不使用vi作为默认编辑器,则可以像那样“强制”使用vi EDITOR=vi; crontab -e,然后可以使用上述技巧。
Betlista 2013年

2
不加注释的命令是:%s/^#//
NP01 2013年

3

对上述选项不满意,因为它们不是一线客。

禁用 crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

启用 crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

用法示例(经过编辑以显示它不会禁用评论)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

在RHEL和AIX上对此进行了测试,应该可以直接使用,而无需安装任何东西


1
也可以在cronjob crontab -l中查找特定详细信息。perl -nle's / ^#\ s *([0-1 *])/ $ 1 /;如果/.+mytexttofind.+/',则打印
Jason

您能否解释为什么评论不受影响?您用来检测它们的模式是什么?
Sopalajo de Arrierez

嗯,在Debian Jessie的帮助下,我收到以下错误:crontab: usage error: file name must be specified for replace。似乎在crontab不带任何参数replace的情况下必须指定文件(?)(默认情况下)。
fritzmg

2

在我有限的测试中,将shell设置为/ bin / false是可行的。您仍然会/opt/job.sh在日志中看到执行,但这只是一个小问题:

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh

1

我所知道的任何类型的Unix / Linux:

mv /var/spool/cron  /var/spool/cron_is_disabled

这个:

  • 禁用所有用户的crontab
  • 但不是系统/ etc / crontab(/etc/cron.daily等)
  • 重启后仍然存在
  • 是单线的,du :)

1

我从@segaps提供的答案中得到了这个主意

禁用:

crontab -l | awk '{print "# "$1}' | crontab

启用:

crontab -l | cut -c 3- | crontab

segaps提供的解决方案的唯一问题是,它将取消对用户已经评论过的作业的注释。


0

为此,使用nano作为编辑器:

sudo env EDITOR=nano crontab -e

然后注释掉您不想使用#运行的每一行

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.