Linux 陷入逻辑

Linux 陷入逻辑,linux,bash,shell,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 $hostn

我需要编写一个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
<代码>导出
用于创建由子进程继承的环境变量。

变量分配不能在
=
周围有空格。为什么要使用
导出
?是否有使用
ADM
变量的子进程?如果我正确理解问题,请更改
If[$ADM==0]
是否有效不,先生,让我解释我的问题,我的机器上运行着3个进程,如p1、p2、p3,我需要编写一个shell脚本,当任何进程停止时,我将通过电子邮件收到警报。如果我的问题仍然混淆,请告诉我you@KrupalPatel我发布了与anwer相同的东西。我不明白为什么它不正确。对不起,先生,这是我的错误,我忽略了我这样做的原因是export ADM=
ps-ef | grep ADM | grep-v grep | wc-l
它将在执行逻辑时给出带有该计数的计数我理解您为什么分配变量。我的问题是你为什么要出口它。你知道外壳变量和环境变量之间的区别,不是吗?