Como obter um tempo de atividade do processo sob um sistema operacional diferente?

5

No Linux, posso obter o tempo de atividade de um processo em segundos com:

echo $(($(cut -d "." -f1 /proc/uptime) - $(($(cut -d " " -f22 /proc/$PID/stat)/100))))

Mas como posso obtê-lo em um SO diferente? ex .: SunOS, HP-UX, AIX?

    
por LanceBaynes 21.12.2011 / 04:29

5 respostas

9

Em qualquer sistema compatível com POSIX, você pode usar a coluna etime de ps .

LC_ALL=POSIX ps -o etime= -p $PID

A saída é dividida em dias, horas, minutos e segundos com a sintaxe [[dd-]hh:]mm:ss . Você pode trabalhar de volta em alguns segundos com uma simples aritmética:

t=$(LC_ALL=POSIX ps -o etime= -p $PID)
d=0 h=0
case $t in *-*) d=$((0 + ${t%%-*})); t=${t#*-};; esac
case $t in *:*:*) h=$((0 + ${t%%:*})); t=${t#*:};; esac
s=$((10#$d*86400 + 10#$h*3600 + 10#${t%%:*}*60 + 10#${t#*:}))
    
por 22.12.2011 / 01:02
3
echo $(( $(date +'%s') - $(stat -c '%Y' /proc/$PID) ))

Isso deve funcionar em qualquer sistema com um sistema de arquivos /proc . Infelizmente não tenho meios para testá-lo.

    
por 21.01.2012 / 09:36
2

Não sei se existe um comando para todos os sistemas, mas você pode usar a Unix Rosetta Stone para traduzir comandos para cada sistema.

    
por 21.12.2011 / 23:29
2

Isso funcionará:

ps -eo etime,cmd | grep process_name
    
por 21.07.2012 / 00:47
2

Descobriu um que funciona no Linux (provavelmente em todas as versões) e no Solaris (pelo menos em 5.9) - sem acesso a outros sistemas operacionais para testá-lo e com preguiça de verificar documentos:)

boottime=$(who -b | awk '/ /{print $3 " " $4}')")

é a hora em que o sistema foi inicializado no formato aaaa / mm / dd HH: MM: SS, portanto, a conversão para epoch-seconds é:

bootepoc=date -d "$boottime" +%s

e seu tempo em segundos é obviamente apenas o tempo atual menos isso. $(( $(date +%s) - $bootepoc ))

Se você quiser isso como uma data mais formatada, pode ser mais fácil usar outra resposta, embora outras linguagens de script possam levá-lo até lá (provavelmente também de outras maneiras).

(você não disse como queria, mas deu um exemplo diferente).

    
por 22.01.2014 / 19:20