Linux脚本执行不正确

Linux脚本执行不正确

该脚本无法正常工作。即使服务没有运行,输出也可以表明服务正在运行。

#!/bin/sh
is_running=`ps aux | grep -v grep | grep "$1" | wc -l`
echo $is_running
if [ "$is_running" > 0 ]; then
   echo "OK: $1"
   exit 0
else
   echo "Problem: $1 is not running"
   exit 2
Fi

使用以下命令运行它:sh scriptname couchbase-server

答案1

由于您的命令行参数与您检查的进程冲突,因此它总是成立。要测试该场景,请在脚本的第一行添加 sleep 60 并按如下方式运行它

sh  script.sh ntpd & ps aux | grep ntpd
[1] 6401
root      6401  0.0  0.0 111940  1208 pts/3    S    16:40   0:00 sh script.sh ntpd

您可以添加grep -v script.sh来克服这个问题或者只是pidof ntpd | wc -w

尝试这个,

is_runing=`ps aux | grep -v grep | grep "$1" | grep -v "$(basename $0)" | wc -l`
echo $is_runing
if [ "$is_runing" -gt 0 ]; then
   echo "OK: $1"
   exit 0
else
   echo "Problem: $1 is not running"
   exit 2
fi

相关内容