Existe um log de segmentos anteriores que estão fechados agora?

3

Às vezes, eu tenho um processo Java nocivo, que ocupa 100% da minha CPU e faz com que ela atinja a temperatura de 30C (geralmente resultando em uma falha se não for morta).

O problema é que eu nunca posso realmente identificá-lo (ele tem uma longa lista de parâmetros e coisas assim) ou analisá-lo porque eu tenho que matá-lo tão rapidamente.

Existe algum tipo de log que eu possa ver para ver a identidade dos processos anteriores que eu matei? Se não, existe uma maneira de eu pegar esse processo da próxima vez que aparecer?

Se for importante, sou o OpenSuse 11.4.

    
por n0pe 23.11.2011 / 22:20

2 respostas

7

Não, não por padrão. Existe uma grande quantidade de logs (especialmente quando você começa a arriscar registrar a ação de escrever uma entrada de log ...).

contabilidade do processo BSD (se você tiver, execute lastcomm ), se ativo, registra o nome de cada comando executado e algumas estatísticas básicas, mas não os argumentos.

O subsistema de auditoria é mais geral e mais flexível. Instale o pacote audit e leia o guia de auditoria SuSE (principalmente a parte sobre regras ) ou tente

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

Ou: em vez de eliminá-lo, kill -STOP dele. O STOP suspende o processo, sem perguntas. Você tem a opção de retomar ( kill -CONT ) ou encerrar ( kill -KILL ) mais tarde. Enquanto o processo ainda estiver por aí, você pode inspecionar sua linha de comando ( /proc/12345/cmdline ), seu mapa de memória ( /proc/12345/maps ) e assim por diante.

Ou: Anexe um depurador ao processo e pause-o. É tão simples quanto gdb --pid 12345 (pode haver opções melhores para um processo Java); anexar um depurador imediatamente pausa o processo (se você sair do depurador, o processo recebe um SIGCONT e continua).

Observe que tudo isso captura apenas processos no nível do sistema operacional, não encadeamentos da JVM. Você precisa ativar recursos da JVM para depurar threads.

    
por 23.11.2011 / 23:04
0

Há utilidade não apenas para registrar, mas para monitorar e gerenciar processos. É monit - utilitário muito flexível e útil. Pode impedir que algum processo tome 100% (ou o que você configura) da CPU (ou outros recursos) por algum tempo (tanto quanto você precisa) pelo reinício automático do processo. E está registrando essas situações anormais em seu arquivo de log ou no syslog.

Você pode encontrar muitos exemplos de configuração aqui .

    
por 26.02.2012 / 09:58