【问题标题】:shell script fails when executed by cronjob, works fine otherwise由 cronjob 执行时 shell 脚本失败,否则工作正常
【发布时间】:2013-05-29 05:26:07
【问题描述】:

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

【问题讨论】:

标签: java linux shell cron executable-jar


【解决方案1】:

您的 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 给您的输出。

【讨论】:

  • 对不起..我的错...它按照你告诉我的方式执行...这是我不确定的其他问题..感谢您的帮助..
  • 好吧,即使这个问题得到了回答,请给我更多信息,看看我是否可以提供帮助:D
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 2013-11-29
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多