ps -a 找不到正在运行的进程

ps -a 找不到正在运行的进程

我可以找到一个名为typora的进程htop

在此输入图像描述

但我无法从 ps 或 pstree 追踪它

$ ps -a | grep -i typora
 9696 ttys003    0:00.01 grep -i typora

$ pstree | grep -i typora 
 |     |--- 09713 me grep -i typora
 |--= 00258 me /Applications/Typora.app/Contents/MacOS/Typora -psn_0_40970

如何从 ps 命令中找到它?

答案1

来自psmacOS 的手册(我的重点):

-a

显示有关其他用户进程以及您自己的进程的信息。 这将跳过任何没有控制终端的进程,除非-x还指定了该选项。

在没有控制终端的 macOS 上运行的应用程序(例如窗口化 Finder 应用程序)不会被 列出ps -a。要列出这些,请使用ps -ax.

或者,您可以使用-A-e选项:

-A

显示其他用户进程的信息,包括那些没有控制终端的进程。

-e

相同-A

如果您正在寻找有关特定流程的信息姓名,考虑使用pgrep

pgrep Typora

(请注意,大小写很重要,除非您使用pgrep -i

要使用特定名称向进程发出信号,请使用pkill而不是尝试grep输出ps.

pgrep请参阅和 的手册pkill

另外,即使这不是您问题的一部分,pstree也可以-s选择仅显示包含具有特定名称的进程的进程树的分支。

答案2

简短的答案是:添加到psswitch H。来自男人: H Show threads as if they were processes

长答案下来了。

我知道这个问题已经5岁了,问题已得到解答,答案已被接受,但是,一方面我对此不太满意,另一方面让我带来变体,我希望这会有所帮助。

htop显示进程及其线程,可以通过t在交互模式下按或最初通过选项“ -t --tree Show the tree view”来轻松检查。

由于typora现在不是免费的,那么作为示例,我使用了 command mate-terminal。第一次调用创建进程,而后续调用从第一次调用创建线程。所以,简单之后htop我们有

在此输入图像描述

按下后t

在此输入图像描述

例如,当我们使用 command 时ps axu,我们只看到第一个进程,看不到线程,但它们列在 下/proc/<pid>/task/

在此输入图像描述

要查看线程,我们可以H在 BSD stile 中使用 switch,因此ps axuH将显示进程及其线程,现在我们可以看到相同的图片,我们在htop

在此输入图像描述

所描述的行为是不必要的,并且是固有的mate-terminal,并且正如我猜测的那样typora。例如,每次调用konsolecrates 新进程并被视为 under htop,因此由ps axu

答案在 debian 11.6 中测试。

相关内容