bash脚本检查服务是否正在运行



我已经写了以下脚本

#! /bin/bash
function checkIt()
{
 ps auxw | grep $1 | grep -v grep > /dev/null
 if [ $? != 0 ]
 then
   echo $1"bad";
 else
   echo $1"good";
 fi;
}
checkIt "nginx";
checkIt "mysql";
checkIt "php5-fpm";

这里的问题似乎是最后一次检查checkIt "php5-fpm",该检查始终返回php5-fpmbad。由于连字符,问题似乎出现了。如果我只是checkIt "php5",我会得到预期的结果。我实际上可以逃脱它,因为我没有任何以PHP5开头或包含PHP5的其他过程。但是,它变成了一个黑客,有一天会抬起丑陋的头部。我对可能能够告诉我如何获得检查" php5-fpm"的任何人都非常感谢。

检查服务是否在 *nix中运行的正常方法是通过执行此操作:

/etc/init.d/servicename status

,例如

/etc/init.d/mysqls status

这些脚本通过PID检查状态而不是Grepping PS输出。

添加单词边界和负面 lookahead regex到您的 grep

#!/bin/bash
function checkIt()
{
 ps auxw | grep -P 'b'$1'(?!-)b' >/dev/null
 if [ $? != 0 ]
 then
   echo $1"bad";
 else
   echo $1"good";
 fi;
}
checkIt "nginx"
checkIt "mysql"
checkIt "php5-fpm"

相关内容

  • 没有找到相关文章

最新更新