web-dev-qa-db-fra.com

Comment lire le dmesg de la session précédente? (dmesg.0)

dmesg est une commande pour lire le contenu de /var/log/dmesg. La belle chose par rapport à less /var/log/dmesg est que je peux utiliser l'indicateur -T pour une sortie de temps lisible par l'homme.

Maintenant, je voudrais regarder /var/log/dmesg.0, pour voir comment mon ordinateur est tombé en panne. Le fichier contient les journaux de la session précédente. Mais je veux utiliser l'indicateur -T de la commande dmesg. Ou quelque chose d'équivalent.

Une idée comment?

Cela ne me dérangerait pas un outil graphique, mais le meilleur serait une solution cli.

36
donquixote

Pour dissiper une idée fausse fondamentale, dmesg ne lit pas à partir de /var/log/dmesg. Il lit directement à partir du tampon d'anneau du noyau et vous donne les N messages les plus récents. Vers la fin du processus de démarrage, dmesg est invoqué pour écrire les messages de démarrage dans /var/log/dmesg (les anciennes versions de ce fichier étant tournées de la manière habituelle).

Une fois qu'un syslog est en cours d'exécution (syslogd, rsyslogd, syslog-ng, etc.), il lit à partir du tampon du noyau et écrit dans un fichier tel que /var/log/kern.log. (C'est pour Debian; les autres systèmes varieront). En supposant que votre système était capable d'écrire sur le disque et de vider les tampons de disque avant qu'il ne plante, c'est là que vous trouverez les cris de mort du noyau.

Sur mon système Debian, le /var/log/kern.log le fichier contient des horodatages lisibles par l'homme.

33
roaima

Bien qu'un peu tard pour l'OP ...

J'utilise Fedora, mais si votre système utilise journalctl, vous pouvez facilement obtenir les messages du noyau (journal dmesg) lors d'un arrêt/crash précédent (dans un dmesg -T format) à travers les éléments suivants.

Options:

  • -k (dmesg)
  • -b < boot_number > (Combien de redémarrages il y a 0, -1, -2, etc.)
  • -o court-précis (dmesg -T)
  • -p priorité Filtrer par sortie prioritaire (4 pour filtrer les avis et les informations).

REMARQUE: il existe également un -o short et -o short-iso qui vous donne respectivement la date et la date-heure au format iso.

Commandes:

  • Démarrage actuel: journalctl -o short-precise -k
  • Dernier démarrage: journalctl -o short-precise -k -b -1
  • Deux bottes avant: journalctl -o short-precise -k -b -2
  • Etc

Exemple de sortie:

Feb 18 21:41:26.917400 localhost.localdomain kernel: usb 2-4: USB disconnect, device number 12
Feb 18 21:41:26.917678 localhost.localdomain kernel: usb 2-4.1: USB disconnect, device number 13
Feb 18 21:41:27.246264 localhost.localdomain kernel: usb 2-4: new high-speed USB device number 22 using xhci_hcd
Feb 18 21:41:27.419395 localhost.localdomain kernel: usb 2-4: New USB device found, idVendor=05e3, idProduct=0610
Feb 18 21:41:27.419581 localhost.localdomain kernel: usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Feb 18 21:41:27.419739 localhost.localdomain kernel: usb 2-4: Product: USB2.0 Hub
Feb 18 21:41:27.419903 localhost.localdomain kernel: usb 2-4: Manufacturer: GenesysLogic

La quantité de bottes que vous pouvez regarder en arrière peut être consultée avec ce qui suit.

  • journalctl --list-boot

La sortie de journalctl --list-boot ressemble à ce qui suit.

 -6 cc4333602fbd4bbabb0df2df9dd1f0d4 Sun 2016-11-13 08:32:58 JST—Thu 2016-11-17 07:53:59 JST
 -5 85dc0d63e6a14b1b9a72424439f2bab4 Fri 2016-11-18 22:46:28 JST—Sat 2016-12-24 02:38:18 JST
 -4 8abb8267e06b4c26a2466562f3422394 Sat 2016-12-24 08:10:28 JST—Sun 2017-02-12 12:31:20 JST
 -3 a040f5e79a754b2a9055ac2598d430e8 Sun 2017-02-12 12:31:36 JST—Sat 2017-02-18 21:31:04 JST
 -2 6c29e3b6f6a14f549f06749f9710e1f2 Sat 2017-02-18 21:31:15 JST—Sat 2017-02-18 22:36:08 JST
 -1 42fd465eacd345f7b595069c7a5a14d0 Sat 2017-02-18 22:51:22 JST—Sat 2017-02-18 23:08:30 JST  
  0 26ea10b064ce4559808509dc7f162f07 Sat 2017-02-18 23:09:25 JST—Sun 2017-02-19 00:57:35 JST
41
Procyclinsur

Dans Debian, les journaux dmesg sont stockés sous la forme:

  • /var/log/dmesg (en direct et non compressé)
  • /var/log/dmesg.0 (dernière session et non compressé)
  • /var/log/dmesg.1.gz (avant-dernier et compressé)
  • /var/log/dmesg.2.gz (antépénultième et compressé)
  • /var/log/dmesg.3.gz (3e du dernier et compressé)
  • /var/log/dmesg.4.gz (4e du dernier et compressé)

Si vous avez des permis, vous pouvez les lire avec cat, more ou less pour les simples et zcat, zmore ou zless pour les compressés

5
Diego Alonso