在crontab中执行脚本重要事项

Posted 码格果师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在crontab中执行脚本重要事项相关的知识,希望对你有一定的参考价值。

crontab不能成功执行shell脚本的可能原因

  1. crond进程不存在,该进程是crontab的守护进程,它必须存在才能让crontab正常使用;
  2. 系统时间不对;
  3. 环境变量的问题:crontab执行脚本的时候不会读取用户的环境变量等配置,所以可能很多命令不能使用导致脚本执行失败;
  4. 脚本本身的问题。

针对以上几点,在使用crontab之前,我们应该:

  1. 检查crond进程是否正在正常运行;

  2. 这个很少见,毕竟大多数情况我们的时间都很标准,不过要是用不熟悉的机器,最好还是date一下;

  3. 这个应该是最容易出现的问题了,针对这种问题:

    a. 在编写shell脚本的时候尽量用绝对路径使用命令;

    b. 在脚本开头export一下路径(长见的命令一般在/bin,/sbin,/usr/bin,/usr/sbin这几个路径下,所以不妨全部export一下:

        export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
        export LANG=en_US.UTF-8
    如果不全部export的话,记得把使用到的命令which一下以确定命令的真实路径;

    c. 使用脚本调用别的脚本,比如有三个脚本:run1.sh,run2.sh,run3.sh,假设这三个脚本都使用了cat、grep等命令,那么它们直接放在crontab中是不会被成功执行的,这时候我们可以写个run.sh,在run.sh中调用run1.sh,run2.sh,run3.sh,这样就不需要考虑export环境变量的问题,因为run.sh并没有使用系统命令,而run.sh调用run1.sh的时候已经不是crontab在管理了,所以会读取用户的环境变量。

  4. 拉出去枪毙吧,只能自己检查问题了,可以先手动执行一次,如果成功执行再考虑crontab相关的问题,不然诸如没有+x就放进crontab的问题肯定是不该的。

以上是关于在crontab中执行脚本重要事项的主要内容,如果未能解决你的问题,请参考以下文章

Linux任务调度进程crontab的使用方法和注意事项

shell脚本 手动执行成功,crontab执行缺少数据

crontab怎样每隔5分钟执行一次脚本

小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

crontab内环境变量问题(crontab定时任务执行脚本异常)

CentOS 7定时执行python脚本