从特定进程 ID 获取父/子进程 ID

从特定进程 ID 获取父/子进程 ID

我正在尝试根据进程 ID 及其子进程、父进程和祖父母名称来获取进程的名称。

我曾用于ps -eo获取进程 ID 的名称,但不适用于其任何子进程、父进程或祖父母。

答案1

尝试这个:

pstree -pls your_pid

- 显示进程树。

  • -p显示 PID。 PID 在每个进程名称后面的括号中显示为十进制数字。

  • -s显示指定进程的父进程。

  • -l显示长行。默认情况下,行将被截断为 COLUMNS 环境变量或显示宽度。

答案2

要获取进程名称(给定其 pid):

pid=42
ps -o comm= -p $pid

要获取给定 pid 的子进程的名称(Linux procps):

ps -o comm= --ppid $pid

要获取给定 pid (POSIX) 的子进程的名称:

for cpid in $(ps -eo pid=,ppid= | awk -v pid=$pid '$2==pid{print $1}'); do ps -o comm= -p $cpid; done

要获取给定 pid 的父进程的名称:

ps -o comm= -p $(ps -o ppid= -p $pid)

要获取给定 pid 的祖父母进程的名称(假设您还没有访问 init 系统):

ps -o comm= -p $(ps -o ppid= -p $(ps -o ppid= -p $pid))

答案3

您可以使用以下命令获取子进程 ID 列表:

pgrep -P $parent_pid

归功于这个答案

相关内容