最近遇到了一些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/cshjava
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 15linux
./startup.sh &tomcat
通常状况下须要修改环境变量配置bash
改统一测试
vi ~/.bash_profilespa