如果shell脚本中发生了错误,请通过电子邮件通知

时间:2012-09-07 21:03:23

标签: linux bash shell unix

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

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

1 个答案:

答案 0 :(得分: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。有关更多基本检查,您可以使用上述方法。