实际上,据我所知,孤儿进程是指父进程比子进程先终止的进程。在这种情况下,Init 进程实际上占据了父进程的位置。
但问题是,在我使用 Ubuntu 14.04 的系统中,子进程 PPID 不是 1 init(因为 1 是 Init 进程)。
在我的系统中,它显示 4617 init --user isted of 1 init
但在 12.04 版本中它显示为 1。
问题是什么?
答案1
在我的 Ubuntu 14.04.5 上,我看到两个名为 的进程init
,正在调查,ps -fp
我看到:
w3@aardvark:~(0)$ pgrep init
1
9511
w3@aardvark:~(0)$ ps -fp1,9511
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug09 ? 00:00:04 /sbin/init
w3 9511 9494 0 Aug09 ? 00:00:07 init --user
# follow the PPIDs back (omitted for brevity), end up with
w3@aardvark:~(0)$ ps -fp1,9511,9494,1770,1553
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug09 ? 00:00:04 /sbin/init
root 1553 1 0 Aug09 ? 00:00:00 gdm
root 1770 1553 0 Aug09 ? 00:00:00 /usr/lib/gdm/gdm-simple-slave --display-id /org/gnome/DisplayManager/Displays/_0
root 9494 1770 0 Aug09 ? 00:00:00 gdm-session-worker [pam/gdm-password]
w3 9511 9494 0 Aug09 ? 00:00:07 init --user
因此,有两个init
s。
一个是进程 1,/sbin/init
它是父进程已退出的进程,并且“拥有”该进程(毕竟,必须有人接收退出状态),这是自古以来的传统。
另一个(我的系统上是 9511)是我的图形登录的一部分,被称为“init”。
我确信,如果你做同样的调查,你也会发现同样的事。