我需要编写一个 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
请帮帮我,
谢谢
最佳答案
不要检查 $ADM
是否为 0
,而是检查它是否不是 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
grep
的 -c
选项返回匹配项的计数,因此您不需要使用 wc -l
。将其中一个字符放在括号中是解析 ps 输出的一种技巧,这样您就不需要 grep -v grep 了(因为现在 grep 的参数不再与您正在搜索的进程名称相同)。并且您应该使用 -eq
和 -ne
来比较数字; ==
和 !=
用于比较字符串。
分配仅在该 shell 脚本中使用的变量时,无需使用 export
。 export
用于创建环境变量,这些变量由子进程继承。
关于linux - 逻辑上受到打击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158662/