打破了逻辑

时间:2015-10-15 21:14:41

标签: linux bash shell

我需要编写一个shell脚本来查看ADM进程是否已关闭我们需要通过电子邮件发送警报,我已经在脚本下面完成了,如果我们在一台计算机上安装了一台ADM服务器,它工作正常,但我的要求是我在一台机器上安装了3台ADM服务器,不知道如何编写shell脚本来实现这一要求。

脚本: -

export ADM =`ps -ef  | grep Adm | grep -v grep | wc -l`

if [ $ADM == 0 ];
then
echo "AdmServer is down on Dev $hostname" | mail -s xxxx.gmail.com
fi

请帮帮我,

谢谢,

1 个答案:

答案 0 :(得分:0)

不是检查$ADM0,而是检查它是否3

ADM=`ps -ef  | grep -c '[A]dm`

if [ $ADM -ne 3 ]
then
    echo "AdmServer is down on Dev $hostname" | mail -s xxxx.gmail.com
fi

-c的{​​{1}}选项会返回匹配数,因此您无需使用grep。将其中一个字符放在括号中是解析wc -l输出的一种技巧,因此您不需要ps(因为现在grep -v grep的参数不再与grep相同您正在搜索的流程名称)。您应该使用-eq-ne来比较数字; ==!=用于比较字符串。

在分配仅在该shell脚本中使用的变量时,不需要使用exportexport用于创建环境变量,这些变量由子进程继承。