美文网首页
分析crontab问题的思路汇总

分析crontab问题的思路汇总

作者: 长江十三寨总瓢把子 | 来源:发表于2021-04-30 10:12 被阅读0次

    Linux的crontab命令是DBA经常会用到的一个功能,用来实现定时任务。具体的用法介绍,网上一搜一大堆,我就不写了。我这里主要汇总一下,当crontab不生效的时候,可能的原因以及分析方法。

    原因一:脚本没有执行权限

    说明

    一般来说,crontab里面是建议用sh或者bash来执行shell脚本;如果是其他类型脚本,也建议带上二进制命令的全路径,避免脚本本身没有x权限,或者命令找不到这类情况。

    分析方法

    拷贝crontab -l里面的命令手动执行,验证一把权限。

    原因二:缺失环境变量

    说明

    有时候,手动执行一点问题没有,放到crontab里面,就是不生效,很苦恼。这个时候,第一个需要怀疑的就是环境变量有问题。因为crontab内部引用的环境变量和命令行是有区别的

    分析方法

    确认脚本里面是不是引用了一些特殊的环境变量,比如指定的lib目录,python的一些第三方包,特定用户下的命令等等。可以尝试简化脚本内容,通过打印日志的方法来确认。
    解决办法呢,一般也是两个思路:

    • 在脚本的开头就主动export一下环境变量(推荐
    • 修改crontab默认的环境变量

    原因三:用户密码过期

    说明

    这个属于比较少见的一类情况,本来正常运行的定时任务,突然某天就失效了,有可能就是这个原因。在cron日志里面会有这个错误消息:Authentication token is no longer valid; new one required

    分析方法

    1. 排除人为变更脚本,环境的因素
    2. 分析日志,主要包括三块日志的内容:
      • 系统日志:/var/log/messages
      • cron日志:/var/log/cron
      • 任务日志:如果定时任务的脚本设了日志的话

    怎么配一个正确的crontab任务

    按我自己的经验来说,有这么几点需要注意

    • 使用绝对路径配置命令和脚本
    • 每个定时任务,一定带上执行日志,即> /tmp/xxx.log 2>&1 &这样的后缀,否则有可能把磁盘的inode撑爆,而且不好定位错误
    • 脚本内所需的环境变量,在脚本内主动设置好

    相关文章

      网友评论

          本文标题:分析crontab问题的思路汇总

          本文链接:https://www.haomeiwen.com/subject/bpqnrltx.html