Estou usando um ps
comando como parte de um exercício para identificar processos em execução por mais tempo que um determinado limite.
Estou usando o seguinte modelo para obter o tempo decorrido para um comando de processo conhecido:
ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'
Percebo que, com processos de execução curta, o valor etime (tempo decorrido) assume o formato minutes:seconds
e a partir disso eu posso determinar facilmente por quanto tempo um processo está em execução.
Para processos em execução muito longos (dias), não entendo o formato.
Eu tenho um processo do servidor MySQL que htop
mostra como em execução por 126 horas.
Executar ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'
me dá um valor de 9-03:35:32
.
Meu melhor palpite é que isso significa 9 algo, 3 horas, 35 minutos, 32 segundos. Não consigo descobrir quais são as unidades para o 9.
O processo em questão está em execução 126 horas, cerca de 5,25 dias. Isso sugere que os 9 na saída acima não representam dias. Eles também não podem durar meio dia, já que (9 * 12) horas + 3 horas + 35 minutos + 32 segundos são inferiores a 5 dias.
Como interpreto o valor do tempo decorrido que estou vendo para processos de longa execução? Quais unidades acompanham os 9 na saída acima?
ps
exibe um ou outro, dependendo das opções que você passa.etimes
vez deetime
e compare os resultados.Respostas:
De acordo com o padrão :
Então, os 9 significam dias, acredite ou não. Você poderia estar interpretando mal a saída do htop? O que top (que tem um formato de hora
minutes:seconds
) diz? Você tem certeza de que o campo que você está olhando no htop é equivalente ao etime? (por exemplo, isso poderia significar 126 minutos de tempo de CPU ?)fonte