我正在尝试根据进程 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))