该脚本无法正常工作。即使服务没有运行,输出也可以表明服务正在运行。
#!/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