我可以恢复意外删除的 crontab 条目吗?

Rac*_*hel 7 unix cron

我试图在生产环境中创建一个 cron,所以我crontab.txt用我的新 cron 命令创建了文件并运行了crontab crontab.txt文件,但它没有附加到现有的 cron 作业列表中,它意外地删除了所有 cron,现在我只有我的 cron 在 prod 上。

我如何检索之前设置的 cron 并将我的新 cron 附加到它。

谢谢。

小智 17

建议从备份中恢复您的 crontab 是否会雪上加霜?

  • 一点也不。*“从备份中恢复”* 是正确答案。+1 (7认同)

Ale*_*lex 9

首先:始终进行备份!

第二:

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

  1. 查看日志文件
  2. 执行第一个命令并执行 grep commandname1 /var/log/cron
  3. 找出命令运行时间背后的系统
  4. 将该条目放入您的新 crontab
  5. 执行 cat /var/log/cron | grep -v commandname1
  6. 执行下一个命令并为它grep
  7. 找出第二条命令运行时间背后的系统
  8. 将该条目放入您的新 crontab
  9. 执行 cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. 重复直到覆盖所有命令

现在,您还应该对旧的 cronlog 执行 grep 以找出可能一个月只运行一次的作业。


小智 6

我制作了一个 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

  • 嗨,我只是看了看,只找到了 PHP 脚本。没有找到输出中提到的 sh 脚本。也可以简单地: grep CRON /var/log/syslog|grep root|cut -d ":" -f 4-9|sort -u --- 现在一个很好的工具是分析运行命令的日期和时间,并根据日志的时间跨度使用适当的时间重新生成适当的 crontab (2认同)