概要
Dockerを触っていたらorphan(孤児の意)というプロセスの存在を知ったのでゾンビプロセスとの違いを調べてみた。
ゾンビプロセスとは
- 処理が終了した子プロセス
- プロセステーブルに残った状態で親プロセスのwaitを待つ
- システムリソースは使用しないが、PIDは保持される
- ゾンビプロセスが大量に増えると、使用可能なPIDが減り、他のプロセスを起動できなくなる
- ゾンビプロセスの確認方法
ps aux
でstatがZ、末尾がdefunctのものがゾンビプロセス
ps -ef | grep defunct
でゾンビプロセスだけ出力
- ゾンビプロセスのkill
孤児プロセス
- 親プロセスがwaitせずに終了してしまったプロセス
- initプロセス(PIDが1)の子プロセスとなり、initプロセスが親(≒里親)となる
- 孤児プロセスの確認方法
ps -elf | head -1; ps -elf | awk '{if ($5 == 1 && $3 != "root") {print $0}}' | head
- 孤児プロセスのkill
参考