crontab小记

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

      解决办法bash

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

#!/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服务在运行,以下:code

ps -aux | grep cron

若是有多个cron进程,kill掉全部的,重启crond,以下:进程

killall  cron
crond


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

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


4:crontab配置文件格式为class

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

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

cat /etc/crontab
相关文章
相关标签/搜索