¿Cómo mostrar el tiempo transcurrido desde el último inicio del sistema usando "tiempo de actividad"?


17

Quiero mostrar el tiempo transcurrido desde el último inicio del sistema uptime, pero no quiero que muestre toda esa información. Solo quiero saber cuántas horas pasaron desde el último inicio del sistema (es decir: 18:17:59)

Respuestas:


31

Para obtener el tiempo transcurrido desde el último inicio del sistema en hh:mm:ssformato, puede usar:

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

/proc/uptime El pseudo-archivo contiene dos números:

  • El primer número es cuánto tiempo ha estado funcionando el sistema en segundos.
  • El segundo número es la cantidad de tiempo que la máquina ha estado inactiva en segundos.

Entonces, usando awkpuedes tomar el primer número y convertirlo en hh:mm:ssformato.


15

Para obtener el tiempo de actividad en segundos:

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

Para obtener el tiempo de actividad en minutos:

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

Para obtener el tiempo de actividad en horas:

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

Para obtener x dígitos de precisión, puede agregar scale = x, por ejemplo, para x = 2

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

2

Prueba este:

uptime | awk '{ print $3 }'

De hecho, imprime la tercera palabra de la línea producida por uptime.


3
Funciona. Pero no parece la forma correcta de hacerlo. ¿Qué pasa si la tercera palabra no es la hora, por ejemplo, mi tercera palabra es "4", porque mi máquina está funcionando durante 4 días. Esto es lo que obtengo: "02:00:39 hasta 4 días, 12:54, 2 usuarios, promedio de carga: 0.03. 0.06, 0.06".
Adrian George

¡Oh: DI no sabía sobre el tiempo más de 1 día!
Alen

Está bien: ¿ahora tienes algunas respuestas a esto?
Adrian George el

No lo siento. uptimeparece no tener opciones, pero tampoco pude encontrar nada en la red.
Alen

2

Una modificación trivial para mostrar días:

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

0

Esto formateará su salida como 2 cero relleno:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.