首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BASH命令: pkill/pgrep

BASH命令: pkill/pgrep
EN

Stack Overflow用户
提问于 2014-12-23 00:13:46
回答 1查看 910关注 0票数 2

我很难理解使用pgrep与使用ps | grep之间的区别。

除了pgrep只列出PID之外,还有什么不同呢?

当我在我的终端后台运行一个kwrite实例,并使用GUI打开一个实例时,为什么ps | grep kwrite给出的输出只有一个PID,而两个kwrite实例正在运行呢?

稍微不同的是,为什么使用pkill来杀死崩溃的kwrite实例并不是一种杀死进程的好方法?我能想出的唯一解释是,它会杀死所有包含字符串" kwrite“的进程,而这可能不仅仅是我想要杀死的kwrite实例。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-23 00:55:34

  1. ps | grep将分叉2个进程,pgrep只分一个。
  2. ps | grep whatever也可能会列出grep whatever,这取决于ps何时退出,pgrep whatever不会。
  3. ps将需要附加命令行开关来显示两个kwrite进程。(见: man ps,下次尝试ps -ef )

默认情况下,ps作为当前用户选择具有相同有效用户ID (euid=EUID)的所有进程,并与调用方相关联。

尝试运行一个手工编写实例,最好使用重要的和未保存的数据来查找,为什么使用pkill杀死崩溃的实例可能不是最聪明的主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27612396

复制
相关文章

相似问题

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