• 对于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

  • 相关阅读:
    Win7停止更新升Win10教程
    linux 进程管理
    linux vi/Vim编辑器
    linux 文件管理
    linux 目录管理
    [开发笔记]-C#判断文件类型
    [开发笔记]-C#获取pdf文档的页数
    [转载]每周问问你的团队这10个问题
    [转载]番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
    [开发笔记]-Linq to xml学习笔记
  • 原文地址:https://www.cnblogs.com/wang3680/p/5383645.html
Copyright © 2020-2023  润新知