先日の「略語重要 - 自分の仕事を憎むには人生は余りにも短い」のエントリにuid:rin51からNetBSDだと違うよっていう指摘をもらったので自分の持ってるマシンとかオンラインマニュアルで詳しく調べてみた。
アドレスが書いてあるのはオンラインマニュアル。書いてないのは実機のmanコマンドの結果です。
HPUX11(http://docs.hp.com/ja/B2355-90851/ps.1.html)
0 存在しない S 休眠状態 W 待ち状態 R 動作中 I 途中 Z 終了 T 停止 X 成長
AIX
O Nonexistent R Running S Sleeping W Swapped Z Canceled T Stopped
Solaris10(http://docs.sun.com/app/docs/doc/819-1210/6n3j74jru?l=ja&a=view)
O プロセスは、プロセッサ上で実行中 S 休止状態。プロセスは、イベントが完了するのを待っている R 実行可能状態。プロセスは、実行待ち行列上にある Z ゾンビ状態。プロセスは終了していて、親プロセスは待っていない T ジョブ制御シグナルにより、もしくはトレース状態にあるため、プロセスは停止されている
Linux (http://www.linux.or.jp/JM/html/procps/man1/ps.1.html)
D 割り込み不可能なスリープ状態 (通常 IO 中) R 実行中または実行可能状態 (実行キューにある) S 割り込み可能なスリープ状態 (イベントの完了を待っている) T ジョブ制御シグナルまたはトレースされているために停止中の状態 W ページング状態 (2.6.xx カーネルからは無効) X 死んだ状態 (見えるべきではない) Z 終了したが、親プロセスによって回収されなかった、消滅した (ゾンビ) プロセス
Ubuntu 6.06
D Uninterruptible sleep (usually IO) R Running or runnable (on run queue) S Interruptible sleep (waiting for an event to complete) T Stopped, either by a job control signal or because it is being traced. W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z Defunct ("zombie") process, terminated but not reaped by its parent.
FreeBSD (http://www.jp.freebsd.org/cgi/mroff.cgi?sect=1&cmd=&lc=1&subdir=man&dir=jpman-6.0.0%2Fman&man=ps#toc)
D プロセスはディスク (あるいは他の割り込み不可能な短期間の) 待ち状態です。 I プロセスは idle 状態 (20 秒以上 sleep している) です。 L プロセスはロック獲得を待っている状態です。 R プロセスは runnable 状態です。 S プロセスは 20 秒未満の sleep 状態です。 T プロセスは stop している状態です。 W スレッドは割り込みアイドル状態です。 Z プロセスは死んでいる状態 (ゾンビ) です。
比較してみる
マニュアルが英語日本語入り乱れているので細かい表現の違いが気になるが表にしてみたらこんな感じかな
Eng | JPN | HPUX | AIX | Solaris | Linux | Ubuntu | FreeBSD | |
---|---|---|---|---|---|---|---|---|
- | IO中 | - | - | - | D | D | D | |
Nonexistent | 存在しない | 0 | O | - | - | - | - | |
Sleeping | 休眠状態 | S | S | S | S | S | S | |
- | アイドル | - | - | - | - | - | I | |
- | ロック待機 | - | - | - | - | - | L | |
Swapped | 待ち状態 | W | W | - | W | W | W | |
Running | 動作中 | R | R | O | R | R | - | |
Runable | 実行可能状態 | - | - | R | R | R | R | |
- | 途中 | I | - | - | - | - | - | |
- | 終了 | Z | - | - | - | - | - | |
Canceled | - | Z | - | - | - | - | - | |
Zombi | ゾンビ | - | - | Z | Z | Z | Z | |
- | 死んだ状態 | - | - | - | X | X | - | |
Stopped | 停止 | T | T | T | T | T | T | |
- | 成長 | X | - | - | - | - | -- |
SolarisだけRunableとRunningの区別が有るようだ。LinuxはRunableもRunningも「R」で一緒に扱われている模様。
うーんなんで違うのかとかよくわからん。。。
とりあえずこれからはOSが変わったらちゃんとmanを確認するようにしよう。
そして間違ってそうなのでバシバシ突っ込みお願いします><