我们有一个脚本,如果进程发生故障,它会检查并发送警报。由于某种原因,它并没有为所有用户正确捕获它,也没有在所有情况下发送警报。 请提出可能存在的问题。
环境 - uatwrk1,uatwrk2,uatwrk3 ------- uatwrk100
ServerName - myuatserver
要检查的进程 - Amc / apache / bin / httpd
脚本是:
#!/bin/ksh
i=1
while (( i<=100 ))
do
myuser=uatwrk$i
NoOfProcess=`ps -ef | grep -v grep | grep $myuser | grep "Amc/apache/bin/httpd" | wc -l`
if [[ $NoOfProcess -eq 0 ]]
then
echo "Amc process is down, sending an alert"
# Assume sendAlert.ksh is fine
./sendAlert.ksh
else
echo "Amc process is running fine" >> /dev/null
fi
(( i+=1 ))
done
答案 0 :(得分:0)
我认为@Mahesh已经在评论中表明了这个问题
如果您只想拥有一次邮件,则可以计算运行httpd进程的用户。以下命令中的反斜杠用于避免grep -v grep
。
ps -ef | grep "A\mc/apache/bin/httpd" | cut -d " " -f1 | grep "^uatwrk"| sort -u | wc -l