1
fileexist=0
  mv /data/Finished-HADOOP_EXPORT_&Date#.done /data/clv/daily/archieve-wip/
  fileexist=1
--some other script below

上記は、forループでいくつかのファイルを移動しているシェルスクリプトです。Hadoop クラスターでこのスクリプトを実行しているため、移動プロセスで何か問題が発生した場合はメールで自分に通知したいので、実行中にクラスターがダウンした可能性があります。error handling mechanismこのシェルスクリプトで?何かご意見は?

4

1 に答える 1

1

少なくとも、「何がうまくいかないと思っているのか」を知る必要があります。それに基づいて、これを行うことができます

 mv ..... 2> err.log
 if [ $? -ne 0 ]
 then
   cat ./err.log | mailx -s "Error report" admin@abc.com
   rm ./err.log
 fi

または、ウィリアム・パーセルが提案したように、使用-

trap 'rm -f err.log' 0; mv ... 2> err.log || < err.log mailx ...

mvエラー時にゼロ以外の戻りコードを返す場合があり、$?そのエラー コードを返します。サーバー全体がダウンした場合、残念ながらこのスクリプトも実行されないため、別の監視サーバーで実行されているFoglightなどのより高度な監視ツールを使用することをお勧めします。より基本的なチェックについては、上記の方法を使用できます。

于 2012-09-07T21:54:54.487 に答える