在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的问题肯定是不该的。

原文地址:https://www.cnblogs.com/xkus/p/8276228.html

时间: 2024-11-13 13:17:41

在crontab中执行脚本重要事项的相关文章

Scripting Java(一):Java中执行脚本

Many implementations of scripting and dynamically typed languages generate Java bytecodes so that programs can be run on the Java Platform, just as are actual Java programs. Implementing a language in this way (or as a Java interpreter class for the

有crontab中的脚本不执行,需要在脚本里面export各种环境变量

[[email protected] ~]$ vi .bash_profile # .bash_profile # Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATHexport PATHORACLE_BASE=/u01/app/oracleORACL

crontab计划执行脚本详解

Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序. 一.安装crontab yum install vixie-cron  #安装 chkconfig crond on     #设为开机启动,安装chkconfig(yum install chkconfig)   ###设置启动方式 service crond start  #启动 service crond stop  #停止 或者 /etc/rc.d/init.d/crond sta

linux下crontab 定时执行脚本笔记

因为linux下要定时运行coreseek的脚本文件而使用到了crontab,发现一些使用的时候要注意的地方: 1.常用命令 service cron start 启动cron服务 service cron stop 停止cron服务 service cron reload 不停止的服务的情况下载入crontab配置文件 service cron restart 重启cron服务 crontab -e是编辑crontab 配置文件,这里有个问题,运行此命令后默认的编辑器nano,会让人很不习惯,

Linux下使用Crontab定时执行脚本

很多时候我们需要服务器在某个时间段运行某个命令,比如执行某个脚本等. 这时我们就可以安装"crontabs"这个软件了. 在我的CentOS服务器上是默认安装了,没有安装的可以运行: yum install vixie-cron yum install crontabs vixie-cron软件包是cron的主程序: crontabs软件包是用来安装.卸装.或列举用来驱动 cron 守护进程的表格的程序. 启动服务.关闭服务.重启服务 .重新载入配置的命令分别如下: service c

TestComplete中执行脚本时控件值未同步刷新问题

今天写了一个程序安装的自动化脚本,调试的时候发现有些控件的值获取后一直未自动刷新,鉴于该问题,仔细分析和请教后,发现TestComplete不会自动刷新控件中变化的值,这需要我们自己去控制刷新. 1.定义一个延迟函数(参数:延迟秒数,执行延迟的条件) Function TimeDelay(DelaySeconds,condition)    Dim interval,startTime    startTime=Time    Do While CBool(condition)        s

Linux中执行脚本参数获取

Linux中变量$[#,@,0,1,2,*,$,?]含义 $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 [email protected] 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 区别:[email protected], $* 相同点:都

crontab 中 python(cx_Oracle)脚本执行时需要用户环境变量,怎么办??

import cx_Oracle Traceback (most recent call last): File "", line 1, in ? ImportError: libclntsh.so.10.1: cannot open shared object file: No such file or directory 看以下帖子解决的,唯一比他幸运的是看了他的贴子,不用花半天~:) ~~~~~~~~~~~~ crontab 中 python 脚本执行失败的解决方法 写服务器程序

ubuntu中执行定时任务crontab

今天研究了下ubuntu里的crontab内置指令.这是设置定时执行脚本任务的指令,我先测试了下最基础的执行. 第一次使用crontab 时,会出现 no crontab for root - using an empty one "Select a editor ......"下面有几个选项,就是叫你选择编辑器.(选vim)就可以了,我选的第三个. 但是如果你选错了,就可能会遇到点麻烦,没有办法正常编辑,crontab -e. 怎么办? 执行这个命令:select-editor  (