Πώς να χρησιμοποιήσετε την εντολή dmesg στο Linux

Η εντολή dmesg σάς επιτρέπει να κοιτάξετε στον κρυφό κόσμο των διαδικασιών εκκίνησης του Linux. Ελέγξτε και παρακολουθήστε τα μηνύματα της συσκευής υλικού και του προγράμματος οδήγησης από την προσωρινή μνήμη δακτυλίου του πυρήνα με τον “φίλο του ανιχνευτή σφαλμάτων”.

Πώς λειτουργεί το Ring Buffer του Linux

Σε υπολογιστές τύπου Linux και Unix, η εκκίνηση και η εκκίνηση είναι δύο διακριτές φάσεις της ακολουθίας γεγονότων που λαμβάνουν χώρα όταν ο υπολογιστής είναι ενεργοποιημένος.

Οι διαδικασίες εκκίνησης (BIOS ή UEFI, MBR, και ΚΑΜΠΙΑ) πάρτε την προετοιμασία του συστήματος στο σημείο όπου ο πυρήνας φορτώνεται στη μνήμη και συνδέεται με τον αρχικό δίσκο ram (initrd ή initramfs), και systemd έχει ξεκινήσει.

Στη συνέχεια, οι διαδικασίες εκκίνησης παίρνουν τη σκυτάλη και ολοκληρώνουν την προετοιμασία του λειτουργικού συστήματος. Στα πολύ πρώιμα στάδια της αρχικοποίησης, οι δαίμονες καταγραφής όπως π.χ syslogd ή rsyslogd δεν είναι ακόμη σε λειτουργία. Για να αποφευχθεί η απώλεια αξιοσημείωτων μηνυμάτων σφάλματος και προειδοποιήσεων από αυτή τη φάση προετοιμασίας, ο πυρήνας περιέχει α buffer ring που χρησιμοποιεί ως κατάστημα μηνυμάτων.

Η προσωρινή μνήμη κουδουνίσματος είναι ένας χώρος μνήμης που προορίζεται για μηνύματα. Είναι απλό στο σχεδιασμό και σταθερό μέγεθος. Όταν είναι γεμάτο, τα νεότερα μηνύματα αντικαθιστούν τα παλαιότερα μηνύματα. Εννοιολογικά μπορεί να θεωρηθεί ως «κυκλικό buffer

Η προσωρινή μνήμη δακτυλίου πυρήνα αποθηκεύει πληροφορίες όπως τα μηνύματα προετοιμασίας των προγραμμάτων οδήγησης συσκευών, μηνύματα από το υλικό και μηνύματα από λειτουργικές μονάδες πυρήνα. Επειδή περιέχει αυτά τα χαμηλού επιπέδου μηνύματα εκκίνησης, το ring buffer είναι ένα καλό μέρος για να ξεκινήσετε μια έρευνα για σφάλματα υλικού ή άλλα ζητήματα εκκίνησης.

Αλλά μην πάτε με άδεια χέρια. Πάρτε dmesg μαζί σας.

Η εντολή dmesg

Η εντολή dmesg σας επιτρέπει για να ελέγξετε τα μηνύματα που είναι αποθηκευμένα στην προσωρινή μνήμη κουδουνίσματος. Από προεπιλογή, πρέπει να χρησιμοποιήσετε το sudo για να χρησιμοποιήσετε το dmesg.

sudo dmesg

Όλα τα μηνύματα στην προσωρινή μνήμη κουδουνίσματος εμφανίζονται στο παράθυρο τερματικού.

Αυτό ήταν κατακλυσμός. Προφανώς, αυτό που πρέπει να κάνουμε είναι να το διώξουμε λιγότερο:

sudo dmesg | less

Τώρα μπορούμε να κάνουμε κύλιση στα μηνύματα αναζητώντας αντικείμενα που μας ενδιαφέρουν.

  4 καλύτερες εναλλακτικές λύσεις για το Libre Office σε Linux

Μπορείτε να χρησιμοποιήσετε τη λειτουργία αναζήτησης εντός λιγότερων για να εντοπίσετε και να επισημάνετε στοιχεία και όρους που σας ενδιαφέρουν. Ξεκινήστε τη λειτουργία αναζήτησης πατώντας το πλήκτρο κάθετο προς τα εμπρός «/» σε λιγότερα.

Κατάργηση της ανάγκης για sudo

Εάν θέλετε να αποφύγετε τη χρήση sudo κάθε φορά που χρησιμοποιείτε το dmesg, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή. Ωστόσο, έχετε υπόψη σας: επιτρέπει σε οποιονδήποτε έχει λογαριασμό χρήστη στον υπολογιστή σας να χρησιμοποιεί dmesg χωρίς να χρειάζεται να χρησιμοποιεί sudo.

