4

我有一个可执行的 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 作业运行时它运行良好?

4

1 回答 1

7

您的 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' 替换为上一个 echo 给您的输出。

于 2013-06-03T06:21:57.753 回答