Shell脚本在被cronjob执行时失败,否则工作正常



我有一个可执行的jar,并且我已经编写了一个shell脚本来执行它。当我手动运行shell脚本时,它运行得很好,但是当使用crontab计划每周运行它时,它会给出以下错误-

log_process.sh: line 16: java: command not found

shell脚本中的第16行是-

java -jar $jar_path $logDirectory $logNamePattern $processedLogDirectory $oldResultsDirectory 2>>$log_file 1>&2

任何想法为什么它发生,它运行良好,当我手动运行,而不是当它得到vrontab作业运行?

您的cron作业没有权限访问与您作为用户相同的$PATH变量

解决这个问题最简单的方法是打开一个终端,然后运行下面的命令:
which java

这将给你java可执行文件的绝对路径。例如:

/opt/Oracle/Java/bin/java

将'java'命令替换为整个路径。

您可能还希望在shell脚本中指定JAVA_HOME变量。从终端运行:

echo $JAVA_HOME

会给你另一个路径,比如'/opt/Oracle/Java'。在脚本中(假设使用的是bash),在运行java命令之前,输入:

export JAVA_HOME=/opt/Oracle/Java

将'/opt/Oracle/Java'替换为前面的回显给你的输出

最新更新