sudo sysctl -w kernel.dmesg_restrict=0

Επιβολή εξόδου χρώματος

Από προεπιλογή, το dmesg πιθανότατα θα έχει ρυθμιστεί ώστε να παράγει έγχρωμη έξοδο. Εάν δεν είναι, μπορείτε να πείτε στο dmesg να χρωματίσει την έξοδο του χρησιμοποιώντας την επιλογή -L (χρώμα).

sudo dmesg -L

Για να αναγκάσετε το dmesg να είναι πάντα προεπιλεγμένη σε έγχρωμη οθόνη, χρησιμοποιήστε αυτήν την εντολή:

sudo dmesg --color=always

Ανθρώπινες χρονοσημάνσεις

Από προεπιλογή, το dmesg χρησιμοποιεί μια χρονική σήμανση δευτερολέπτων και νανοδευτερόλεπτα από τότε που ξεκίνησε ο πυρήνας. Για να αποδοθεί σε μια πιο φιλική προς τον άνθρωπο μορφή, χρησιμοποιήστε την επιλογή -H (human).

sudo dmesg -H

Αυτό προκαλεί δύο πράγματα να συμβούν.

Η έξοδος εμφανίζεται αυτόματα σε λιγότερο.
Οι χρονικές σημάνσεις εμφανίζουν μια χρονική σήμανση με την ημερομηνία και την ώρα, με ανάλυση λεπτού. Τα μηνύματα που εμφανίστηκαν σε κάθε λεπτό επισημαίνονται με τα δευτερόλεπτα και τα νανοδευτερόλεπτα από την αρχή αυτού του λεπτού.

Χρονοσφραγίδες αναγνώσιμες από τον άνθρωπο

Εάν δεν χρειάζεστε ακρίβεια νανοδευτερόλεπτου, αλλά θέλετε χρονικές σημάνσεις που είναι πιο ευανάγνωστες από τις προεπιλογές, χρησιμοποιήστε την επιλογή -T (αναγνώσιμα από τον άνθρωπο). (Είναι λίγο μπερδεμένο. -H είναι η επιλογή “human”, -T είναι η επιλογή “human readable”.)

sudo dmesg -T

Οι χρονικές σημάνσεις αποδίδονται ως τυπικές ημερομηνίες και ώρες, αλλά η ανάλυση μειώνεται σε ένα λεπτό.

Όλα όσα έγιναν μέσα σε ένα λεπτό έχουν την ίδια χρονική σήμανση. Αν το μόνο που σας απασχολεί είναι η σειρά των γεγονότων, αυτό είναι αρκετά καλό. Επίσης, λάβετε υπόψη σας ότι θα επιστρέψετε στη γραμμή εντολών. Αυτή η επιλογή δεν καλεί αυτόματα λιγότερα.

Παρακολούθηση Ζωντανών Εκδηλώσεων

Για να δείτε τα μηνύματα καθώς φτάνουν στην προσωρινή μνήμη δακτυλίου του πυρήνα, χρησιμοποιήστε την επιλογή –follow (αναμονή για μηνύματα). Αυτή η πρόταση μπορεί να φαίνεται λίγο περίεργη. Εάν η προσωρινή μνήμη κουδουνίσματος χρησιμοποιείται για την αποθήκευση μηνυμάτων από συμβάντα που λαμβάνουν χώρα κατά τη διάρκεια της ακολουθίας εκκίνησης, πώς μπορούν να φτάσουν ζωντανά μηνύματα στην προσωρινή μνήμη κουδουνίσματος μόλις ο υπολογιστής είναι σε λειτουργία και λειτουργεί;

  Πώς να αποκτήσετε πρόσβαση στη λειτουργία Gnome Classic στο Linux

Οτιδήποτε προκαλεί αλλαγή στο υλικό που είναι συνδεδεμένο στον υπολογιστή σας θα έχει ως αποτέλεσμα την αποστολή μηνυμάτων στην προσωρινή μνήμη δακτυλίου του πυρήνα. Ενημερώστε ή προσθέστε μια λειτουργική μονάδα πυρήνα και θα δείτε μηνύματα buffer κουδουνίσματος σχετικά με αυτές τις αλλαγές. Εάν συνδέσετε μια μονάδα USB ή συνδέσετε ή αποσυνδέσετε μια συσκευή Bluetooth, θα δείτε μηνύματα στην έξοδο dmesg. Ακόμη και το εικονικό υλικό θα προκαλέσει την εμφάνιση νέων μηνυμάτων στο buffer κουδουνίσματος. Ενεργοποιήστε μια εικονική μηχανή και θα δείτε νέες πληροφορίες να φτάνουν στην προσωρινή μνήμη δακτυλίου.

