Como exibir o tempo decorrido desde a última inicialização do sistema usando o tempo de atividade?


17

Quero exibir o tempo decorrido desde a última inicialização do sistema uptime, mas não quero que ele exiba todas essas informações. Eu só quero saber quantas horas se passaram desde a última inicialização do sistema (ou seja: 18:17:59)

Respostas:


31

Para obter o tempo decorrido desde a última inicialização do sistema hh:mm:ss, você pode usar:

awk '{print int($1/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

/proc/uptime pseudo-arquivo contém dois números:

  • O primeiro número é quanto tempo o sistema está ativo em segundos.
  • O segundo número é quanto tempo a máquina passou ociosa em segundos.

Assim, awkvocê pode usar o primeiro número e convertê-lo em hh:mm:ssformato.


15

Para obter tempo de atividade em segundos:

awk '{print $1}' /proc/uptime

Para obter tempo de atividade em minutos:

 echo $(awk '{print $1}' /proc/uptime) / 60 | bc

Para obter tempo de atividade em horas:

 echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

Para obter x dígitos de precisão, você pode adicionar scale = x, por exemplo, para x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc

2

Tente este:

uptime | awk '{ print $3 }'

De fato, imprime a terceira palavra da linha produzida por uptime.


3
Funciona. Mas não parece o caminho certo para fazê-lo. E se a terceira palavra não for a hora, por exemplo, minha terceira palavra é "4", porque minha máquina está funcionando por 4 dias. É isso que recebo: "02:00:39 até 4 dias, 12:54, 2 usuários, média de carga: 0,03. 0,06, 0,06".
Adrian George

Oh: DI não sabia sobre o tempo mais de 1 dia!
Alen

Tudo bem: agora você tem algumas respostas para isso?
Adrian George

Não desculpa uptimeparece não ter opções, mas também não consegui encontrar nada na rede.
Alen

2

Uma modificação trivial para mostrar os dias:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

0

Isso formatará sua saída como 2 preenchimento zero:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.