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



Βασικά Takeaways

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

ο

dmesg

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

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

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

Οι διαδικασίες εκκίνησης (

BIOS

ή

UEFI

,

MBR

και

ΚΑΜΠΙΑ

) πάρτε την προετοιμασία του συστήματος στο σημείο όπου ο πυρήνας φορτώνεται στη μνήμη και συνδέεται με τον αρχικό δίσκο ram (

initrd ή initramfs

), και

systemd

έχει ξεκινήσει.

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

syslogd

ή

rsyslogd

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

ring buffer

που χρησιμοποιεί ως κατάστημα μηνυμάτων.

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

κυκλικό buffer

.”

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

Εκεί μπαίνει η εντολή dmesg.

Τι είναι η εντολή dmesg;

ο

dmesg

η εντολή σας επιτρέπει

για να ελέγξετε τα μηνύματα που είναι αποθηκευμένα στην προσωρινή μνήμη κουδουνίσματος

. Από προεπιλογή, πρέπει να χρησιμοποιήσετε

sudo

χρησιμοποιώ

dmesg

.

sudo dmesg

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


Έξοδος από sudo dmesg σε παράθυρο τερματικού

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

less

:

sudo dmesg | less


sudo dmesg |  λιγότερο σε ένα παράθυρο τερματικού

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


Έξοδος dmesg σε λιγότερα σε ένα παράθυρο τερματικού

Μπορείτε να χρησιμοποιήσετε τη λειτουργία αναζήτησης μέσα

less

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

less

.

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

Εάν θέλετε να αποφύγετε τη χρήση

sudo

κάθε φορά που χρησιμοποιείτε

dmesg

, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή. Ωστόσο, έχετε υπόψη σας: επιτρέπει σε οποιονδήποτε έχει λογαριασμό χρήστη να χρησιμοποιεί τον υπολογιστή σας

dmesg

χωρίς να χρειάζεται να χρησιμοποιήσετε

sudo

.

sudo sysctl -w kernel.dmesg_restrict=0


sudo sysctl -w kernel.dmesg_restrict=0 σε ένα παράθυρο τερματικού

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

Από προεπιλογή,

dmesg

πιθανότατα θα διαμορφωθεί ώστε να παράγει έγχρωμη έξοδο. Αν δεν είναι, μπορείτε να το πείτε

dmesg

για να χρωματίσετε την έξοδο του χρησιμοποιώντας το

-L

(έγχρωμη) επιλογή.

sudo dmesg -L


sudo dmesg -L σε ένα παράθυρο τερματικού

Για να αναγκάσει

dmesg

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

sudo dmesg --color=always


sudo dmesg --color=πάντα σε παράθυρο τερματικού

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

Από προεπιλογή,

dmesg

χρησιμοποιήστε μια χρονική σήμανση δευτερολέπτων και

νανοδευτερόλεπτα

από τότε που ξεκίνησε ο πυρήνας. Για να αποδοθεί σε μια πιο φιλική προς τον άνθρωπο μορφή, χρησιμοποιήστε το

-H

(ανθρώπινη) επιλογή.

sudo dmesg -H


sudo dmesg -H σε ένα παράθυρο τερματικού

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


έξοδος από sudo dmesg -H σε ένα τερματικό παράθυρο

  • Η έξοδος εμφανίζεται αυτόματα στο

    less

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

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

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

-T

(ανθρώπινη ανάγνωση) επιλογή. (Είναι λίγο μπερδεμένο.

-H

είναι η «ανθρώπινη» επιλογή,

-T

είναι η επιλογή “αναγνώσιμη από τον άνθρωπο”.)

sudo dmesg -T


sudo dmesg -T σε ένα παράθυρο τερματικού

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


έξοδος από sudo dmesg -T σε παράθυρο τερματικού

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

less

.

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

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

--follow

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

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

dmesg

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

sudo dmesg --follow


sudo dmesg --ακολουθήστε σε ένα παράθυρο τερματικού

Σημειώστε ότι δεν επιστρέφετε στη γραμμή εντολών. Όταν εμφανίζονται νέα μηνύματα, εμφανίζονται από

dmesg

στο κάτω μέρος του παραθύρου του τερματικού.


Έξοδος από sudo dmesg --ακολουθήστε το παράθυρο τερματικού

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


dmesg κουδουνίζει μηνύματα buffer ως αποτέλεσμα της τοποθέτησης ενός δίσκου CD-ROM

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

Ctrl+C

.

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

Χρησιμοποιήστε την εντολή tail

για να ανακτήσετε τα τελευταία δέκα

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

sudo dmesg | last -10


sudo dmesg |  τελευταίο -10 σε ένα παράθυρο τερματικού

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


Έξοδος από sudo dmsesg |  ουρά -10 σε παράθυρο τερματικού

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

Σωληνώστε την έξοδο από

dmesg

διά μέσου

grep


για αναζήτηση συγκεκριμένων χορδών ή μοτίβων

. Εδώ χρησιμοποιούμε το

-i

επιλογή (αγνοήστε πεζά), έτσι ώστε να αγνοηθεί η περίπτωση των συμβολοσειρών που ταιριάζουν. Τα αποτελέσματά μας θα περιλαμβάνουν “usb” και “USB” και οποιονδήποτε άλλο συνδυασμό πεζών και κεφαλαίων.

sudo dmesg | grep -i usb