sudo dmesg --follow

Σημειώστε ότι δεν επιστρέφετε στη γραμμή εντολών. Όταν εμφανίζονται νέα μηνύματα, εμφανίζονται με dmesg στο κάτω μέρος του παραθύρου του τερματικού.

Ακόμη και η τοποθέτηση ενός δίσκου CD-ROM θεωρείται αλλαγή, επειδή έχετε μπολιάσει τα περιεχόμενα του δίσκου CD-ROM στο δέντρο καταλόγου.

Για έξοδο από τη ροή σε πραγματικό χρόνο, πατήστε Ctrl+C.

Ανακτήστε τα τελευταία δέκα μηνύματα

Χρησιμοποιήστε την εντολή tail για να ανακτήσετε τα τελευταία δέκα μηνύματα buffer δακτυλίου πυρήνα. Φυσικά, μπορείτε να ανακτήσετε οποιοδήποτε αριθμό μηνυμάτων. Το δέκα είναι μόνο το παράδειγμά μας.

sudo dmesg | last -10

Τα τελευταία δέκα μηνύματα ανακτώνται και παρατίθενται στο παράθυρο του τερματικού.

Αναζήτηση για Συγκεκριμένους Όρους

Σωληνώστε την έξοδο από το dmesg μέσω του grep για αναζήτηση συγκεκριμένων χορδών ή μοτίβων. Εδώ χρησιμοποιούμε την επιλογή -i (παράβλεψη πεζών-κεφαλαίων) έτσι ώστε να αγνοείται η περίπτωση των συμβολοσειρών που ταιριάζουν. Τα αποτελέσματά μας θα περιλαμβάνουν “usb” και “USB” και οποιονδήποτε άλλο συνδυασμό πεζών και κεφαλαίων.

sudo dmesg | grep -i usb

Τα επισημασμένα αποτελέσματα αναζήτησης είναι με κεφαλαία και πεζά.

Μπορούμε να απομονώσουμε τα μηνύματα που περιέχουν αναφορές στο πρώτο SCSI σκληρό δίσκο στο σύστημα sda. (Στην πραγματικότητα, το sda χρησιμοποιείται επίσης στις μέρες μας για ο πρώτος σκληρός δίσκος SATAκαι για μονάδες USB.)

sudo dmesg | grep -i sda

Όλα τα μηνύματα που αναφέρουν το sda ανακτώνται και παρατίθενται στο παράθυρο του τερματικού.

Για να κάνετε αναζήτηση grep για πολλούς όρους ταυτόχρονα, χρησιμοποιήστε την επιλογή -E (επέκταση κανονικής έκφρασης). Πρέπει να παρέχετε τους όρους αναζήτησης μέσα σε μια συμβολοσειρά σε εισαγωγικά με σωλήνα “|” οριοθέτες μεταξύ των όρων αναζήτησης:

sudo dmesg | grep -E "memory|tty|dma"

sudo dmesg |  grep -Ε

Οποιοδήποτε μήνυμα που αναφέρει οποιονδήποτε από τους όρους αναζήτησης παρατίθεται στο παράθυρο του τερματικού.

έξοδος από sudo dmesg |  grep -Ε

Χρήση επιπέδων καταγραφής

Κάθε μήνυμα που καταγράφεται στην προσωρινή μνήμη δακτυλίου του πυρήνα έχει ένα επίπεδο συνδεδεμένο σε αυτό. Το επίπεδο αντιπροσωπεύει τη σημασία των πληροφοριών στο μήνυμα. Τα επίπεδα είναι:

emerg: Το σύστημα δεν μπορεί να χρησιμοποιηθεί.
προειδοποίηση: Πρέπει να ληφθούν άμεσα μέτρα.
crit: Κρίσιμες συνθήκες.
err: Συνθήκες σφάλματος.
προειδοποίηση: Προειδοποιητικές συνθήκες.
ειδοποίηση: Κανονική αλλά σημαντική κατάσταση.
info: Ενημερωτικό.
εντοπισμός σφαλμάτων: Μηνύματα σε επίπεδο εντοπισμού σφαλμάτων.

  Πώς να δημιουργήσετε αντίγραφα ασφαλείας των ρυθμίσεων επιφάνειας εργασίας Mate στο Linux

Μπορούμε να κάνουμε εξαγωγή μηνυμάτων dmesg που ταιριάζουν με ένα συγκεκριμένο επίπεδο χρησιμοποιώντας την επιλογή -l (επίπεδο) και περνώντας το όνομα του επιπέδου ως παράμετρο γραμμής εντολών. Για να δείτε μόνο μηνύματα “πληροφοριακού” επιπέδου, χρησιμοποιήστε αυτήν την εντολή:

