当我在shell上执行以下命令时,它返回预期的PID,例如4676:
pgrep -f konakart但是,当在脚本中使用这一行时,它会返回两个ID(预期的ID,我猜另一个ID来自脚本本身):
# vim test.sh
#!/bin/ksh
echo $(pgrep -f $1)
# ./test.sh konakart
4676 17847这些线路上有什么问题?
发布于 2017-03-31 15:59:57
您尚未考虑在命令行中输入的命令。
在命令行中提交时,只有一个命令在其完整描述中包含单词konakart,这一点是正确的。
现在你正在调用一个脚本...怎么做?
./test.sh konakart那么,现在有多少命令的完整清单中包含单词konakart?
答案是2,你认为你正在寻找的那个,和你刚刚提交的那个,你把单词放在命令行上来调用你的脚本;)
发布于 2017-03-31 16:47:08
正如前面提到的(在grails答案中),下面是我对icinga的检查:
# vim check_process
#!/bin/ksh
rc=0
#kkPID=$(pgrep -f konakart)
#kkPID=$(ps -ef | awk '/[k]onakart/{print $2}')
#kkPID=$(ps -eo pid,command | grep "konakart" | grep -v grep | awk '{print $1}')
pid=$(pgrep -fl $1 | grep -v "check_process" | sed "s/\(\d*\) .*/\1/")
if [ -z "$pid" ]
then
msg="CRITICAL - No $1 process found"
rc=2
else
msg="OK - $1 runs on PID: $pid"
fi
echo $msg
return $rchttps://stackoverflow.com/questions/43135056
复制相似问题