2011-12-22 19 views
0

私はJavaファイルを実行するCron経由でubuntuサーバーで日常のスクリプトを実行しています。 if/elseブロックにインクルードして、Javaファイルが正常に実行された場合には「successfull」というエコーメッセージを送信し、失敗した場合は「failed」というエコーメッセージを送信するようにします。あなたが頼ることができる場合 おかげif/elseを使用したLinuxスクリプト

答えて

0

-

if (java file runs successfull) 
then 
echo "cron job successfull" 

else 
then 
echo "cron job failed" 

- ここ

はupdateGroupScores.sh

java -classpath "/home/ubuntu/live/build/WEB-INF/lib/*:/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/" com.generalsentiment.update.UpdateGroupScores > /var/gs/livecron/crongroupsentimentscores.log 

スクリプトの既存の行は、私は彼らに何かを変更したいですJavaコマンドの終了ステータスは、単に次のように書く:

C1="/home/ubuntu/live/build/WEB-INF/lib/*" 
C2="/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/" 
LOG="/var/gs/livecron/crongroupsentimentscores.log" 

if java -classpath "$C1:$C2" com.generalsentiment.update.UpdateGroupScores > "$LOG" 
then echo "cron job successful" 
else echo "cron job failed" 
fi 

出力はあなた宛てに(少なくとも一部のシステムで)郵送されるか、/dev/nullに紛失することに注意してください。これらの変数は、SO画面上のすべてのものをよりよくフィットさせます。私はおそらく通常のスクリプトでそれらを使用するだろうが、それは境界線の決定になるだろう。

終了ステータスに頼ることができない場合は、成功したかどうかを判断するために何か他の操作を行う必要がありますが、一般的な原則は関係なく非常に同じです。

+0

素晴らしい...私のためにうまくいきます。... thanxジョナサン..... :) –

1

シェルがBashであると仮定します。

$を使用していますか?

  • $?は(成功した場合は0)前のコマンドの戻りコードを含む変数& &を使用

    java -classpath "/home/ubuntu/live/build/WEB-INF/lib/*:/var/lib/tomcat7/lib/*:/home/ubuntu/live/build/WEB-INF/classes/" com.generalsentiment.update.UpdateGroupScores > /var/gs/livecron/crongroupsentimentscores.log 
    
    if [[ $? == 0 ]] 
    then 
        echo "cron job successful" 
    else 
        echo "cron job failed" 
    fi 
    

と||

  • & &は、以前は
  • 成功した場合、次のコマンドを実行することができるようになり||は、以前に失敗した場合、次のコマンドは

だからでき尾と実行行またはコマンド実行されるようになります:& &エコー「成功したcronジョブ」||エコー "cronジョブが失敗しました"

+0

コマンドの終了ステータスを 'if'でテストすることができます。様々なテストコマンド( '['と '[' 'など)が条件をチェックし、正しいステータスで終了することです。かつては、 'test'コマンドはシェル組み込みではなく(' [''最後の引数は ']'でなければならなかった)、文字通り実行されました。今日では、それは組み込みですが、同じ基本的な考え方が適用されます。だから、 'cmd1 ... if;次にこれをエコーし​​ます。それ以外はエコー。 fi'。 –

関連する問題