sudo dmesg -l info

Όλα τα μηνύματα που παρατίθενται είναι ενημερωτικά μηνύματα. Δεν περιέχουν σφάλματα ή προειδοποιήσεις, απλώς χρήσιμες ειδοποιήσεις.

Συνδυάστε δύο ή περισσότερα επίπεδα καταγραφής σε μία εντολή για να ανακτήσετε μηνύματα πολλών επιπέδων καταγραφής:

sudo dmesg -l debug,notice

Η έξοδος από το dmesg είναι ένας συνδυασμός μηνυμάτων κάθε επιπέδου καταγραφής:

Οι Κατηγορίες Εγκαταστάσεων

Τα μηνύματα dmesg ομαδοποιούνται σε κατηγορίες που ονομάζονται “εγκαταστάσεις”. Ο κατάλογος των εγκαταστάσεων είναι:

kern: Μηνύματα πυρήνα.
χρήστης: Μηνύματα σε επίπεδο χρήστη.
mail: Σύστημα αλληλογραφίας.
δαίμονας: Δαίμονες συστήματος.
auth: Μηνύματα ασφάλειας/εξουσιοδότησης.
syslog: Εσωτερικά μηνύματα syslogd.
lpr: Υποσύστημα εκτυπωτή γραμμής.
νέα: Υποσύστημα ειδήσεων δικτύου.

Μπορούμε να ζητήσουμε από το dmesg να φιλτράρει την έξοδό του για να εμφανίζει μηνύματα μόνο σε μια συγκεκριμένη εγκατάσταση. Για να το κάνουμε αυτό, πρέπει να χρησιμοποιήσουμε την επιλογή -f (facility):

sudo dmesg -f daemon

Το dmesg παραθέτει όλα τα μηνύματα που σχετίζονται με τους δαίμονες στο παράθυρο του τερματικού.

Όπως κάναμε με τα επίπεδα, μπορούμε να ζητήσουμε από το dmesg να παραθέσει μηνύματα από περισσότερες από μία εγκαταστάσεις ταυτόχρονα:

sudo dmesg -f syslog, daemon

Η έξοδος είναι ένας συνδυασμός μηνυμάτων καταγραφής syslog και daemon.

Συνδυασμός Εγκατάστασης και Επιπέδου

Η επιλογή -x (αποκωδικοποίηση) κάνει το dmesg να εμφανίζει την ευκολία και το επίπεδο ως προθέματα αναγνώσιμα από τον άνθρωπο σε κάθε γραμμή.

sudo dmesg -x

Η εγκατάσταση και το επίπεδο φαίνονται στην αρχή κάθε γραμμής:

Η πρώτη επισημασμένη ενότητα είναι ένα μήνυμα από την εγκατάσταση “πυρήνα” με ένα επίπεδο “ειδοποίησης”. Η δεύτερη επισημασμένη ενότητα είναι ένα μήνυμα από την εγκατάσταση “πυρήνα” με επίπεδο “πληροφορίες”.

Αυτό είναι υπέροχο, αλλά γιατί;

Με λίγα λόγια, εύρεση βλαβών.

Εάν αντιμετωπίζετε προβλήματα με ένα κομμάτι υλικού που δεν αναγνωρίζεται ή δεν συμπεριφέρεται σωστά, το dmesg μπορεί να ρίξει φως στο ζήτημα.

Χρησιμοποιήστε το dmesg για να ελέγξετε μηνύματα από το υψηλότερο επίπεδο προς τα κάτω σε κάθε χαμηλότερο επίπεδο, αναζητώντας τυχόν σφάλματα ή προειδοποιήσεις που αναφέρουν το στοιχείο υλικού ή μπορεί να επηρεάζουν το ζήτημα.
Χρησιμοποιήστε το dmesg για να αναζητήσετε οποιαδήποτε αναφορά στην κατάλληλη εγκατάσταση για να δείτε εάν περιέχουν χρήσιμες πληροφορίες.
Πραγματοποιήστε dmesg μέσω του grep και αναζητήστε σχετικές συμβολοσειρές ή αναγνωριστικά, όπως αριθμούς κατασκευαστή προϊόντος ή μοντέλου.
Πραγματοποιήστε dmesg μέσω του grep και αναζητήστε γενικούς όρους όπως “gpu” ή “storage” ή όρους όπως “αποτυχία”, “αποτυχία” ή “μη δυνατότητα”.
Χρησιμοποιήστε την επιλογή –follow και παρακολουθήστε μηνύματα dmesg σε πραγματικό χρόνο.

Καλο κυνηγι.