【发布时间】:2016-02-25 20:03:07
【问题描述】:
我是系统管理员,我经常遇到这样的情况,即我的脚本或命令会生成大量输出,我只想在命令失败时通过电子邮件发送给我。编写一个运行命令的脚本非常容易,如果命令失败,收集输出并通过电子邮件发送它,但我想我应该能够编写一个命令
1) 接受标准输入上的日志信息 2)等待输入进程退出,看看它的退出状态是什么 3a) 如果输入过程干净退出,则将日志记录输入附加到普通日志文件 3b) 如果输入过程失败,将日志输入附加到正常日志并发送电子邮件给我。
在命令行上看起来像这样:
something_important | mailonfail.sh me@example.com /var/log/normal_log
这会让它在 crontabs 中非常容易使用。
我无法弄清楚如何让我的脚本等待写入过程并评估该过程如何退出。
为了更加清楚,这是我可以使用包装器的方法:
#! /bin/bash
something_important > output
ERR=$!
if [ "$ERR" -ne "0" ] ; then
cat something_important | mail -s "something_important failed" me@example.com
fi
cat something_important >> /var/log/normal_log
同样,这不是我想要的,我想写一个脚本并将命令输入其中。
这有意义吗?我该怎么做?我错过了什么吗?
谢谢大家! -迪伦
【问题讨论】: