我是root用户登录,并且/etc/profile也设置了环境变量,系统是ubuntu
我的crontab内容:crontab -l
*/1 * * * * sh /opt/vcm/monitor.sh >> /opt/cronlog 2>&1
我的shell脚本内容:monitor.sh
#!/bin/sh
#monitor java&nginx
basepath=$(cd `dirname $0`; pwd)
echo "$(date) run monitor" >> $basepath/run_monitor.log
j=$(netstat -anp|grep :8444|grep java)
if [ -z "$j" ]; then
echo "$(date) restart vcm" >> $basepath/monitor.log
java -jar ./vcm.jar
fi
cronlog日志报错:
8:/opt/vcm/monitor.sh: java: not found
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
crontab不会读取系统的环境变量,解决方法有两种:
1.crontab改成*/1****source~/.bash_profile&& sh/opt/vcm/monitor.sh>>/opt/cronlog2>&1
2.脚本里面加上:.~/.bash_profile
改绝对路径试试你先别执行脚本, 看java-version能出来不,出不来就是你环境变量有问题
crontab的`PATH`变量非常有限,如果你的java并不是在`/usr/bin/java`下,那你需要在脚本中自己把环境变量改了,或者用绝对路径去执行
你是指java命令用绝对路径吗最好的解决办法是通过apt安装JDK,不会有这问题,你搜一下“安装Ubuntu后要做的事”,里面有提到怎么通过apt安装JDK在全局配置文件里面配置java的全局变量即可