当我在shell上执行以下命令时,它返回预期的PID,例如: 4676:
pgrep -f konakart
但是当在脚本上使用该行时,它会返回两个ID(预期的一个ID,我想另一个ID):
# vim test.sh
#!/bin/ksh
echo $(pgrep -f $1)
# ./test.sh konakart
4676 17847
这些线路有什么问题?
答案 0 :(得分:1)
您没有考虑在命令行输入的命令。
在命令行提交时,您的正确说明只有一个命令在其完整描述中运行了单词konakart。
现在你正在调用脚本......怎么样?
./test.sh konakart
那么现在有多少命令在他们的完整列表中有单词konakart?
答案是2,你认为你正在寻找的那个,你刚才提交的那个你把命令行放在命令行上来调用你的脚本的那个;)
答案 1 :(得分:0)
如上所述(在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 $rc