カーネルによって強制終了されたプロセスのリストはどこで確認できますか?


33

カーネルがどのプロセスを強制終了したかを確認する方法はありますか?時々、サーバーにログオンして、一晩中実行するはずの何かが8時間で停止したことがわかり、それがアプリケーションの実行なのか、カーネルなのかわかりません。

回答:


30

カーネルがプロセスを強制終了した場合(システムのメモリが不足したため)、カーネルログメッセージが表示されます。チェックイン/var/log/kern.log(Debian / Ubuntuでは、他のディストリビューションがカーネルログを別のファイルに送信する場合がありますが、通常は/var/logLinuxの下で)。

OOMキラー(メモリ不足キラー)がトリガーされた場合、十分な仮想メモリがないことを意味することに注意してください。スワップ(または、おそらくRAM)を追加します。

一部のプロセスクラッシュもカーネルログに記録されます(セグメンテーションエラーなど)。

プロセスがcronから開始された場合、エラーメッセージが記載されたメールが必要です。プロセスが端末のシェルから開始された場合、その端末のエラーを確認します。プロセスを実行screenして、午前中に再びターミナルを表示します。OOM-killerがトリガーされた場合、cronまたはスクリーンプロセスも強制終了した可能性があるため、これは役に立たない可能性があります。しかし、OOMキラーに遭遇した場合、それが修正する必要がある問題です。


のようなスレッドキルメッセージは何/var/log/kern.logですか?

12

ここでプロセスアカウンティングが役立ちます。

簡単に言うと:

apt-get install acct

次に、次のようなコマンドを試してください。

lastcomm
sa

またはUbuntuの場合:

lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct

見る:

更新

奇妙なことに、pacctファイルには終了ステータスに関する情報がありますが、印刷されていlastcommないsaようです。

したがって、私が見る限り、情報にアクセスするには独自のCプログラムを作成する必要があります。

更新2

終了コードを出力するバージョンは次のとおりです。

最後の2つのフィールドは、シグナルの場合は「S」、終了の場合は「E」で、その後にシグナル番号または終了ステータスが続きます。

したがって、あなたの場合は、おそらくSIGTERMを取得した「S 15」を探しているでしょう。

sleep                X mikel    stdin      0.00 secs Fri Mar 25 20:15 S  15

「E 0」と比較すると、プロセスはエラーなしで終了しました。

true                   mikel    stdin      0.00 secs Fri Mar 25 20:16 E   0

最小限のテストのみ。


-1

sudoサービス--status-all

このコマンドは、現在実行されているサービスと、開始または停止されていないサービスを示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.