• 对于crontab定时任务不能自动执行的总结


    最近遇到了一些sh不能在crontab定时任务中自动执行的问题
    期间由于不太了解,故走了一点弯路,现在总结下来可能第一次
    进行设置遇到的问题。以绝后患!我所用过的操作系统为HP-unix&linux&sco-unix,均测试通过
    1,首先确保sh脚本具有可执行属性
    即chmod +x  ***.sh
    或chmod +777 ***.sh
    2,确保sh脚本手工执行正常
    即在当前系统内手工执行sh脚本以后能收到自己期望得到的结果
    3,加载环境变量
    这个问题是经常容易被忽略的问题,通常我们在第二步的时候手动执行脚本能得到自己想要的结果,可是设置好crontab之后,总不能得到自己想要的结果, 总感觉脚本没有被执行。或者执行后没有得到正常的结果。很多均是由于没有加载所在用户的环境变量所引起的。因此最好在自己的脚本首两行添加环境变量的导 入。如下:其中telstar是我在操作系统下所在的用户。在该目录下执行ls -a可以查看到.cshrc文件。我们在自己的sh脚本中增加source 该文件,将本用户的环境变量加载,那么以下的内容就能正常被执行了
    #!/bin/csh#source /telstar/.cshrc
    下面贴出我的定时重启tomcat的一个例子
    #!/bin/csh

    source /telstar/.cshrckill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`cd /telstar/tomcat/binsleep 15./startup.sh &
    其实这里不加载环境变量的话,sh前加上绝对路径,应该也可以,这个没有测试,有兴趣的朋友可以尝试一下
    #!/bin/csh
    source /telstar/.cshrc
    kill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`
    sleep 15
    /telstar/tomcat/bin./startup.sh &

    总之很多手动能正常执行的sh,crontab不能执行大多数情况是由于没有加载环境变量引起的,这里贴出来,以绝后患
    #!/bin/csh
    source /telstar/.cshrc
    kill -9 `ps -ef | grep Djava.uti | grep -v tail | grep -v vi | grep -v grep | awk '{print $2}'`
    cd /telstar/tomcat/bin
    sleep 15

    ./startup.sh &


    一般情况下需要修改环境变量配置

    改统一

    vi ~/.bash_profile

  • 相关阅读:
    超棒的jQuery矢量地图生成插件 JQVAMP
    签名一年过期 项目导入出现 红叉叉
    invalid commandline parameter: Files\Android\androidsdk\tools/emulatorarm.exe 错误
    线性布局 相对布局 参数
    触摸事件 按下 移动 弹起
    Activity service 通信
    android view的setVisibility方法值的意思
    TextView 支持 html 图片显示
    布局动态添加 相对布局
    存储数据 SharedPreferences
  • 原文地址:https://www.cnblogs.com/wang3680/p/5383645.html
Copyright © 2020-2023  润新知