(オペレーティングシステム:Debianバリアント)
ゾンビ状態のプロセスです。PPid
プロセスに属しますgvim
。内容/proc/[pid]/wchan
はdo_exit
、
/comm
は以下のようにsh
空/cmdline
です。/status
これがバグでしょうかgvim
? Wikipediaのエントリからゾンビプロセスプログラムは自発的に呼び出しを拒否する可能性があると読んでいましたwait
が、これは
gvim
かなりの時間アイドル状態のセッションに関するものです。プロセスを終了しましたが、gvim
ゾンビはまだ周りに隠れています。これはオペレーティングシステムのバグを表しますか?
再びウィキペディアで:
ゾンビプロセスは通常、親プログラムが実行されなくなった場合のオペレーティングシステムのバグを表します。
init
放棄されたプロセスはどのくらいの頻度で収集されますか?gvim
死んでから少なくとも60分が経ちましたが、まだ残っています。
一方、そうかもしれないsh
し、そうでないかもしれませんかgvim
?
これ/status
文書SigQ
ステータスは0です。
$ less /proc/30339/status
Name : sh
State : Z (zombie)
Tgid : 30339
Pid : 30339
PPid : 29673
TracerPid: 0
Uid : 1000 1000 1000 1000
Gid : 1000 1000 1000 1000
FDSize : 0
Groups : 4 7 20 24 27 29 30 46 107 124 127 1000
Threads : 1
SigQ : 0/30658
SigPnd : 0000000000000000
ShdPnd : 0000000000000000
SigBlk : 0000000000000000
SigIgn : 0000000000003001
SigCgt : 0000000000010002
CapInh : 0000000000000000
CapPrm : 0000000000000000
CapEff : 0000000000000000
CapBnd : ffffffffffffffff
Cpus_allowed : 3
Cpus_allowed_list: 0-1
Mems_allowed : 1
Mems_allowed_list: 0
voluntary_ctxt_switches : 2
nonvoluntary_ctxt_switches: 3
私の美しい睡眠を台無しにしたわけではありませんが、ただ気になって…
ベストアンサー1
ゾンビを見ることは、ゾンビを生成したプロセスのバグを示すことがよくあります。プロセスはゾンビを収集するwait
か(呼び出しを介して)明示的に無視する必要がありますSIGCLD
(またはSA_NOCLDWAIT
フラグを設定する必要があります)。
しかし、これは小さな間違いです。ゾンビプロセスは、プロセステーブル内のリソース量がわずかである1つのアイテムのみを消費します。問題は、プロセスが数千のゾンビを残している場合にのみ深刻になります。
ゾンビの親プロセスを終了していません。そうでなければ、ゾンビは消えます。プロセス29673(ゾンビプロセスの親プロセス)はまだ生きていて実行中です(ただしwait
実行されていません)。これはGvimではなくそのサブプロセスの1つであるか、Gvimウィンドウを閉じましたが、プログラムはまだ実行中です。ps l 29673
このプロセスが何であるかを確認するには、実行してください。