cac*_*che 85 command-line bash process
如何从给定孩子的 PID 中获取父 PID?
我知道我可以在 下手动检查它/proc,我想知道在 Ubuntu 中是否有更聪明/更好的方法来实现这一点。请注意,父母可能会或可能不会被杀死。
谢谢
ish*_*ish 100
用 ps -o ppid=
ps -o ppid= 2072返回值2061等。ps -o ppid= -C foo通过命令给出进程的 PPID foo。您也可以使用老式的ps | grep: ps -eo ppid,comm | grep '[f]oo'。ps -f 2072退货
UID PID PPID C STIME TTY STAT TIME CMD izx 2072 2061 0 07:16 ? S 0:00 /usr/lib/pulseaudio/pulse/gconf-helper
pstree关系是:pstree -s -p 2072:
init(1)???pulseaudio(2061)???gconf-helper(2072)
Gil*_*not 26
echo $PPID
Run Code Online (Sandbox Code Playgroud)
如果您需要来自该父 pid 的命令:
cat /proc/$PPID/comm
Run Code Online (Sandbox Code Playgroud)
如果您需要完整的命令行(带有所有选项):
cat /proc/$PPID/cmdline
Run Code Online (Sandbox Code Playgroud)
$PPID 由shell定义,它是父进程的PID/proc/,您有一些包含每个进程的 PID 的目录。然后,如果你cat /proc/$PPID/comm,你回显PID的命令名称Win*_*nix 11
pstree的命令名称使用pstree您可以按子进程名称搜索并获取进程 ID (PID) 以及子进程的父进程、祖父进程和任何子进程:
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
Run Code Online (Sandbox Code Playgroud)
在这种情况下sleep是子命令,它的 PID 是8414. 它的父 ID 是 841,称为display-auto-brightness。祖父sh进程是一个 shell ( ),进程 ID 为839。曾祖父母cron的进程 ID 为795。曾曾祖父母cron的进程 ID 也为763。
如果要按进程 IDsleep而不是名称搜索,可以使用:
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
Run Code Online (Sandbox Code Playgroud)
请注意,sleep进程 ID 更改为14653。父sleep进程(PID 841) 休眠 1 分钟,唤醒一秒钟,然后启动一个新命令,该命令获取新的进程 ID。这是搜索sleep比按进程 ID 搜索更容易的另一个原因。
此代码取自:根据日出和日落自动调整显示亮度并适应此问题。
要查看一直返回到引导过程的嵌套链,请使用 PID 而不是名称:
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
??cron,763 -f
??cron,795 -f
??sh,839 -c /usr/local/bin/display-auto-brightness
??display-auto-br,841 /usr/local/bin/display-auto-brightness
??sleep,8541 60
Run Code Online (Sandbox Code Playgroud)
注意:又过了一分钟,sleep 命令获得一个新的 PID (8541)。
ps -efj 也可以用于相同的。
例如,
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
241901 次 |
| 最近记录: |