sudo dmesg |  grep -i usb σε παράθυρο τερματικού

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


Αποτελέσματα αναζήτησης που εμφανίζουν κεφαλαία και πεζά αποτελέσματα σε ένα παράθυρο τερματικού

Μπορούμε να απομονώσουμε τα μηνύματα που περιέχουν αναφορές στο πρώτο

SCSI

σκληρό δίσκο στο σύστημα

sda

. (Πράγματι,

sda

χρησιμοποιείται επίσης στις μέρες μας για

ο πρώτος σκληρός δίσκος SATA

και για μονάδες USB.)

sudo dmesg | grep -i sda


sudo dmesg |  grep -i sda σε ένα τερματικό παράθυρο

Όλα τα μηνύματα που αναφέρουν

sda

ανακτώνται και παρατίθενται στο παράθυρο του τερματικού.


έξοδος από sudo dmesg |  grep -i sda σε ένα τερματικό παράθυρο

Να κάνω

grep

αναζητήστε πολλούς όρους ταυτόχρονα, χρησιμοποιήστε το

-E

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

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


sudo dmesg |  grep -Ε

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


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

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

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


  • αναδύονται

    : Το σύστημα δεν μπορεί να χρησιμοποιηθεί.

  • συναγερμός

    : Πρέπει να ληφθούν άμεσα μέτρα.

  • κριτ

    : Κρίσιμες συνθήκες.

  • πλανώμαι

    : Συνθήκες σφάλματος.

  • προειδοποιώ

    : Προειδοποιητικές συνθήκες.

  • ειδοποίηση

    : Κανονική αλλά σημαντική κατάσταση.

  • πληροφορίες

    : Ενημερωτικό.

  • εντοπισμός σφαλμάτων

    : Μηνύματα σε επίπεδο εντοπισμού σφαλμάτων.

Μπορούμε να κάνουμε

dmesg

εξαγάγετε μηνύματα που ταιριάζουν σε ένα συγκεκριμένο επίπεδο χρησιμοποιώντας το

-l

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

sudo dmesg -l info


sudo dmesg -l πληροφορίες σε ένα παράθυρο τερματικού

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


Έξοδος από πληροφορίες sudo dmesg -l σε παράθυρο τερματικού

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

sudo dmesg -l debug,notice


sudo dmesg -l εντοπισμός σφαλμάτων, ειδοποίηση σε ένα παράθυρο τερματικού

Η έξοδος από

dmesg

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


Έξοδος από τον εντοπισμό σφαλμάτων sudo dmesg -l, ειδοποίηση σε ένα παράθυρο τερματικού

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

ο

dmesg

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


  • kern

    : Μηνύματα πυρήνα.

  • χρήστης

    : Μηνύματα σε επίπεδο χρήστη.

  • ταχυδρομείο

    : Σύστημα αλληλογραφίας.

  • δαίμονας

    : Δαίμονες συστήματος.

  • auth

    : Μηνύματα ασφάλειας/εξουσιοδότησης.

  • syslog

    : Εσωτερικά μηνύματα syslogd.

  • lpr

    : Υποσύστημα εκτυπωτή γραμμής.

  • Νέα

    : Υποσύστημα ειδήσεων δικτύου.

Μπορούμε να ρωτήσουμε

dmesg

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

-f

(εγκατάσταση) επιλογή:

sudo dmesg -f daemon


sudo dmesg -f δαίμονας σε ένα παράθυρο τερματικού


dmesg

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


έξοδος από sudo dmesg -f daemon σε ένα παράθυρο τερματικού

Όπως κάναμε με τα επίπεδα, μπορούμε να ρωτήσουμε

dmesg

για να παραθέσετε μηνύματα από περισσότερες από μία εγκαταστάσεις ταυτόχρονα:

sudo dmesg -f syslog, daemon


sudo dmesg -f syslog, δαίμονας σε παράθυρο τερματικού

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


έξοδος από sudo dmesg -f syslog, δαίμονας σε παράθυρο τερματικού

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

ο

-x

(αποκωδικοποιώ) επιλογή κάνει

dmesg

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

sudo dmesg -x


sudo dmesg -x σε ένα παράθυρο τερματικού

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


Έξοδος από sudo dmesg -x σε παράθυρο τερματικού

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

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

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

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

dmesg

μπορεί να ρίξει λίγο φως στο θέμα.

  • Χρήση

    dmesg

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

    dmesg

    να αναζητήσετε οποιαδήποτε αναφορά στην κατάλληλη εγκατάσταση για να δείτε εάν περιέχουν χρήσιμες πληροφορίες.
  • Σωλήνας

    dmesg

    διά μέσου

    grep

    και αναζητήστε σχετικές συμβολοσειρές ή αναγνωριστικά, όπως αριθμούς κατασκευαστή προϊόντος ή μοντέλου.
  • Σωλήνας

    dmesg

    διά μέσου

    grep

    και αναζητήστε γενικούς όρους όπως “gpu” ή “αποθήκευση” ή όρους όπως “αποτυχία”, “αποτυχία” ή “αδύνατη”.
  • Χρησιμοποιήστε το

    --follow

    επιλογή και ρολόι

    dmesg

    μηνύματα σε πραγματικό χρόνο.

Καλο κυνηγι.


VIA:

HowToGeek.com


Follow TechWar.gr on Google News