Linux crontab 不执行的原因和如何检查错误大全

Linux crontab 不执行的原因和如何检查错误大全

Here's a checklist guide to debug not running cronjobs:

  1. Is the Cron daemon running?

    • Run ps ax | grep cron and look for cron.

    • Debian: service cron start or service cron restart

  2. Is cron working?

    • * * * * * /bin/echo "cron works" >> /file

    • Syntax correct? See below.

  3. Is the command working standalone?

    • Check if the script has an error, by doing a dry run on the CLI

    • when testing your command, test as the user whose crontab you are editing, which might not be your login or root

  4. Can cron run your job?

    • Check /var/log/cron.log or /var/log/messages for errors.

    • Ubuntu: grep CRON /var/log/syslog

    • Redhat: /var/log/cron

  5. Check permissions

    • set executable flag on the command: chmod +x /var/www/app/cron/do-stuff.php

  6. Check paths

    • check she-bangs / hashbangs line

    • do not rely on environment variables like PATH, as their value will likely not be the same under cron as under an interactive session

  7. Don't Suppress Output, while debugging

    • commonly used is this suppression: 30 1 * * * command > /dev/null 2>&1

    • re-enable the standard output or standard error message output

Still not working? Yikes!

  1. Raise the cron debug level

    • in /etc/rsyslog.d/50-default.conf

    • add or comment out line cron.crit /var/log/cron.log

    • reload logger sudo /etc/init.d/rsyslog reload

    • re-run cron

    • open /var/log/cron.log and look for detailed error output

    • in /etc/default/cron

    • set EXTRA_OPTS="-L 2"

    • service cron restart

    • tail -f /var/log/syslog to see the scripts executed

    • Debian

    • Ubuntu

    • Reminder: deactivate log level, when you are done with debugging

  2. Run cron and check log files again

Cronjob Syntax

# Minute  Hour  Day of Month      Month         Day of Week    User Command    
# (0-59) (0-23)   (1-31)    (1-12 or Jan-Dec) (0-6 or Sun-Sat)  

    0       2       *             *                *          root /usr/bin/find

Crontab Commands

  1. crontab -l

    • Lists all the user's cron tasks.

  2. crontab -e, for a specific user: crontab -e -u agentsmith

    • Starts edit session of your crontab file.

    • When you exit the editor, the modified crontab is installed automatically.

  3. crontab -r

    • Removes your crontab entry from the cron spooler, but not from crontab file.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值