GNU/Linux >> Tutoriels Linux >  >> Linux

Comment afficher la date et l'heure de redémarrage du système Linux

Question : À partir de la commande uptime, je sais combien de jours et d'heures le système est opérationnel. Existe-t-il un moyen simple d'afficher la date et l'heure exactes du dernier redémarrage du système ? c'est-à-dire à partir de quelle date et heure exactes le système a été opérationnel ?

Réponse : La disponibilité donne cette information indirectement. Dans l'exemple suivant, il indique que le système est opérationnel depuis « 137 jours, 6 heures et 13 minutes ». Mais, vous ne pouvez pas calculer rapidement la date et l'heure exactes de redémarrage à partir de cela.

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

Au lieu de dire que le système est opérationnel depuis les derniers "137 jours, 6 heures et 13 minutes", ce ne serait pas bien s'il était indiqué que le système fonctionnait depuis "Sat May 14 20:38" (ou quelque chose comme ce)? C'est exactement ce que fait l'une des trois méthodes suivantes.

1. Dernière commande

Utilisez la commande "last reboot", qui affichera toutes les dates et heures de redémarrage précédentes du système. Ceci récupère les informations du fichier /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 commande

Utilisez la commande "who -b" qui affiche la date et l'heure du dernier redémarrage du système.

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

3. Utilisez l'extrait de code perl

Si vous insistez pour utiliser la sortie de disponibilité pour calculer l'heure du dernier redémarrage, vous pouvez le faire manuellement ou utiliser l'extrait de code perl suivant.

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";'

Dans cet exemple, l'extrait de code ci-dessus affiche le résultat suivant :

Sat May 14 20:38:39 2011

Je ne me souviens pas exactement d'où j'ai obtenu l'extrait de code perl ci-dessus. Mais cela ne m'a pas empêché d'essayer de comprendre ce qu'il fait. Profitons-en pour apprendre le petit perl. Voici ce que fait l'extrait de code perl ci-dessus :

  • -n est l'option de ligne de commande perl. Provoque une boucle du programme perl sur l'entrée
  • -e est l'option de ligne de commande perl. Indique qu'il s'agit d'une ligne perl (c'est-à-dire que perl n'attendra pas de nom de fichier, quelque chose comme "perl filename.pl").

Voici la Regex utilisée et ses explications :

  • .*up + - Correspond à n'importe quoi jusqu'à la chaîne "up" et un ou plusieurs espaces, pour faire correspondre ce qui suit à partir de la sortie de disponibilité.
  • (?:(\d+) jours ?, ? +) – Groupe unique
  • (?:(\d+) jours ?, ? +) ? – Le point d'interrogation suivi de ce groupe indique que ce groupe est facultatif

Cette partie indique, s'il y a une partie jours dans la sortie de disponibilité, capturez-la ou ignorez-la. Ce qui suit détaille le groupe ci-dessus.

  • (?:pattern) - Parenthèse non capturante qui est utilisée pour regrouper, mais ne capture pas la correspondance avec la mémoire qui est $1, $2 etc ..
  • (\d+) – Faites correspondre un ou plusieurs chiffres et placez-le dans $1 (car il s'agit du premier groupe)
  • Journées SPACE ? – Faites correspondre l'espace littéral suivi du jour ou des jours
  • , ? – la virgule est facultative
  • ESPACE+ – un ou plusieurs espaces

Ce qui suit décompose ce modèle (\d+):(\d+),.*/

  • (\d+) – Capturez la partie heure en 2 $
  •  :– suivi de deux-points
  • (\d+) – Capturez la partie minute en 3 $
  • , – Virgule correspondante
  • .* – Correspond à tout le reste

Voici le reste de la fonction de temps dans l'extrait de code perl ci-dessus.

  • $total=((($1*24+$2)*60+$3)*60) – Calcule le nombre total de secondes pendant lesquelles le système est UP. c'est-à-dire (((jours*24+heures)*60+minutes)*60 qui donne les secondes (comme un calcul d'époque)
  • $maintenant=temps(); – Obtenir l'heure actuelle en secondes (epoch time)
  • $maintenant-=$total ; – Soustraire le temps de fonctionnement total du système de l'heure actuelle. Il s'agit donc d'obtenir l'heure exacte en secondes à laquelle le système a été démarré
  • $maintenant=heurelocale($maintenant); – Convertir le temps de l'époque (temps en secondes). localtime renvoie l'heure donnée dans un format lisible par l'homme
  • print $now,”\n” – Enfin, cela imprime l'heure.

Linux
  1. Comment désactiver les commandes d'arrêt et de redémarrage sous Linux

  2. Comment vérifier la version du système d'exploitation et de Linux

  3. 7 exemples de commande de date Linux pour afficher et définir la date et l'heure du système

  4. Obtenir la date et l'heure de démarrage du système sous Linux

  5. Depuis combien de temps mon système Linux fonctionne-t-il ?

Comment trouver la date et l'heure de redémarrage du système Ubuntu

Comment installer et utiliser Git dans le système Linux

Comment trouver la date et l'heure d'installation du système d'exploitation Linux

Comment vérifier l'historique de redémarrage du système et l'heure de démarrage sous Linux

Comment définir la date et l'heure sous Linux

Comment changer la date, l'heure et le fuseau horaire dans Linux Mint 20