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

コマンドライン引数がチェックされているプロセスと競合するため、常にtrueです。このシナリオをテストするには、スクリプトの最初の行に 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

関連情報