中秋节快到了,首先祝自己中秋快乐。
昨天下午六点,心里正想着加完一个crontab就可以下班了。本来想执行 crontab -e的,没想到手一抖就输入了crontab ,然后就进入了下面这个样子。
一看不对劲,就随手按了 Ctrl + D。
接下来,恐怖的事情发生了,crontab的所有任务都被清空了。
查找资料发现如下:
如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。
此时我的心情是这样的
不过,自己删的crontab,跪着也要找回来。
皇天不负苦心人,办法还是有的。crontab有运行日志,在日志里面可以找到执行过的历史命令。前提是要有root权限。
命令如下:
cat /var/log/cron* | grep -i "`which cron`" > ./all_temp cat ./all_temp | grep -v "<command>" > ./cmd_temp
用awk读取cmd_temp,即可得到命令。
[script-02 tmp]$ cat cmd_temp | grep username | awk -F \'CMD\' \'{print $2}\' | sort | uniq (bash /home/appadmin/script/security/auto_restart.sh)
命令是找回了,可是执行周期呢?还是靠cmd_temp。
[script-02 tmp]$ cat cmd_temp | grep /home/appadmin/script/security/auto_restart.sh | head Sep 11 03:44:01 script-02 CROND[18487]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:45:01 script-02 CROND[18522]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:46:01 script-02 CROND[18844]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:47:01 script-02 CROND[18870]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:48:01 script-02 CROND[18901]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:49:01 script-02 CROND[19036]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:50:01 script-02 CROND[19073]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:51:01 script-02 CROND[19147]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:52:01 script-02 CROND[19286]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh) Sep 11 03:53:01 script-02 CROND[19312]: (appadmin) CMD (bash /home/appadmin/script/security/auto_restart.sh)
可以很明显的看出,命令是一分钟一次。
全部恢复完成后已经是下班后一个小时了。不管怎么样,总算把自己坑填好了。