Quiero mostrar /proc/uptime
en buen formato como:
DD:HH:MM:SS
/proc/uptime
dame el tiempo del sistema en segundos, ¿hay una solución estándar que convierta los segundos a este formato?
Aquí hay una manera sin perl
:
awk '{printf("%d:%02d:%02d:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
\n
¡para nueva línea sería bueno!Puede hacer esto, por ejemplo, con perl y algunas matemáticas simples:
Si no necesita los segundos, simplemente puede ejecutar el
uptime
comando. Su salida se puede transformar simplemente en DD: HH: MM.Por ejemplo, usando (funciona de esta manera solo si el tiempo de actividad es> 1 h)
fuente
No, porque no es realmente un problema difícil. Divide el número de segundos entre 86400 usando la división de enteros para obtener el número de días. Tome el resto y divídalo entre 3600 para obtener la cantidad de horas. Divide el resto de eso por 60 para obtener la cantidad de minutos, y te queda la cantidad de segundos. Todo esto se puede hacer desde el shell utilizando el
expr
comando si su shell es lo suficientemente antiguo como para no admitir la aritmética de forma nativaTomar el número de segundos desde la época y convertirlo en una fecha legible por humanos es un problema difícil, por lo que hay formas estándar de hacerlo, por ejemplo,
date -r SECONDS
desde el shell. Pero ese es un problema diferente.fuente
Adaptando la parte relevante de esta respuesta .
Mientras su tiempo de actividad sea inferior a un año, puede usar el siguiente comando:
Extraigo el primer campo del archivo de tiempo de actividad, ya que al menos en mi Linux, hay un segundo campo que contiene el tiempo de inactividad total. Trato eso como el número de segundos desde la época, y lo convierto al día del año seguido de tiempo en horas, minutos y segundos. Como el día del año comienza en uno, resto uno de eso en mi
awk
invocación final .fuente
Convertir segundos desde época a una fecha y hora:
fuente