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

Ale*_*lex 91 linux unix cron

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

kub*_*zyk 177

首先,备份crontab:

crontab -l > my_cron_backup.txt
Run Code Online (Sandbox Code Playgroud)

然后你可以清空它:

crontab -r
Run Code Online (Sandbox Code Playgroud)

恢复:

crontab my_cron_backup.txt
crontab -l
Run Code Online (Sandbox Code Playgroud)

  • 这在 `/tmp` 损坏时特别有用(如果你的 crontab -e 在 `/tmp` 中使用了 `mktemp`。 (2认同)

小智 80

crontab -e然后注释掉你不想运行的每一行#

  • 用 100 个工作试试这个...... (10认同)
  • @merlin 在 vi​​/vim 中使用列编辑移动 (3认同)

小智 76

你有root权限吗?暂停cron

sudo /etc/init.d/crond stop
Run Code Online (Sandbox Code Playgroud)

然后在准备好后重新启动它

sudo /etc/init.d/crond start
Run Code Online (Sandbox Code Playgroud)

  • 那是假设您要为包括 root 在内的所有用户停止 crontab。选定的答案和 kubanskamac 的答案将仅针对当前(所需?)用户执行。 (9认同)
  • 如果您使用的是 Ubuntu,则可以使用 `sudo service cron stop` (7认同)
  • @Faheem 现在在 Debian 上也是`service cron stop`。 (3认同)
  • 在 Debian 上这是`/etc/init.d/cron stop`。 (2认同)

小智 11

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

  • 取消注释,命令是`:%s/^#//` (2认同)

小智 5

对上述选项不满意,因为它们不是一种衬垫。

禁用 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
Run Code Online (Sandbox Code Playgroud)

在 RHEL 和 AIX 上对此进行了测试,应该可以开箱即用,无需安装任何东西