首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查进程id (PID)是否存在

如何检查进程id (PID)是否存在
EN

Stack Overflow用户
提问于 2010-06-15 17:30:27
回答 6查看 324.5K关注 0票数 213

在bash脚本中,我想(用伪代码)执行以下操作:

代码语言:javascript
复制
if [ a process exists with $PID ]; then

    kill $PID 

fi

条件语句的适当表达式是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-15 17:40:23

要检查进程是否存在,请使用

代码语言:javascript
复制
kill -0 $pid

但就像@unwind said一样,如果您希望它在任何情况下终止,那么只需

代码语言:javascript
复制
kill $pid

否则,您将遇到竞争条件,在第一次kill -0之后,进程可能已经消失。

如果您想忽略kill的文本输出,并根据退出代码执行一些操作,您可以

代码语言:javascript
复制
if ! kill $pid > /dev/null 2>&1; then
    echo "Could not send SIGTERM to process $pid" >&2
fi
票数 204
EN

Stack Overflow用户

发布于 2014-06-24 21:23:26

如果您的系统实现了procfs接口,您可以只检查是否有一个特殊的文件/proc/$PID/status

代码语言:javascript
复制
if [ -e /proc/$PID/status ]; then
    echo "process exists"
fi

否则,您可以使用ps程序:

代码语言:javascript
复制
if [ -n "$(ps -p $PID -o pid=)" ]

在后一种形式中,-o pid=是一种输出格式,它只显示没有标题的进程ID列。对于非空字符串运算符-n,引号为necessary,以提供有效结果。

票数 76
EN

Stack Overflow用户

发布于 2010-06-15 17:40:20

带有-p $PIDps命令可以执行以下操作:

代码语言:javascript
复制
$ ps -p 3531
  PID TTY          TIME CMD
 3531 ?        00:03:07 emacs
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3043978

复制
相关文章

相似问题

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