GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:registro dei thread passati che ora sono chiusi?

A volte, ho un processo Java canaglia che occupa il 100% della mia CPU e la fa saltare di circa 30°C di temperatura (di solito provocando un arresto anomalo se non viene ucciso).

Il problema è che non riesco mai a identificarlo (ha una lunga lista di parametri e cose) o ad analizzarlo perché devo eliminarlo così in fretta.

C'è una sorta di registro che posso guardare per vedere l'identità dei processi passati che ho ucciso? In caso contrario, c'è un modo per me di catturare quel processo la prossima volta che si presenta?

Se importa, sono OpenSuse 11.4.

Risposta accettata:

No, non per impostazione predefinita. Esiste una cosa come troppa registrazione (soprattutto quando inizi a rischiare di registrare l'azione di scrivere una voce di registro...).

Contabilità del processo BSD (se ce l'hai, esegui lastcomm ), se attivo, registra il nome di ogni comando eseguito e alcune statistiche di base, ma non gli argomenti.

Il sottosistema di audit è più generale e più flessibile. Installa il audit pacchetto e leggi la guida all'audit di SuSE (principalmente la parte sulle regole), oppure prova

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

Oppure:invece di ucciderlo, kill -STOP esso. Lo STOP sospende il processo, senza fare domande. Hai la possibilità di riprendere (kill -CONT ) o terminare (kill -KILL ) dopo. Finché il processo è ancora attivo, puoi ispezionarne la riga di comando (/proc/12345/cmdline ), la sua mappa di memoria (/proc/12345/maps ) e così via.

Oppure:allega un debugger al processo e mettilo in pausa. È semplice come gdb --pid 12345 (potrebbero esserci opzioni migliori per un processo Java); il collegamento di un debugger interrompe immediatamente il processo (se esci dal debugger, il processo riceve un SIGCONT e riprende).

Nota che tutto ciò cattura solo i processi a livello di sistema operativo, non i thread JVM. Devi passare alle funzionalità JVM per eseguire il debug dei thread.


Linux
  1. Come uccidere un processo su Linux usando il comando?

  2. kill Esempi di comandi in Linux

  3. Come mettere in pausa/riprendere un processo in Linux

  4. I thread del kernel di Linux sono davvero processi del kernel?

  5. I thread sono implementati come processi su Linux?

Come uccidere un processo in Linux? Comandi per terminare

Come uccidere un processo in Linux

Kill Command in Linux

Come uccidere i processi Zombie in Linux

5 modi rapidi per uccidere un processo in Linux

Come KILL un processo su Linux