Entendendo o formato de tempo decorrido do ps para processos de execução longa

10

Estou usando um pscomando 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:secondse 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 htopmostra 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?

Jon Cram
fonte
Aqui, você está vendo o formato da hora POSIX. Minutos: segundos é o formato de hora do BSD. O Linux psexibe um ou outro, dependendo das opções que você passa.
Gilles 'SO- stop be evil'
Para verificar novamente, tente em etimesvez de etimee compare os resultados.
Ruslan

Respostas:

16

De acordo com o padrão :

No código do idioma POSIX, o tempo decorrido desde o início do processo, no formato:

[[dd-]hh:]mm:ss

onde dd deve representar o número de dias, hh o número de horas, mm o número de minutos e ss o número de segundos. O campo dd deve ser um número inteiro decimal. Os campos hh, mm e ss devem ser números inteiros decimais de dois dígitos preenchidos à esquerda com zeros.

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 ?)

Random832
fonte
Obrigado pela confirmação. O htop definitivamente mostra 126 horas, mas acho que isso pode não ser o tempo da parede, mas outra hora (talvez o tempo da CPU). O campo no htop não é equivalente ao etime, assumi erroneamente aqui.
precisa
11
@JonCram Você tem certeza de que são horas? A parte superior original mostra apenas minutos (ou seja, vai para minutos acima de 60 em vez de quebrar para horas), um número como 126: 37 significa 126 minutos e 37 segundos. Eu estava pensando que htop poderia ser o mesmo. 126 horas de tempo de CPU em 9 dias parecem muito.
usar o seguinte código