假设ps -ef | grep apache | wc -l
给出输出2
,这意味着正在运行2个进程。
在我的服务器连接中波动,所以我想在ps -ef| grep apache |wc -l
的输出超过5分钟时发送警报。
答案 0 :(得分:0)
我想在输出ps -ef |时发送警报grep apache | wc -l为零超过5分钟。
首先,ps -ef| grep apache
可能不可靠,因为它可能会将grep apache
视为apache进程。为避免这种情况,请使用ps -ef | grep '[a]pache'
。更好,尝试:pgrep apache
。此外,如果我们正在寻找零或非零流程,我们不需要wc -l
。
如果您的需求很简单,那么这是一个简单的bash脚本,它会检查每一分钟是否正在运行apache进程。如果五个连续的测试显示没有这样的过程,它会向用户@ admin发送一封电子邮件:
#!/bin/bash
count=0
while sleep 1m
do
if pgrep apache >/dev/null
then
count=0
else
((count++))
fi
if [ "$count" -ge 5 ]
then
echo "Houston, we have a problem: $count" | mail admin@host
count=0
fi
done
由于这只会检查每一分钟,因此可能会错过一些在不到一分钟内启动和停止的过程。您可能需要调整时间。正如Jonathan Leffler评论的那样,做好这件事是一项艰苦的工作。此脚本仅用作快速简单的解决方案。