mur*_*uru 28
您正在寻找pstree命令。
pstree它本身会以树的形式列出所有进程(就像lsblk做的那样)。您也可以使用该-p标志来获取列出的 PID,以及-s显示父进程:
$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
|-{gdbus}(605)
|-{gmain}(603)
`-{probing-thread}(606)
Run Code Online (Sandbox Code Playgroud)
一种(可能)符合 POSIX 的获取子 PID 的方法(我在其他地方的评论中提到过):
ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'
Run Code Online (Sandbox Code Playgroud)
这告诉ps写入所有进程的父 PID 和 PID(没有标题),然后用于awk查看哪些行在第一个字段(父 PID)中具有给定的 PID,并打印相应的第二个字段(子 PID)。
ste*_*ver 13
如果您只想查看其 PID 为进程的直接子进程,则123可以使用该ps命令的--ppid选项:
ps --ppid 123
Run Code Online (Sandbox Code Playgroud)
您可以将其与pidof命令结合使用以按名称获取进程的子进程,即给定一个名为的进程foo
ps --ppid $(pidof foo)
Run Code Online (Sandbox Code Playgroud)
v2r*_*v2r 10
另一种选择是使用系统监视器(预装)。在 SM 菜单栏中标记“依赖项”选项,在“查看”下,以获得视觉反馈,显示父进程和子进程,如下面的屏幕截图所示。
我自己更喜欢 CL(命令行),并建议那些每天使用 Linux(在这种情况下使用 Ubuntu)的人明智地投入时间学习基本命令,而不是 GUI 应用程序,或者至少能够掌握两者一定程度!

小智 6
我不是专家,但阅读上述答案在我看来,可能有一种更直接的方法可以通过 proc 文件系统来做到这一点,例如在脚本中以编程方式使用而不是人类可读的显示。确实有:对于 ID 代码为 $mypid 的进程,其子进程列在
/proc/$mypid/task/$mypid/children
Run Code Online (Sandbox Code Playgroud)
例如
$ cat /proc/3123/task/3123/children
3131 3133
Run Code Online (Sandbox Code Playgroud)
同样,您可以通过文件中的“PPid”条目获取父进程 ID
/proc/$mypid/task/$mypid/status
例如
$ grep PPid /proc/3131/task/3131/status
PPid: 3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123
Run Code Online (Sandbox Code Playgroud)
不过,我不确定这超出了 Linux 系统的可移植性。