crontab小记

       今天用crontab去自动执行一个任务(shell脚本),任务在命令行模式下执行非常正确,但是当crontab调度任务时,任务却无法正常执行。具体表现为:找不到变量;任务在同一时刻被执行多次。

      解决办法

1crontab自动执行脚本时,无法带入shell的环境变量,需要在脚本文件中引用 /etc/profile/$HOME/bash_profile脚本。

#!/bin/bash
. /etc/profile
. /$HOME/.bash_profile
echo "hello world" > tmpfile
rm tmpfile


2:crontab执行出错时,可以再 /var/spool/mail/root(当前用户名)下看邮件信息,同时也可以在 /var/log/cron中查看信息。

cat /var/spool/mail/root | tail -n 100
cat /var/log/cron | tail -n 100

当发现在同一时刻,crontab所调度的任务被执行多次或者有多个error信息时,可以判定在该时刻crontab任务被执行了多次,这时应查看系统进程信息,看是否有多个cron服务在运行,如下:

ps -aux | grep cron

如果有多个cron进程,kill掉所有的,重启crond,如下:

killall  cron
crond


3:crontab执行任务时,不会进入到任务所在的目录执行任务,而是在当前用户的$HOMRE目录下执行的。因此当任务中有涉及到目录处理时,应尽量使用绝对路径。如果使用了相对路径,在crontab命令设置时候应先用cd命令进入到目录,然后在执行任务,crontab -e 打开配置文件后,配置如下:

*/10 * * * * cd /home/work/testCron && ./testCron.sh


4:crontab配置文件格式为

分(0-59)  小时(0-23 )  天(1-31)  月(1-12)  星期(0-6:0为周末)   命令

该六部分之间用空格隔开;具体格式可查看 /etc/crontab

cat /etc/crontab


你可能感兴趣的:(命令行正确,crontab不能正确执行,任务多次执行,crontable)