栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

CronJob没有运行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CronJob没有运行

WTF ?! 我的cronjob无法运行?

这是调试未运行cronjobs的清单指南:

  1. Cron守护程序正在运行吗?
    • 运行
      ps ax | grep cron
      并查找cron。
    • Debian:
      service cron start
      service cron restart
  2. cron在工作吗?
    • * * * * * /bin/echo "cron works" >> /tmp/file
    • 语法正确吗?见下文。
    • 您显然需要对将输出重定向到的文件具有写权限。
      /tmp
      当前不存在的唯一文件名应始终可写。
  3. 该命令是独立运行的吗?
    • 通过在CLI上进行空运行来检查脚本是否有错误
    • 测试命令时,请以您正在编辑crontab的用户身份进行测试,该用户可能不是您的登录名或root
  4. cron可以胜任您的工作吗?
    • 检查
      /var/log/cron.log
      /var/log/messages
      是否有错误。
    • Ubuntu:
      grep CRON /var/log/syslog
    • 红帽:
      /var/log/cron
  5. 检查权限
    • 在命令上设置可执行标志:
      chmod +x /var/www/app/cron/do-stuff.php
    • 如果将命令的输出重定向到文件,请验证您是否有权写入该文件/目录
  6. 检查路径
    • 检查她刘海/ hashbangs线
    • 不要依赖PATH之类的环境变量,因为在cron下它们的值可能与在交互式会话下不一样
  7. 调试时不要抑制输出
    • 常用的是这种抑制:
      30 1 * * * command > /dev/null 2>&1
    • 通过
      >/dev/null 2>&1
      完全删除重新启用标准输出或标准错误消息输出;或重定向到您具有写访问权的位置的文件:
      >>cron.out 2>&1
      将标准输出和标准错误附加到
      cron.out
      调用用户的主目录中。

还是行不通? kes!

  1. 提升cron调试级别
    • 德比安
    • /etc/default/cron
    • EXTRA_OPTS="-L 2"
    • service cron restart
    • tail -f /var/log/syslog
      查看执行的脚本
    • 的Ubuntu
    • /etc/rsyslog.d/50-default.conf
    • 添加或注释掉行
      cron.crit /var/log/cron.log
    • 重新加载记录器
      sudo /etc/init.d/rsyslog reload
    • 重新运行cron
    • 打开
      /var/log/cron.log
      并查找详细的错误输出
    • 提醒:调试完成后,停用日志级别
  2. 运行cron并再次检查日志文件

Cronjob语法

# 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

此语法 仅对

root
用户正确。普通用户
crontab
语法没有“ 用户” 字段(不允许普通用户像其他任何用户一样运行代码);

# Minute  Hour  Day of Month      Month         Day of Week    Command    # (0-59) (0-23)   (1-31)    (1-12 or Jan-Dec) (0-6 or Sun-Sat)    0       2       *  *     *          /usr/bin/find

Crontab命令

  1. crontab -l
    • 列出所有用户的cron任务。
  2. crontab -e
    ,针对特定用户:
    crontab -e -u agentsmith
    • 开始您的crontab文件的编辑会话。
    • 退出编辑器时,将自动安装修改后的crontab。
  3. crontab -r
    • 从cron后台处理程序中删除您的crontab条目,但从crontab文件中删除。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号