删除了cron选项卡文件,需要恢复它


11

我运行crontab -r而不是crontab -e并删除了我的crontab文件。我没有备份和新功能,无法恢复已删除的文件。

这可能吗?

谢谢,

彼得


7
编辑和删除选项在键盘上不应紧挨着。对于快速打字机来说,犯错误太容易了。
einstiien'2

那正是我发生的事情。

Answers:


9

尝试查看/ var / log / cron以查看正在运行的内容,然后尝试从中重新创建crontab。它杂乱无章,但您应该能够还原以前运行的所有内容。虽然运气不佳,但是较新的物品。祝好运!


好办法!
亚历克斯(Alex)

5

首先:始终进行备份!

但是,很容易混淆crontab -rcrontab -e。我自己做了。

那就是我所做的:

您可以尝试查看/ var / log / cron并再次构建您的crontab。

  1. 看一下日志文件
  2. 接受第一个命令并执行 grep commandname1 /var/log/cron
  3. 找出运行命令的时间背后的系统问题
  4. 将该条目放入新的crontab
  5. 执行cat /var/log/cron | grep -v commandname1。这将排除您已经涵盖的command1。
  6. 接受下一个命令并执行grep
  7. 找出第二条命令运行时间的系统背后原因
  8. 将该条目放入新的crontab
  9. 执行 cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. 重复直到您覆盖所有命令

现在,您还应该在较旧的Cronlog上执行grep,以查找可能每月仅运行一次的作业。


1
至少在Ubuntu上(不确定使用anacron / Vixie cron的其他平台),日志存储在中/var/log/syslog/*
蒂莫西·顾

1
在不小心删除某些内容之前,请始终创建备份!
戴维·霍瓦斯

4

完整的crontab恢复脚本

我制作了一个PHP脚本,可以根据日志完全恢复您的crontab。

它输出用户上周运行的每个cron命令的单个实例。

我把它放在这里

https://github.com/dangreenisrael/recover_crontab

这是一个示例输出:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1
为什么给出-1?这是问题的直接答案。
Dan Green-Leipciger 2013年

我一直在使用您的脚本。太好了,非常感谢!
MeV 2015年

PHP脚本不适用于包含右括号的命令。固定并移植到bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
分裂锁定

1

您有选择,但没有一个特别漂亮。万一您没有想到它,如果您在开发机上拥有最新版本,则可以从那里复制它……我之所以这么说,是因为我经常忘记其他机器上的副本,所以我认为您已经尝试过了。

如果您的文件过于个性化而无法简单地进行重建,则可以随时尝试一些低级取证。尝试搜索有关sleuthkit和UFS Explorer的教程。使用这些工具的人们在易用性和成功率方面发现了不同程度的差异,因此,通常使用YMMV。


1

Ugh无法对原始问题发表评论,但是一位同事向我展示了一个很棒的工具:在.profile您要用作crontabbe的任何地方都使用别名crontab -i。该-i标志要求确认后再删除。

因此,如果您这样做crontab -e,它将照常进行编辑,但是如果您不小心这样做crontab -r,则会收到确认提示。


这并没有解决眼前的问题……
vonbrand

0

我不这么认为。现在是时候开始备份这个重要文件了(和/ etc / var / spool / home中的所有其他文件一样)。

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.