スクリプトが正しく機能しません。サービスが実行されていなくても、出力はサービスが実行中であることを示します。
#!/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