4

実行可能な jar があり、それを実行するためのシェル スクリプトを作成しました。シェルスクリプトを手動で実行すると問題なく実行されますが、crontab を使用して毎週実行するようにスケジュールすると、次のエラーが発生します -

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

私のシェルスクリプトの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」コマンドをパス全体に置き換えます。

シェル スクリプトで JAVA_HOME 変数を指定することもできます。端末から次を実行します。

echo $JAVA_HOME

これにより、「/opt/Oracle/Java」などの別のパスが得られます。スクリプトで (bash を使用していると仮定して)、java コマンドを実行する前に、次のように入力します。

export JAVA_HOME=/opt/Oracle/Java

「/opt/Oracle/Java」を、前のエコーで得られた出力に置き換えます。

于 2013-06-03T06:21:57.753 に答える