cari

Rumah  >  Soal Jawab  >  teks badan

linux - crontab定时任务不执行

系统是centos,发现crontab定时任务不执行
登录系统用手工执行脚本就可以
其它如crontab配置文件没有对用户做限制,
脚本权限也赋予执行,用root账户执行,但是最后还是不行,
请各位大神指点一下,下面是Log和脚本内容

Feb  7 14:10:01 1280859075761a8Z crond[12517]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 14:20:01 1280859075761a8Z crond[12813]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 14:30:01 1280859075761a8Z crond[13115]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 14:40:01 1280859075761a8Z crond[13471]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 14:41:02 1280859075761a8Z crontab[13510]: (root) BEGIN EDIT (root)
Feb  7 14:41:47 1280859075761a8Z crontab[13510]: (root) END EDIT (root)
Feb  7 14:41:51 1280859075761a8Z crontab[13534]: (root) BEGIN EDIT (root)
Feb  7 14:42:24 1280859075761a8Z crontab[13534]: (root) REPLACE (root)
Feb  7 14:42:24 1280859075761a8Z crontab[13534]: (root) END EDIT (root)
Feb  7 14:42:40 1280859075761a8Z crontab[13564]: (root) LIST (root)
Feb  7 14:43:01 1280859075761a8Z crond[18021]: (root) RELOAD (cron/root)
Feb  7 14:45:01 1280859075761a8Z crond[13638]: (root) CMD (/backuptoqiniu/backuptoqiniu.sh )
Feb  7 14:50:01 AY1311280859075761a8Z crond[13791]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 15:00:01 AY1311280859075761a8Z crond[14091]: (root) CMD (/usr/lib/sa/sa1 1 1)
Feb  7 15:01:01 AY1311280859075761a8Z crond[14120]: (root) CMD (run-parts /etc/cron.hourly)

shell code

#!/bin/bash
BACKUP_SRC="/home/wwwroot/tes" 
MYSQL_SERVER="127.0.0.1"
MYSQL_USER="test" 
MYSQL_PASS="tset" 
DATEBASE="tee" 
HOST="544" 
NOW=$(date +"%Y-%m-%d-%H")
echo "start dump mysql"
ases.sql" -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS $DATEBASE > "$NOW-Databecho "dump ok"
echo "start tar"
tar -cPzf $HOST-$NOW-backup.tar.gz $NOW-Databases.sql "$BACKUP_SRC"
echo "tar ok"
python /root/backuptoqiniu/upload.py
rm -f $NOW-Databases.sql $HOST-$NOW-backup.tar.gz
echo "ALL ok"

crontab command

45 14 * * * /backuptoqiniu/backuptoqiniu.sh
怪我咯怪我咯2787 hari yang lalu775

membalas semua(5)saya akan balas

  • 怪我咯

    怪我咯2017-04-17 11:38:11

    问题解决思路:
    1. 判断crontab是否有执行过,你可以添加一个每分钟执行的写文件的小脚本进行测试,如果有记录说明crontab本身服务没有问题.

    如: Feb 7 14:45:01 1280859075761a8Z crond[13638]: (root) CMD (/backuptoqiniu/backuptoqiniu.sh )这里面应该是表示crontab已经成功执行了的,所以crontab服务没有问题.
    2. 其实有经验多半就会知道crontab的执行是没有相关环境变量的,解决办法就是在脚本中打日志,另外默认将所有的命令采用全路径的方式.

    调试方法:添加日志文件,将原来所有的echo 全部可以尝试追加到日志文件,或者在crontab写的时候追加日志.
    45 14 * * * /backuptoqiniu/backuptoqiniu.sh >> /tmp/out.log 2>&1

    ases.sql" -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS $DATEBASE > "$NOW-Datab
    我就没有看懂你这个是什么,是不是自己的命令不在默认的系统命令里面.

    测试方法: 测试crontab的PATH与手动执行的PATH不一样.

    可以在crontab的脚本里面添加个echo $PATH > /tmp/1.log
    对比和你手动的终端下执行的echo $PATH
    

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 11:38:11

    楼上已经给出了详细的排查过程,一般计划任务的问题大部分是出在环境变量上面,
    要么就写绝对路径,要么就在脚本的开头加载/etc/profile

    balas
    0
  • 迷茫

    迷茫2017-04-17 11:38:11

    在crontab裡的上面加上
    MAILTO=""

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:38:11

    [root@mimvp-bj script]# service crond status
    crond is stopped
    [root@mimvp-bj script]# service crond start
    Starting crond: [ OK ]
    [root@mimvp-bj script]# service crond status
    crond (pid 24577) is running…

    看看你的crontab打开了没

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 11:38:11

    补充一种情况

    若修改了系统时间 由 UTC --> CST

    需要重启crontab服务

    sudo service cron restart

    否则crontab还是使用的是UTC时间 于是若指定了具体的小时的话 就不会执行了

    balas
    0
  • Batalbalas