GNU/Linux >> Znalost Linux >  >> Linux

Linux – protokol minulých vláken, která jsou nyní uzavřena?

Někdy mám nečestný proces Java, který zabírá 100 % mého CPU a jeho teplota vyskočí asi o 30 C (obvykle vede k pádu, pokud není zabit).

Problém je v tom, že to nikdy nedokážu identifikovat (má dlouhý seznam parametrů a podobně) nebo to analyzovat, protože to musím tak rychle zabít.

Existuje nějaký protokol, do kterého bych se mohl podívat, abych zjistil identitu minulých procesů, které jsem zabil? Pokud ne, existuje způsob, jak tento proces zachytit, až se příště objeví?

Pokud na tom záleží, mám OpenSuse 11.4.

Přijatá odpověď:

Ne, standardně ne. Existuje něco jako příliš mnoho protokolování (zejména když začnete riskovat protokolování při zápisu záznamu do protokolu…).

BSD procesní účtování (pokud jej máte, spusťte lastcomm ), pokud je aktivní, zaznamenává název každého provedeného příkazu a některé základní statistiky, nikoli však argumenty.

Subsystém auditu je obecnější a flexibilnější. Nainstalujte audit balíček a přečtěte si průvodce auditem SuSE (většinou část o pravidlech), nebo zkuste

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

Nebo:místo jeho zabití kill -STOP to. STOP pozastaví proces, žádné otázky. Získáte možnost pokračovat (kill -CONT ) nebo ukončit (kill -KILL ) později. Dokud proces stále probíhá, můžete zkontrolovat jeho příkazový řádek (/proc/12345/cmdline ), jeho paměťovou mapu (/proc/12345/maps ) a tak dále.

Nebo:připojte k procesu debugger a pozastavte jej. Je to stejně jednoduché jako gdb --pid 12345 (mohou existovat lepší možnosti pro proces Java); připojení ladicího programu okamžitě pozastaví proces (pokud ladicí program ukončíte, proces obdrží SIGCONT a bude pokračovat).

Všimněte si, že to vše zachycuje pouze procesy na úrovni operačního systému, nikoli vlákna JVM. Chcete-li ladit vlákna, musíte se obrátit na funkce JVM.


Linux
  1. Jak zabít proces v Linuxu pomocí příkazu?

  2. 20 Soubory protokolu Linux, které jsou umístěny v adresáři /var/log

  3. Co jsou linuxové procesy, vlákna, lehké procesy a stav procesu

  1. linuxový skript pro zabití procesu Java

  2. Jak pozastavit/obnovit proces v Linuxu

  3. Jsou vlákna jádra Linuxu skutečně procesy jádra?

  1. Jak zabít proces zombie na Linuxu

  2. Linux – Kdy nemám zabít -9 A proces?

  3. Jsou vlákna implementována jako procesy v Linuxu?