で動作していない:単純なJavaコマンドは、我々は次のシェルスクリプトでjavaコマンドを実行するために失敗したしようとしているのCron
#!/bin/bash
/usr/java/jdk1.8.0_91/bin/java -jar /home/cyberren/cyberren/cyberexe/D50_1_Migration.jar > d50Migration.log
当社は、cronのファイルに次の行でそれを呼び出す:
45 08 * * * /home/cyberren/queries/d50migration.sh
シェルスクリプトがcronで動作することを確認しましたが、javaを実行しません。それはしようとしますが、私たちのログ出力は、ちょうどこの1行です:
2016-Jun-30 08:58:11 - D50_1_Migration Process v104
は、我々はこのような、以下のより多くの行を期待:
2016-Jun-30 08:58:11 - D50_1_Migration Process v104
2016-Jun-30 08:58:11 - migrateData -> SQL: UPDATE D50_1 SET xassessment = 192, iStepsTotal = 9 WHERE xIndx = 128
2016-Jun-30 08:58:11 - migrateData -> SQL: UPDATE D50_1 SET xassessment = 192, iStepsTotal = 9 WHERE xIndx = 129
...
を私たちは手動で同じシェルスクリプトを実行することができ、そしてそれjavaを実行します。 Javaラインを手動で実行することもでき、正しく実行されます。だから、繰り返す
:
- をログが作成されたシェルスクリプトが
- を実行します
- 予定通りcronジョブが実行されますが、唯一の最初の行
- とシェルのJavaラインスクリプトが実行されない
- シェルスクリプトとスタンドアロンJavaラインの両方が手動で正常に実行されます
- すべてのダイレクトお問い合わせは
ご迷惑をおかけ致します。
アップデート/追加情報:
- は、(編集)権限が正しい
- (編集)しているアレックスのアドバイスあたり前の
cd "$(dirname "$0")"
行を追加しようとしました。同じ出力。
ソリューション:
- @Jackson、あなたはおそらく、jarファイルのソースコードへのアクセスを持っていないので、デバッグが無益だろう。 cronジョブを設定して、bashログインから呼び出され、STDERR出力をSTDOUTに送信し、ファイルに両方を記録するようにしてください。
45 08 * * * /bin/bash -l -c "cd /home/cyberren/queries; ./d50migration.sh 2&>1 |tee -a /home/cyberren/d50migration.log"
このようにして、生成されたすべての出力とエラー出力を表示する必要があります) - Finbarr O'Brien 22分前 - 最初は私たちのエラーを見る方法を持っていてとても嬉しかったですが、あなたのcronラインは.jarをうまく走りました!あなたは私たちの問題を解決し、cronを使ってJavaアーカイブファイルを成功裡にスケジューリングして実行する方法を与えました。
こんにちは! jarファイルにモードのデバッグ行を追加して、どこにバグがあるかを確認することができます –
@JägermeisterPermissions are good!私たちはPuTTYを介して同じユーザーと確認しました。 – Jackson
@Jérèmcronで実行するとバグが発生しますが、手動で実行するとバグはありますか? – Jackson