读取/proc/pid/comm里进程名字时是其父进程的名字怎么解决
时间: 2024-09-10 18:14:02 浏览: 46
读取/proc/cmdline 文件中的标志位信息
当通过`/proc/<pid>/comm`路径读取到的进程名字并不是你期望的父进程名称时,这通常是因为`/proc/pid`目录显示的是当前进程的信息,而不是其父进程的信息。如果你想获取父进程的名字,你需要访问父进程的PID。
首先,你需要找到目标进程的父进程ID(PPID),这通常可以在`/proc/<pid>/status`文件中查找`PPid`字段,它会显示父进程的进程ID。例如:
```bash
cat /proc/<target_pid>/status | grep Pid
```
然后,你可以使用相同的步骤去读取`/proc/<parent_pid>/comm`,得到父进程的名字。请注意替换 `<target_pid>` 和 `<parent_pid>`。
如果你需要脚本化这个过程,可以写一个小脚本来递归地获取并打印所有进程及其父进程的名字:
```bash
#!/bin/bash
get_parent_comm() {
local pid=$1
if [ -z "$pid" ]; then
echo "No PID provided"
return
fi
comm=$(cat /proc/$pid/comm)
echo "Process $pid with name: $comm"
parent_pid=$(cat /proc/$pid/status | grep PPid | awk '{print $3}')
if [ ! -z "$parent_pid" ]; then
get_parent_comm $parent_pid
fi
}
# 调用函数,传入你想查询的进程PID
get_parent_comm <target_pid>
```
阅读全文