developer's diary

最近はc#のエントリが多いです

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)