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)

Adrian George
fonte

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.

Radu Rădeanu
fonte
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
realmoonstruck
fonte
2

Tente este:

uptime | awk '{ print $3 }'

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

Alen
fonte
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
xerostomus
fonte
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
D4NI3LS
fonte