我怎样才能清除所有的 cron 作业?

我怎样才能清除所有的 cron 作业?

我无意中清除了所有 cron 作业。我不确定我做了什么。我不记得通过发出 删除了其中的条目crontab -e。有哪些可能的方法可以彻底清除 cron 作业?

答案1

如果您键入时crontab不带任何参数,它会从标准输入读取一个 crontab。如果您随后键入Control-D,它会创建一个空的 crontab,覆盖您之前的 crontab。(Control-C中止命令并保留您的 crontab。)

jpmath 的回答正确指出这crontab -r也会消灭你的 cron 作业(这就是它的用途)。

我通过(几乎)从不使用crontab -e(编辑 crontab)或crontab不带参数(从 stdin 读取)来避免这种情况。相反,我将 crontab 条目保存在一个单独的文件中,该文件保存在源代码控制系统中,并crontab以该文件名作为参数运行命令。(我偶尔会使用它crontab -e来制作暂时的变化。)

(我在写这个答案时暂时破坏了我自己的 crontab,因为我知道我可以恢复它。)

答案2

如果您错误地输入了crontab -r而不是(并且彼此相邻),您的 crontab 也将被删除。crontab -eer

答案3

以下是我确认丢失 crontab 文件的原因:

[me@myUbuntuPC ~]$ history | grep crontab
...
197  crontab
198  man crontab
198  crontab -e
...

这就是证据。我的老板曾经称之为“边做边学”!

我可以确认,在 Ubuntu 12.04 和 18.04(所以我假设介于两者之间的版本)下,如果您单独输入 crontab,然后按 ctrl-C,它也会擦除您的 crontab。

我很少使用 crontab,在设置新机器时,我的记忆力不太好,告诉我要在旧机器上输入 crontab 才能查看内容(忘记了 crontab -e),然后我说“哦,不对。中止!”并按下 Ctrl-C。再也没有 crontab 了!哎呀!

然后我查看了手册页、我的笔记和/或 Google……(我们过去常说的 LAD。)

不确定其他发行版是否也能这样使用 ctrl-C。

所以现在我在 crontab 文件中添加了注释,提醒我“crontab -l > crontab.backup”来保存,以及“crontab crontab.backup”来恢复。现在,当需要构建新的 Ubuntu 22.04LTS 时,我会查看 crontab.backup,希望能够阅读注释,并记住足够多的内容以正确执行操作!

我刚刚使用 LinHES 系统(基于 Arch 的 MythTV)进行了测试,crontab 4.5 给出了以下内容:

[me@myLinHESpc ~]$ crontab
crontab 4.5
crontab file [-u user]  replace crontab from file
crontab -  [-u user]    replace crontab from stdin
crontab -l [-u user]    list crontab
crontab -e [-u user]    edit crontab
crontab -d [-u user]    delete crontab
crontab -c dir <opts>   specify crontab directory

我更喜欢这个。

Arch(和 LinHES)是滚动升级发行版,因此这将反映截至 2018 年中期存储库中的最新版本。

因此,很有可能,您通过单独输入 crontab 而清除了您的 crontab,并且您没有 crontab 4.5!

我有多年运行 Linux 的经验,但是 Arch 告诉我,我对它知之甚少!

答案4

今天我无意中做了同样的事情,就crontab在之后运行,整个 crontab 都空了,我很高兴我有一个备份,所以我crontab - e把备份的内容放进去了,我希望这足够了吗?

有没有什么方法可以防止这种情况再次发生,也许在没有任何参数的情况下阻止 crontab?

提前致谢。

相关内容