histórico PID de um processo

3

O que eu quero saber são PIDs que foram atribuídos a um processo antes da última 2-3 reinicialização .

O cenário é depois que esse processo em particular falha, um arquivo de log é gerado e o PID do processo é concatenado ao nome do arquivo de log . Eu tenho esses 5 arquivos de log com o nome hs_err_PIDs . Quero confirmar se essas PIDs foram atribuídas ao processo que me preocupa, pois estou pouco confuso sobre isso.

Existe alguma maneira de fazer isso?

    
por stillStudent 08.05.2012 / 09:21

4 respostas

5

Você PODE encontrar essas informações nos arquivos de log do sistema /var/log/messages , /var/log/syslog . Alguns processos imprimem mensagens no log do sistema quando ele é iniciado. Por exemplo, o squid imprime o seguinte:

May  8 00:00:00 proxy squid[7274]: Squid Parent: child process 28819 started

Se o seu processo registra essas informações, você pode conhecer os antigos PIDs como 7274 .

Outra possibilidade é o caso quando seu processo causa um erro como segfault quando ele morre. Você encontrará um log como este:

May  8 00:00:00 proxy kernel: [1075746.767514] squid[24442]: segfault at 20 ip 00000000005bae26 sp 00007fff144918e0 error 4 in squid[400000+264000]

Você também pode encontrar o PID em tal registro de log 24442 .

Para casos futuros, você precisa registrar essas informações se estiver interessado em encontrá-las posteriormente.

    
por 08.05.2012 / 09:29
3

A menos que o aplicativo grave seu PID em um arquivo de log, você não poderá obter essas informações retrospectivamente. Daqui para frente, você poderia escrever um script wrapper para iniciar seu aplicativo e registrar os PIDs em um arquivo ou você poderia ativar a contabilidade.

Um invólucro simples pode ser

yourcommand &
echo $! >>/path/to/pid_history.log
    
por 08.05.2012 / 09:27
1

Se não houver uma entrada de log em algum lugar disso (feita pelo próprio programa ou pelo script de início), não há como obter essas informações, pois não há registro padrão dessas informações.

    
por 08.05.2012 / 09:26
0
# ps ax > /tmp/process.list; for i in 'seq 1 600'; do echo $i >> /tmp/plog; date >> /tmp/plog; ps ax | diff /tmp/process.list - >> /tmp/plog; sleep 1; done; ping -a 127.0.0.1

Esta construção coleta a diferença da lista de processos no arquivo / tmp / plog em 10 minutos para cada segundo. Após o final do registro, ele enviará um sinal do console.

Você pode adicionar isso ao arquivo rc.local para iniciar o registro imediatamente após a inicialização do servidor.

    
por 02.02.2017 / 14:09