GreyZeng
2021-08-28 19:57
采纳率: 100%
浏览 68

CentOS下定时任务没有正确执行

定时任务脚本是:

cd /data/blogs/source/_posts/ && git pull origin master && npx hexo cl && npx hexo g

这个命令可以在命令行中可以正常执行。

但是配置到定时任务中:
通过

crontab -e 

添加一条记录。

15,36,55 * * * * cd /data/blogs/source/_posts/ && git pull origin master && npx hexo cl && npx hexo g  

查看定时任务的执行日志:tail -f /var/log/cron,只有如下信息

Aug 28 19:54:01 blogs crond[979]: (root) RELOAD (/var/spool/cron/root)
Aug 28 19:55:01 blogs CROND[6899]: (root) CMD (cd /data/blogs/source/_posts/ && git pull origin master && npx hexo cl && npx hexo g  )

有日志,但是这个命令没有执行。请问为什么没有执行,如何解决这个问题?

  • 好问题 提建议
  • 收藏

4条回答 默认 最新

  • zsk_john 2021-08-30 20:51
    已采纳

    检查一下脚本的绝对路径和脚本的名称,crontab -e 里的 15,36,40 * * * * /bin/bash /data/blogs/update.sh 和实际是否相符。
    例如:20点的 41,43,45 执行脚本

    img
    每15分钟执行一次脚本:
    */15 * * * * /bin/bash /data/blogs/update.sh ,然后看 /var/spool/mail/root这个文件的输出就可以看到脚本到底执行了哪些,输出有哪些。

    
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • zsk_john 2021-08-29 19:15

    这个问题我超级熟悉,首先看日志/var/log/message 看看具体是什么报错。
    其次,那一串命令最好写到一个脚本里,脚本内定义pwd变量什么的,先执行一次脚本,看能否正常执行。
    最后,脚本内增加测试输出语句,比如,touch一个文件。
    然后,定时任务执行这个脚本,如果顺利看到touch的文件,表示定时任务成功。
    晚点给你写这个脚本,手机打字,太麻烦,等我用电脑。

    评论
    解决 无用
    打赏 举报
  • zsk_john 2021-08-30 09:15

    编写脚本,脚本内容如下:
    #!/bin/bash
    #author zsk_john
    PWD=/data/blogs/source/_posts/
    cd $PWD
    git pull origin maste
    echo "第一步执行完成"
    npx hexo cl
    echo "第二步执行完成"
    npx hexo
    echo '"第三步执行完成"

    然后执行这个脚本,看这三个echo可以正常执行吗?我怀疑你判断脚本是否正常执行没有做。

    cat /var/log/messages 查看这个日志文件,可以看到crontab的执行情况。

    评论
    解决 无用
    打赏 举报
  • zsk_john 2021-08-30 13:01

    都没输出echo,当然是脚本不对啦,三个命令单独执行,肯定是执行不了的,并且一般不&后台运行的。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题