linux误删crontab定时任务后的补救措施(随手记)

发布于:2024-05-23 ⋅ 阅读:(156) ⋅ 点赞:(0)

起因

想看一眼定时任务的时候,手误打成了-r,接着我的定时任务就全没了……

补救措施

我们都知道,crontab的几个关键目录中有一个是/var/log/cron,这个目录记录了crontab执行的日志。
如果平时没有备份crontab的习惯的话,只能靠读取这个文件来找命令了。

cat /var/log/cron  | grep -i "root" | grep "CMD" | awk -F 'CMD' '{print $2}' |sort|uniq -c |sort -n | grep "/bin/sh"

#针对上述语句可以翻阅我之前的笔记(linux专栏下)或自行gpt解释
#最后过滤/bin/sh的原因是,在我的crontab中,除了ntp均以shell脚本执行,因此我只需关注这个部分,可以看得更少

根据上述命令的输出,我个人推荐从END这个栏目中寻找代码

cat /var/log/cron  | grep -i "root" | grep "CMD" | awk -F 'CMD' '{print $2}' |sort|uniq -c |sort -n | grep "/bin/sh" | grep "END"
      4 END (/bin/sh /root/exercise/
     /backup.sh)
     11 END (/bin/sh /root/exercise/send_sys_to_mail.sh 2>&1)
     18 END (/bin/sh /root/exercise/backup-conf-ip.sh )
     81 END (/bin/sh /root/exercise/ipif.sh &>> /tmp/ipif.info)
    112 END (/bin/sh /root/exercise/sys_info_check.sh >> /tmp/sys_info_check.info 2>&1)

#END开头表明crontab正常执行了这个指令

最后,自己重新补充到crontab中即可

备份定时任务

这次给我敲了个警钟,我是真没想到清空这么关键的选项竟然没有二次确认。
为了避免,编写了一个定时备份crontab内容的脚本放入crontab中执行。

#编写脚本
vim backup_crontab.sh

#!/bin/bash
#author: tassel_yue

#1.set variable
dir=/tmp
IP=`hostname -I | awk '{print $1}'`
TIME=`date +%F_%w`
backup_dir=${dir}/$IP

#2. backup
mkdir -p ${backup_dir}
/usr/bin/crontab -l &> /tmp/$IP/backup_crontab~$TIME


#放入crontab
crontab -e
#5.backup crontabfile to tmp dir,once one day
0 0 * * * /bin/sh /root/exercise/backup_crontab.sh

网站公告

今日签到

点亮在社区的每一天
去签到