中秋節快到了,首先祝自己中秋快樂。
昨天下午六點,心里正想着加完一個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)
可以很明顯的看出,命令是一分鍾一次。
全部恢復完成后已經是下班后一個小時了。不管怎么樣,總算把自己坑填好了。