Obtém a idade do processo na linha de comando [duplicata]

2

No linux, de /proc/PID/stat , posso obter o campo start_time (22: nd), que indica quanto tempo depois que o kernel inicializou o processo foi iniciado.

Qual é uma boa maneira de converter isso em um formato de segundos desde a época? Adicionando-o ao btime de /proc/stat ?

Basicamente, estou procurando a idade do processo, não exatamente quando ela foi iniciada. Minha primeira abordagem seria comparar o start_time do processo que está sendo investigado com start_time do processo atual (supondo que ele não esteja sendo executado por muito tempo).

Certamente deve haver maneiras muito melhores.

Não encontrei nenhum parâmetro óbvio relacionado à idade ao analisar o link

Então, o que eu tenho atualmente é:

process age = (current_utime - ([kernel]btime + [process]start_time))

Quaisquer formas alternativas mais eficientes a partir de um script de shell? (O ideal é corrigir as alterações do horário de verão)

    
por MattBianco 26.10.2015 / 09:12

2 respostas

4

Desde a versão 3.3.0, o ps de procps-ng no Linux tem um campo de saída etimes que fornece o tempo decorrido em segundos desde que o processo foi iniciado (que por sinal não é necessariamente a mesma coisa como o tempo decorrido desde a última vez em que o processo executou um comando (se sim!) (o tempo em que o processo executou o comando no nome do processo), portanto, pode não ser tão útil quanto você pensou).

Então você pode fazer:

ps -o etimes= -p "$pid"

Para a hora de início como horário da época do Unix (com GNU date ):

(export TZ=UTC0 LC_ALL=C; date -d "$(ps -o lstart= -p "$pid")" +%s)

Observe que você não pode usar o tempo de modificação de /proc/$pid . Essa é a hora em que esses arquivos foram instanciados , que não tem nada a ver com a hora de início do processo.

    
por 09.11.2015 / 16:18
3

idade do processo: forma legível humana

ps -p 1234 -o etime -h
        1-02:03:04

segundo desde a época de um processo

stat --format=%Y /proc/1234

Idade no segundo

expr $(date +%s) - $(stat --format=%Y /proc/1234)

recursos adicionais ps(1) , stat(1)

    
por 26.10.2015 / 09:25