GNU/Linux >> Linux の 問題 >  >> Linux

Linux –現在閉じられている過去のスレッドのログ?

時々、CPUの100%を占有し、温度が約30°C上昇する不正なJavaプロセスがあります(通常、強制終了しないとクラッシュします)。

問題は、私はそれを本当に特定することも(パラメータなどの長いリストを取得することも)、それを分析することもできないということです。なぜなら、それをすぐに殺さなければならないからです。

私が殺した過去のプロセスのアイデンティティを確認するために見ることができる一種のログはありますか?そうでない場合は、次に表示されたときにそのプロセスをキャッチする方法はありますか?

重要な場合、私はOpenSuse11.4です。

承認された回答:

いいえ、デフォルトではありません。ロギングが多すぎるなどの問題があります(特に、ログエントリを書き込むアクションをロギングするリスクを冒し始めた場合…)。

BSDプロセスアカウンティング(ある場合は、lastcommを実行します )、アクティブな場合、実行されたすべてのコマンドの名前といくつかの基本的な統計を記録しますが、引数は記録しません。

監査サブシステムは、より一般的で柔軟性があります。 auditをインストールします パッケージ化してSuSE監査ガイド(主にルールに関する部分)を読むか、試してみてください

auditctl -A exit,always -F path=/usr/bin/java -S execve

または:それを殺す代わりに、kill -STOP それ。 STOPはプロセスを一時停止し、質問はありません。再開するオプションが表示されます(kill -CONT )または終了(kill -KILL ) 後で。プロセスがまだ存在している限り、そのコマンドライン(/proc/12345/cmdline)を調べることができます。 )、そのメモリマップ(/proc/12345/maps )など。

または:デバッガーをプロセスに接続して一時停止します。 gdb --pid 12345と同じくらい簡単です (Javaプロセスにはより良いオプションがあるかもしれません);デバッガーを接続すると、プロセスはすぐに一時停止します(デバッガーを終了すると、プロセスはSIGCONTを受け取り、再開します)。

これはすべて、JVMスレッドではなく、OSレベルのプロセスのみをキャッチすることに注意してください。スレッドをデバッグするには、JVM機能を使用する必要があります。


Linux
  1. Linux – -9プロセスを強制終了すべきではないのはいつですか?

  2. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  3. Linux スレッドの紹介 – パート I

  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linux でプロセスを一時停止/再開する方法

  3. スレッドは Linux でプロセスとして実装されますか?

  1. /var/log ディレクトリにある 20 個の Linux ログ ファイル

  2. Linux プロセス、スレッド、軽量プロセス、およびプロセス状態とは

  3. Linux での kill コマンドの例