2017年5月9日火曜日

Job Arrangerのシェルの異常処理

Job Arrangerのジョブの場合はジョブの実行結果を基に正常と異常を判断します。

例)
test.shを作成します。
test.shの内容は
[root@localhost test]# more test.sh 
ls
cat /tmp/test.log
ls

[root@localhost test]# 
この中に/tmp/test.logファイルはありません。
したら、この結果はどうなるでしょうか?
結果は正常になります。その理由は、shell scriptは最終のコマンドだけを判断してその結果を渡すからです。
確認します。
[root@localhost test]# ./test.sh 
etc  test.sh  usr  var
cat: /tmp/test.log: そのようなファイルやディレクトリはありません
etc  test.sh  usr  var
[root@localhost test]# echo $?
0      <==正常になりました。
[root@localhost test]# 
正常になりました。
ですのでJob Arrangerでも正常処理になります。
もし、Job Arrangerでエラーがなり、ジョブネットを停めたい場合はシェルの中身を
修正してくださし。

例)
[root@localhost test]# more test.sh 
ls
cat /tmp/test.log
##結果が正常か確認する。
if [ 0 -ne $? ];then
   echo "ERROR"
   exit 1
fi
ls

[root@localhost test]# ./test.sh 
etc  test.sh  usr  var
cat: /tmp/test.log: そのようなファイルやディレクトリはありません
ERROR
[root@localhost test]# echo $?
1      <==異常になりました。
[root@localhost test]#
これで書いてください。

Job Arrangerのジョブの中身も同じように書くと異常終了になります。
結局この問題はJob Arrangerの問題ではなくshell scriptの書き方ので問題でした。

以上です。

0 件のコメント: