快速业务通道

当用了万恶的crontab -r命令后……

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

明天计划上个新的应用,需要写脚本获取服务器状态并写入数据库,下午写完脚本,准备先放cron里测试一下.登进服务器,想敲crontab -e加一条计划,结果手一滑就敲成了crontab -r,然后就悲剧了,发现没有备份!

没办法,想办法恢复吧.想了想,这种情况,只能去找cron的日志来恢复了.花了点时间,最终还是恢复了.先把crontab文件全部备份一下,然后在这里记录一下恢复过程,或许谁跟我一样悲剧就能用到了.不过我是不想再次悲剧了.

这台机器上crontab的计划有3种,每天运行1次的,每天运行多次的,特定时间运行的.(注:出问题的日期2011-9-1日,用户为wwiiol)

1、恢复每天执行1次的计划

执行下面的命令,就可以获取每天运行1次的计划,然后写入crontab就可以恢复每天运行1次计划了:

grep ''Aug 31.*wwiiol.*CMD'' /var/log/cron* | sed ''s/.*\([0-2][0-9]:[0-5][0-9]:[0-5][0-9]\).*CMD (\(.*\))/\1 \2/g'' | sort -k 3 | uniq -f 1 -u | sed ''s/^\([0-2][0-9]\):\([0-5][0-9]\):\([0-5][0-9]\)/\2:\1 * * */g;s/^0//g;s/\(\):0/\1:/g;s/\([0-9]*\):\([0-9]* \*\)/\1 \2/g''

2、恢复每天执行多次的计划

执行下面命令找出这些计划,然后在分析具体的执行计划:

grep ''Aug 31.*wwiiol.*CMD'' /var/log/cron* | sed ''s/.*CMD (\(.*\))/\1/g'' | sort -n | uniq -c

找到的一条计划的命令:

288 /home/program/playnet_rsync.sh all

这个计划每天运行288次,很容易算出是每5分钟运行1次,再看日志确实是这样的,于是将

*/5 * * * * /home/program/playnet_rsync.sh all

写入crontab文件来恢复计划;

还有一条:

6 /bin/sh /home/wwiiol/test/stat.sh

这个计划每天执行了6次,可能是每4小时执行1次,去看日志,发现:

/var/log/cron:Aug 31 02:00:01 gdb12 CROND[8406]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:10:01 gdb12 CROND[8464]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:20:01 gdb12 CROND[8504]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:30:01 gdb12 CROND[8545]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:40:01 gdb12 CROND[8583]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)
/var/log/cron:Aug 31 02:50:01 gdb12 CROND[8621]: (wwiiol) CMD (/bin/sh /home/wwiiol/test/stat.sh)

原来是2点到3点之间每10分钟执行一次,将

*/10 2 * * * /bin/sh /home/wwiiol/test/stat.sh

写入crontab文件来恢复计划.

3、恢复特定时间运行的计划

这一项是可能存在无法恢复的情况的,日志记录的时间是有限的,很可能半年运行一次,甚至一个月运行一次的计划都无法通过日志找出.幸运的话,仔细分析日志就可以找出.

查看日志,发现共有有一个多月的日志,执行命令:

grep ''wwiiol.*CMD'' /var/log/cron* | sed ''s/.*CMD (\(.*\))/\1/g'' | sort -n | uniq -c

可得结果:

32 /bin/sh /home/wwiiol/backup.sh
32 /bin/sh /home/wwiiol/load_data.sh
5 /bin/sh /home/wwiiol/lt_colonel_update.sh
32 /bin/sh /home/wwiiol/program/load_data.sh
33 /bin/sh /home/wwiiol/program/reg_extend.sh
192 /bin/sh /home/wwiiol/test/stat.sh
32 /bin/sh /home/wwiiol/test/total.sh
33 /bin/sh /home/wwiiol/update_same_ip_account.sh
9406 /home/program/playnet_rsync.sh all

对比已

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号