首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pgrep获取单个PID

从pgrep获取单个PID
EN

Stack Overflow用户
提问于 2017-03-31 15:34:13
回答 2查看 3K关注 0票数 0

当我在shell上执行以下命令时,它返回预期的PID,例如4676:

代码语言:javascript
复制
pgrep -f konakart

但是,当在脚本中使用这一行时,它会返回两个ID(预期的ID,我猜另一个ID来自脚本本身):

代码语言:javascript
复制
# vim test.sh
#!/bin/ksh
echo $(pgrep -f $1)


# ./test.sh konakart
4676 17847

这些线路上有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2017-03-31 15:59:57

您尚未考虑在命令行中输入的命令。

在命令行中提交时,只有一个命令在其完整描述中包含单词konakart,这一点是正确的。

现在你正在调用一个脚本...怎么做?

代码语言:javascript
复制
./test.sh konakart

那么,现在有多少命令的完整清单中包含单词konakart?

答案是2,你认为你正在寻找的那个,和你刚刚提交的那个,你把单词放在命令行上来调用你的脚本;)

票数 1
EN

Stack Overflow用户

发布于 2017-03-31 16:47:08

正如前面提到的(在grails答案中),下面是我对icinga的检查:

代码语言:javascript
复制
# 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43135056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档