2016-05-20 13 views
1

私はJavaファイルを実行しているbashファイルを書きました。実行していると正しく動作していますが、crontabで試してみると役に立ちません。crontabからjavaファイルでbashファイルを実行

これが私のcrontabです:

*/5 * * * * /home/import.sh >/dev/null 2>&1 

これは私のbashのファイルです:私は、URLを削除した

   - me=$(date +%Y-%m-%d) 
       mkdir -p /home/importRequirement"$foldername" 
        { 
        java -jar ImportRequirement1.jar 
        java -jar ImportRequirement1.jar 
        } 

     2>importRequirement"$foldername"/log$(date +%Y-%m-%d-%H-%M-%S).txt 

+0

環境PATHを確認してください。それはjavaコマンドの場所を含んでいますか? –

+1

おそらく、 'java'の絶対パスと、実行されるjarファイルの絶対パスを含める必要があります。 –

+0

また、cronjob式に '/ */bin/bash'を追加する必要があります - >' */5 * * */bin/bash /home/import.sh>/dev/null 2>&1' – fedorqui

答えて

1

スクリプトを非対話環境(cronまたはinit)から起動する場合、カスタムパスやその他の環境変数などの通常の機能は設定されません。

ルールは次のとおりです。

  • (/ binと/ usr/bin中で最もものを除く)すべてのコマンドが
  • 完全なパスを使用し確実に必要なすべての環境変数が
に設定されていることを確認

このように多くのスクリプトを使用する場合は、すべての環境変数を宣言し、使用するすべてのコマンド用のスクリプトを作成するsetenvスクリプトを作成できます。ここでは、(多かれ少なかれ)が含まれます:

export JAVAHOME=... 
export JAVA=/path/to/java 

次に、あなたがあなたのスクリプトで使用することができます。

$(JAVA) -jar ImportRequirement1.jar 

しかし、ここで再び、あなたが期待されるディレクトリに以前cdを持っているか、絶対パスを使用する必要がありますどちらかjarの内容

+0

tnx alot Serge Ballesta – ace

1

cronジョブの環境変数は、ログイン時の環境変数と同じではありません。スクリプトを実行するために必要な環境変数(JAVA_HOMEとPATHなど)を再度確認してください。 のcronは、スクリプトを解釈するものと知らないかもしれない、あなたはbashスクリプトの最初の行に

#!/bin/bash 

を配置することをお勧めします。

関連する問題