bekkou68 の日記

Gogengo! や IT 技術など。

『Working with Unix Processes』の Processes Have Parents を読みました

はじめに

『Process Have IDs』 に引き続き読みました。

大事なこと

すべてのプロセスは親プロセスを持っている。たとえば zsh上で irb を実行した場合、zshirb の親プロセスとなる。このことは irb上の Process.ppid を ps -p することで確認できる。デーモンプロセスを見つける時に便利らしい。

試したこと

親プロセスをさかのぼるとどうなるのかなあと思い次のようにコマンドを実行してみました。プロセスID 17661 は端末上で実行した irb です。

$ ps -ef 17661
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501 17661 17660   0 水01PM ttys006    0:05.30 -zsh

$ ps -ef 17660
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0 17660   522   0 水01PM ttys006    0:00.02 login -pfq bekkou /bin/zsh

$ ps -ef 522
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501   522   521   0 221012  ??         4:23.43 SCREEN -U -U

... (snip) ...

$ ps -ef 120
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501   120     1   0 211012  ??         4:49.01 /sbin/launchd

$ ps -ef 1
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 211012  ??        10:12.81 /sbin/launchd

$ ps -ef 0
  UID   PID  PPID   C STIME   TTY           TIME CMD

どうやら /sbin/launchd というのがマシン起動時に最初に起動するプロセスのようです。OS は Mac OS です。

同じことを Gogengo! の動いているさくらVPSで試してみました。

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root         1     0  0 Jul22 ?        Ss     0:01 /sbin/init

今度は /sbin/init でした。こちらは CentOS。マシンの起動時には各OS で用意する起動用プロセスが実行されているようです。

気になること

$ kill -9 1

すると何が起きるのかなw

2013/2/1 追記。

$ kill -9 1
kill: kill 1 failed: operation not permitted

やってみたらちゃんとプロテクトされてました!

フレーズ

特になし