GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ver la fecha y hora de reinicio del sistema Linux

Pregunta: Desde el comando uptime, sé cuántos días y horas el sistema está en funcionamiento. ¿Hay una manera fácil de ver la fecha y la hora exactas en que se reinició el sistema por última vez? es decir, ¿exactamente desde qué fecha y hora ha estado funcionando el sistema?

Respuesta: El tiempo de actividad proporciona esta información indirectamente. En el siguiente ejemplo, indica que el sistema ha estado funcionando durante “137 días, 6 horas y 13 minutos”. Pero no puede calcular rápidamente la fecha y hora exactas de reinicio a partir de esto.

$ uptime
 20:52:01 up 137 days,  6:13,  1 user,  load average: 0.00, 0.00, 0.00

En lugar de decir que el sistema ha estado funcionando durante los últimos "137 días, 6 horas y 13 minutos", no estaría bien si dijera que el sistema ha estado funcionando desde el "sábado 14 de mayo a las 20:38" (o algo así como que)? Eso es exactamente lo que hace cualquiera de los siguientes tres métodos.

1. Último comando

Use el comando 'último reinicio', que mostrará todas las fechas y horas de reinicio anteriores para el sistema. Esto selecciona la información del archivo /var/log/wtmp.

$ last reboot
reboot   system boot  2.6.32-100.28.5. Sat May 14 20:38 - 23:55 (137+06:16)
reboot   system boot  2.6.32-100.28.5. Sun Apr 24 21:28 - 23:37 (15+09:08)  

wtmp begins Thu Sun 24 17:28:47 2011

2. Quién manda

Use el comando 'who -b' que muestra la fecha y la hora del último reinicio del sistema.

$ who -b
system boot  2011-05-14 20:38

3. Use el fragmento de código perl

Si insiste en usar la salida de tiempo de actividad para calcular el último tiempo de reinicio, puede hacerlo manualmente o usar el siguiente fragmento de código perl.

uptime | \
perl -ne '/.*up +(?:(\d+) days?,? +)?(\d+):(\d+),.*/; $total=((($1*24+$2)*60+$3)*60);
$now=time(); $now-=$total; $now=localtime($now); print $now,"\n";'

En este ejemplo, el fragmento de código anterior mostró el siguiente resultado:

Sat May 14 20:38:39 2011

No recuerdo exactamente de dónde obtuve el fragmento de código perl anterior. Pero eso no me impidió tratar de averiguar qué hace. Aprovechemos esta oportunidad para aprender un poco de perl. Esto es lo que hace el fragmento de código perl anterior:

  • -n es la opción de línea de comandos de Perl. Hace que el programa perl realice un bucle sobre la entrada
  • -e es la opción de línea de comandos de Perl. Indica que se trata de una sola línea de perl (es decir, perl no esperará un nombre de archivo, algo así como "perl filename.pl").

Los siguientes son los Regex utilizados y sus explicaciones:

  • .*up +:haga coincidir cualquier cosa hasta la cadena "up" y uno o más espacios, para hacer coincidir lo siguiente de la salida de tiempo de actividad.
  • (?:(\d+) días?,? +) – Grupo único
  • (?:(\d+) días?,? +)? – El signo de interrogación seguido de este grupo dice que este grupo es opcional

Esta parte dice, si hay una parte de días en la salida del tiempo de actividad, captúrela o ignórela. A continuación se desglosa el grupo anterior en detalle.

  • (?:patrón) – Paréntesis sin captura que se usa para agrupar, pero no captura la coincidencia con la memoria que es $1, $2, etc.
  • (\d+) – Haga coincidir uno o más dígitos y colóquelos en $1 (porque este es el primer grupo)
  • Días ESPACIALES? – Haga coincidir el espacio literal seguido del día o días
  • ,? – la coma es opcional
  • ESPACIO+:uno o más espacios

Lo siguiente desglosa este patrón (\d+):(\d+),.*/

  • (\d+) – Captura la parte de la hora en $2
  • :– Seguido de dos puntos
  • (\d+) – Captura la parte del minuto en $3
  • , – Coincidir con coma
  • .* – Coincide con todo lo demás

A continuación se muestra el resto de la función de tiempo en el fragmento de código perl anterior.

  • $total=((($1*24+$2)*60+$3)*60) – Calcula la cantidad total de segundos que el sistema está ACTIVADO. es decir (((días*24+horas)*60+minutos)*60 que da los segundos (como un cálculo de época)
  • $ahora=hora(); – Obtenga la hora actual en segundos (tiempo de época)
  • $ahora-=$total; – Reste el tiempo total de funcionamiento del sistema de la hora actual. Esto es obtener la hora exacta en segundos cuando se inició el sistema
  • $ahora=horalocal($ahora); – Convertir el tiempo de la época (tiempo en segundos). localtime devuelve el tiempo de época dado en formato legible por humanos
  • imprimir $ahora,”\n” – Finalmente, esto imprime la hora.

Linux
  1. Uso del comando timedatectl para cambiar la hora y la fecha en el sistema RHEL7 Linux

  2. Cómo verificar la versión del sistema operativo y Linux

  3. Cómo usar el comando de apagado y reinicio de Linux con ejemplos

  4. Establezca la fecha y la hora del sistema usando C++ en Linux

  5. ¿Cuánto tiempo ha estado funcionando mi sistema Linux?

Cómo encontrar la fecha y hora de reinicio del sistema Ubuntu

Cómo instalar y usar Git en el sistema Linux

Cómo encontrar la fecha y hora de instalación del sistema operativo Linux

Cómo verificar el historial de reinicio del sistema y el tiempo de inicio en Linux

Cómo configurar la fecha y la hora en Linux

Cómo cambiar la fecha, la hora y la zona horaria en Linux Mint 20