終了できないプロセスが5つあり、kill -9 $PID
実行時にcat /proc/$PID/cmdline
現在のセッションが中断されます。たぶんゾンビプロセスかもしれません。
実行すると、ps -ef or htop
現在のセッションも中断されます。しかし、うまくtop
いきps -e
ます。
したがって、ファイルシステムが応答しないのに2つの問題があるようです。
これは仮想マシンを実行している本番マシンなので、再起動できません。
次のプロセスIDは機能しません:16181 16765 5985 7427 7547
これらのプロセスの親プロセスはinitです。
├─collectd(16765)─┬─{collectd}(16776)
│ ├─{collectd}(16777)
│ ├─{collectd}(16778)
│ ├─{collectd}(16779)
│ ├─{collectd}(16780)
│ └─{collectd}(16781)
├─collectd(28642)───{collectd}(28650)
├─collectd(29868)─┬─{collectd}(29873)
│ ├─{collectd}(29874)
│ ├─{collectd}(29875)
│ └─{collectd}(29876)
Qemuプロセスの1つが機能しない
|-qemu-system-x86(16181)-+-{qemu-system-x86}(16232)
| |-{qemu-system-x86}(16238)
| |-{qemu-system-x86}(16803)
| |-{qemu-system-x86}(17990)
| |-{qemu-system-x86}(17991)
| |-{qemu-system-x86}(17992)
| |-{qemu-system-x86}(18062)
| |-{qemu-system-x86}(18066)
| |-{qemu-system-x86}(18072)
| |-{qemu-system-x86}(18073)
| |-{qemu-system-x86}(18074)
| |-{qemu-system-x86}(18078)
| |-{qemu-system-x86}(18079)
| |-{qemu-system-x86}(18086)
| |-{qemu-system-x86}(18088)
| |-{qemu-system-x86}(18092)
| |-{qemu-system-x86}(18107)
| |-{qemu-system-x86}(18108)
| |-{qemu-system-x86}(18111)
| |-{qemu-system-x86}(18113)
| |-{qemu-system-x86}(18114)
| |-{qemu-system-x86}(18119)
| |-{qemu-system-x86}(23147)
| `-{qemu-system-x86}(27051)
答え1
あなたにはゾンビはありません。cat /proc/$PID/cmdline
ゾンビの処理に問題はありません。もしkill -9
プログラムを殺すことはありませんこれは、プログラムが中断することなくI / O操作を実行していることを意味します。これは通常、次の3つのうちの1つを表します。
- ネットワークファイルシステムが応答しません。
- カーネルエラー;
- ハードウェアエラーです。
ps
上記の理由の1つによってカーネルが提供しないプロセス実行パスなどの特定の情報を読み取ろうとすると、ユーティリティが中断される可能性があります。
努力するcat /proc/16181/syscall
16181がどのプロセスを実行しているかを確認してください。システムの実行方法に応じて動作する場合と動作しない場合があります。
問題がネットワークファイルシステムの場合は、強制的にマウントまたはオンラインに切り替えることができます。問題がカーネルまたはハードウェアのエラーである場合に実行できる手順は、エラーの性質によって異なります。再起動(固定カーネルへのアップグレードまたは破損したハードウェアの交換)を強くお勧めします。
答え2
他の答えは、これがゾンビプロセスであると仮定しています。ゾンビプロセスは、実行が完了したが親プロセスが終了ステータスを知りたい場合に備えて、まだプロセステーブルに残っているプロセスです。これは通常の現象であり、init
割り当てられたゾンビプロセスを自動的にクリーンアップします。
ゾンビプロセスは中断を引き起こさないので、これは問題ではないかのように聞こえます。システムコールまたはドライバの停止の場合、プロセスは中断できない可能性があります。説明が良いです。ここ。
答え3
Linuxでゾンビプロセスを見つけるには:
$ ps axo stat、ppid、pid、comm grep -w無効|
Z 555 10242クソゾンビ<もう存在しない>
まず、killコマンドを使用して、ゾンビプロセスの親プロセスにSIGCHLD信号を送信できます。上記のコマンドは、各ゾンビプロセスのPPID(親プロセスのPID)を提供します。この例では、ゾンビのPPIDはです555
。
$ sudo Kill -s SIGCHLD 555
ゾンビプロセスがまだ消えていない場合は、ゾンビプロセスの親プロセス(555など)を終了できます。
$ sudo kill -9555
親プロセスが終了すると、ゾンビプロセスはLinux上のすべてのプロセスの親プロセスであるinitプロセスによって採用されます。 initプロセスはwait()
ゾンビプロセスを選択するために定期的に呼び出されます。
答え4
ゾンビの両親を殺さなければ、ゾンビを殺すことができます。ゾンビプロセスはすべてのリソースを解放し、親プロセスが終了ステータスを取得するのを待っています。親プロセスがwait
子プロセスの終了状態を取得するために実行されない場合、ゾンビになります。ゾンビの両親を殺すとinit
終了状態になり、ゾンビは最終的に死にます。