linux - 逻辑上受到打击

标签 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

请帮帮我,

谢谢

最佳答案

不要检查 $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 脚本中使用的变量时,无需使用 exportexport 用于创建环境变量,这些变量由子进程继承。

关于linux - 逻辑上受到打击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158662/

相关文章:

linux - 仅获取 android 设备 ID 并将其保存到 bash 中的数组

bash - ssh bash -c 退出状态不传播

bash - 删除 Bash 脚本中的重复条目

regex - Linux 正则表达式 - 在行首使用 OR 运算符

xcode - applescript 中的 "Do Shell Script"命令在脚本编辑器中有效,但在我的 cocoa applescript 应用程序中无效

linux - 自动化 Ubuntu 构建(或任何 Linux 发行版)

为32位cpu编译Linux内核模块

linux - 如何选择文件的其余部分,不包括 linux 中的某些行?

linux - 使用 CUT 命令时包含空格

bash - 在 mac OS X 中登录时运行脚本