initのプロセスは1
会社の先輩のコメントで知りました。
さっそく手元のubuntuで確認。
[root@~]$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /sbin/init
おおぉ。一番最初に起動するからプロセスは1。
では2はなぁに?
[root@~]$ ps 2 PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd]
[kthreadd]ってなんだ!?
kthreadd は文字どおり、カーネルスレッド処理を行うために常駐するプロセス。
なんだかお腹いっぱい。。ps 3は止めとこう。
プロセスは固有の識別子(PID)を持っている
PIDはプロセスが開始したときに順番に割り当てられます。Linuxではシステムが起動すると、まず最初にinitというプログラムが実行されます。そのため、initのPIDは常に1となります。またプロセスは、そのプロセスを開始したユーザから引き継がれたUID(ユーザID)と、グループを表すGID(グループID)も持っています。UIDとGIDによってそのプロセスがシステムのどの部分にアクセス出来るかを制御しています。つまりプロセスは、プロセスを実行したいユーザ権限で動作することになります。
LPIC レベル1 第4版 P.166より引用
Bootchartで出力した画像を見る。
一番上がinitになっていました。
initにいろいろとぶら下がっている感じがします。
pstreeも見る。
[root@~]$ pstree -p init(1)─┬─NetworkManager(733)─┬─dhclient(1497) │ └─{NetworkManager}(1498) ├─acpid(918) ├─anacron(1908)───sh(1915)───run-parts(1917)───apt(1924)───update-apt-x+ ├─apache2(1225)─┬─apache2(1261) │ ├─apache2(1262) │ ├─apache2(1263) │ ├─apache2(1265) │ └─apache2(1266) ├─atd(911) ├─avahi-daemon(726)───avahi-daemon(727) ├─bonobo-activati(1411)───{bonobo-activat}(1416)