【发布时间】:2013-01-18 06:31:53
【问题描述】:
我们有许多通过相当大的网络收集各种统计数据的 cron 作业。大多数这些 cron 作业都没有得到很好的监控。我想编写一个 perl 脚本,我们可以将这些作业的输出通过管道传输到其中,如下所示:
5 * * * * collectstats.pl 2>&1 1>/dev/null | scriptwatcher.pl
这个想法是丢弃来自 collectstats.pl 的标准输出,并将标准错误传送到 scriptwatcher.pl。然后,第二个脚本可以在出现错误时采取适当的措施,很可能给我发电子邮件。通过快速测试,这是可行的,除了在 scriptwatcher 中我需要知道发送错误的脚本的名称。只需这一点点信息,我想做的一切都成为可能。
另外,是否可以同时将标准输出从 collectstats 传送到另一个脚本?即一个脚本有 2 个管道?
干杯
【问题讨论】:
-
使用线路:
5 * * * * collectstats.pl 2>&1 1>/dev/null | scriptwatcher.pl collectstats.pl。也就是说,告诉脚本观察者它正在观察哪个脚本。查找pee命令,与tee平行,但使用进程(因此是p)而不是文件。 -
@JonathanLeffler 如果可能的话,我想避免重复输入 collectstats.pl。如果没有其他可能,那么这就是我需要做的,但最好避免它。
-
哈哈,尝试在谷歌中输入“pee command”,不是我所期望的!!
-
cron已经可以通过电子邮件将发送给 STDERR 的内容发送给 STDERR,仅供参考 -
@ikegami 谢谢,很高兴知道。但是,我希望有更多的控制权,例如它会在 x 小时后发送一条短信。这确实让我觉得也许有一个包可以处理这种事情。