场景:一个sh脚本,手动执行是正常的,但是只要crontab启动就会提示java版本不匹配(Unsupported major.minor version 52.0)。所有的文件都是用了绝对路径还是不行,猜测是crontab执行java -jar时候,没有检测到环境变量。
于是在sh脚本的前面协商如下:
#!/bin/sh
. /etc/profile
. ~/.bash_profile
定时任务执行成功!那就是说明crontab不会默认的去读取该用户的环境变量,配置好即可。
#通常用作注释,但是#!放在一起就标志着这是一个shell script,其后的路径指出了用来解释这个script的程序。