看了下网上的方法都是说去备份/var/spool/cron/ 这个目录数据,如果我们没有备份这个目录,那么就悲剧了么?
其实我们有更好的方法,/var/log/messages文件是系统自动轮询记录的日志,同时也是cron进程在读取crontab数据定时执行打印日志的文件。那么我们可以通过分析messages的文件来间接恢复crontab数据。
具体方法就是grep需要找回的用户的crontab的帐号名,同时带上CMD关键字,这样日志的记录执行时间就是你所设定的定时任务时间了。日志中会详细打印执行的命令信息。
Nov 10 12:27:11 rh-1 CROND[4427]: (root) CMD ((echo 'hi'))
注意在suse中cron的日志是写入messages的,redhat/centos是单独写入cron这个文件。如何修改日志输出的文件呢?很简单:
vim /etc/rsyslog.conf 修改此文件找到如下行修改右边的输出文件名即可。
# Log cron stuff
cron.* /var/log/cron
cron的文件在centos下类似于这样:
[root@rh-1 log]# ll cron*
-rw------- 1 root root 16488 Nov 10 12:29 cron
-rw------- 1 root root 5494 Oct 14 11:24 cron-20121014
-rw------- 1 root root 6537 Oct 21 11:24 cron-20121021
-rw------- 1 root root 20148 Oct 28 15:34 cron-20121028
-rw------- 1 root root 9051 Nov 4 10:06 cron-20121104
那么有人会问,如何找出不是每天都执行的呢?好吧,我的建议就是找出一周或者一个月的messages来分析,我想没有人会设定一条crontab一年才跑一次把