【crontab】误删crontab及其恢复

时间:2024-03-11 19:09:33

中秋节快到了,首先祝自己中秋快乐。

昨天下午六点,心里正想着加完一个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)

可以很明显的看出,命令是一分钟一次。

全部恢复完成后已经是下班后一个小时了。不管怎么样,总算把自己坑填好了。