Crontab 不起作用原因之排查 

前段时间,由于对数据的重视程度的增加,我曾启用了crontab 以在每晚0点时对数据库进行整体备份。

今天,我无意中打开了存放数据库备份文件的目录,可是里面却什么也没有~这是怎么回事??

难道crontab 没有起作用?

难道是我的命令格式写错了?首先,我去查看了下crontab的格式,前面是时、分、月、日、周,后面是具体shell命令。我的如下:
[root@PowerPC ~]# crontab -l
0 0 * * * mysqldump -A -C -u dumper | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +%s`.sql.bz2

0 0 * * * chmod go-rwx /home/ftp/xzx/sql/*
应该说不存在问题。

难道是我的crontab 服务没有启动??不会吧~
[root@PowerPC ~]# ps -e | grep cron
20364 ? 00:00:00 crond

很显然,已经启动了~

那是尼玛神马问题呢?我以"crontab not work" 为关键字在谷歌上搜索了一下,得到了一些提示。

首先,看看位于/etc下的cron.deny文件里面,是不是有我的用户名 root.
我看了下,木有~ 该文件为空。

接着,我索性把/etc下所有crontab相关的配置文件都找了出来,

[root@PowerPC ~]# find /etc -name "cron*"
/etc/cron.d
/etc/cron.monthly
/etc/rc.d/init.d/crond
/etc/cron.daily
/etc/sysconfig/crond
/etc/pam.d/crond
/etc/cron.hourly
/etc/cron.deny
/etc/crontab
/etc/cron.weekly

看到cron.hourly/daily/weekly/monthly/ 我内牛满面~

当我打开 /etc/crontab 的时候,有一行配置惊醒了我,那就是 PATH 这行,原来crontab 默认不使用 /usr/local/bin 、/usr/local/sbin 这些作为PATH,

果断查看mysqldump 所在 :
[root@PowerPC ~]# which mysqldump
/usr/local/bin/mysqldump

囧rz.

原来这么多天,crontab一直在报 "command not found"....

修改后的crontab:

[root@PowerPC ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
MAILTO=root
HOME=/

# run-parts
#23 * * * * root run-parts /etc/cron.hourly
#50 0 * * * root run-parts /etc/cron.daily
#31 5 * * 0 root run-parts /etc/cron.weekly
#11 0 27 * * root run-parts /etc/cron.monthly


当然,还有种解决方案,就是写绝对路径~
[ ] ( 2042 次浏览 ) 永久链接 ( 2.9 / 2670 )

<< <上一页 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 下一页> >>