本来想执行 crontab -e的,没想到手一抖就输入了crontab ,然后就进入了下面这个样子。


    一看不对劲,就随手按了 Ctrl + D。

    接下来,恐怖的事情发生了,crontab的所有任务都被清空了。

    查找资料发现如下:

    如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。 

    自己删的crontab,跪着也要找回来。

    crontab有运行日志,在日志里面可以找到执行过的历史命令。前提是要有root权限。

cat /var/log/cron* | grep CMD | awk -F'CMD' '{print $2}' | awk -F'[(|)]' '{print $2}' | sort -u

    由此得到系统记录过的 crontab 执行命令,过滤其他账号的命令后即可追回目标账号的 crontab 任务。

    grep CMD  可以改为 grep "(root) CMD"  root 为某账号的crontab 。

    命令是找回了,可是执行周期呢?

cat /var/log/cron*|grep "(root) CMD"|grep "/data/scripts/send_mail.sh"|sort|uniq