我无意中清除了所有 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 -e
e
r
答案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?
提前致谢。