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

上面是我在 for 循环中的 shell 脚本,我正在移动一些文件。如果在移动过程中出现问题,我想通过电子邮件通知自己,因为我在 Hadoop 集群上运行这个脚本,所以集群可能在运行时出现故障等等。所以我怎样才能更好error handling mechanism在这个 shell 脚本中?有什么想法吗?

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

或者如William Pursell建议的那样,使用——

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

mv出错时可能会返回非零返回码,并$?返回该错误码。如果整个服务器出现故障,那么不幸的是,该脚本也不会运行,因此最好留给更高级的监控工具,例如在不同的监控服务器上运行的Foglight 。对于更基本的检查,您可以使用上述方法。

于 2012-09-07T21:54:54.487 回答