因之前不小心删除了服务器上的crontab(查询的时候因为e和r两个键位太近了。。。),虽然有运维通知后面帮忙恢复了文件;自己还是在网上查找了恢复的方法,记录一下。
命令1:
cat /var/log/cron* | grep CMD | awk -F’CMD’ ‘{print $2}’ | awk -F’[(|)]’ ‘{print $2}’ | sort -u
通过该条命令会从cron日志文件下获取执行过的crontab内容,执行前切换好执行crontab的账户(一般都是root了)。可以将已执行过的内容进行去重,得到当时运行的命令。
例:
/usr/local/webserver/php/bin/php xxxx.php
/usr/local/webserver/php/bin/php xxxx.php
/usr/local/webserver/php/bin/php xxxx.php
/usr/local/webserver/php/bin/php xxxx.php
现在我们得到了已经执行过的crontab,但是这里并没有当初配置的循环时间 (秒 分 时 日 月 周)
接下来要用到第二条命令了。
命令2
cat /var/log/cron* | grep “(root) CMD”|grep " xxxxx "|sort|uniq
xxxxx处添加我们之前查到过的内容,通过这条命令我们会得到所有执行过这条命令的时间;接下来就是人工处理阶段,通过执行过的时间重新编写命令循环的时间(正好检验一下crontab的配置能力,当然过程很烦躁,谁让当时手贱呢。。。)。
通过这两步虽然会消耗一定时间,不过总算能恢复了。虽然有保证,但是还是写个脚本备份更新吧。