万恶的"crontab -r"
目录
1 起因
最近检查了一下数据库dump的定时任务,发现有一段时间没有新的dump文件了,准备改一改crontab,然后发生了下面的事故。按crontab -e
成了crontab -r
,键盘上E和R是邻居,一不小心就没了。
2 拯救
接下来说说怎么恢复吧
通过命令可以找出以前执行过的命令
cat /var/log/cron* | grep CMD | awk -F'CMD' '{print $2}' | awk -F'[(|)]' '{print $2}' | sort -u
3 防止再发
给crontab
别名
在/usr/bin
下面新建cron.sh
,内容如下
#!/bin/bash
source ~/.bashrc
if [ "$1" = "-r" ] ; then
echo "My God! Dangerous..."
echo "Exit..."
exit 2
fi
if [ "$1" = "-l" ] ; then
/usr/bin/crontab -l
exit 0
fi
if [ "$1" = "-e" ] ; then
mkdir -p ~/cronbak
/usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.a
/usr/bin/crontab -e
/usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.b
fi
chmod +x cron.sh
在/etc/bashrc
或者~/.bashrc
文件最后添加
alias crontab='/usr/bin/cron.sh'
cron.sh
作用
1、禁止crontab -r
2、每次编辑都备份 cron 列表到~/cronbak
目录下面