Πώς να χρησιμοποιήσετε την εντολή 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
Όλα τα μηνύματα στην προσωρινή μνήμη κουδουνίσματος εμφανίζονται στο παράθυρο τερματικού.
Αυτό ήταν κατακλυσμός. Προφανώς, αυτό που πρέπει να κάνουμε είναι να το διώξουμε
less
:
sudo dmesg | less
Τώρα μπορούμε να κάνουμε κύλιση στα μηνύματα αναζητώντας αντικείμενα που μας ενδιαφέρουν.
Μπορείτε να χρησιμοποιήσετε τη λειτουργία αναζήτησης μέσα
less
για να εντοπίσετε και να επισημάνετε στοιχεία και όρους που σας ενδιαφέρουν. Ξεκινήστε τη λειτουργία αναζήτησης πατώντας το πλήκτρο κάθετου “/” στο
less
.
Κατάργηση της ανάγκης για 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
(ανθρώπινη) επιλογή.
sudo dmesg -H
Αυτό προκαλεί δύο πράγματα να συμβούν.
-
Η έξοδος εμφανίζεται αυτόματα στο
less
. - Οι χρονικές σημάνσεις εμφανίζουν μια χρονική σήμανση με την ημερομηνία και την ώρα, με ανάλυση λεπτού. Τα μηνύματα που εμφανίστηκαν σε κάθε λεπτό επισημαίνονται με τα δευτερόλεπτα και τα νανοδευτερόλεπτα από την αρχή αυτού του λεπτού.
Χρονοσφραγίδες αναγνώσιμες από τον άνθρωπο με dmesg
Εάν δεν χρειάζεστε ακρίβεια νανοδευτερόλεπτου, αλλά θέλετε χρονικές σημάνσεις που είναι πιο ευανάγνωστες από τις προεπιλογές, χρησιμοποιήστε το
-T
(ανθρώπινη ανάγνωση) επιλογή. (Είναι λίγο μπερδεμένο.
-H
είναι η «ανθρώπινη» επιλογή,
-T
είναι η επιλογή “αναγνώσιμη από τον άνθρωπο”.)
sudo dmesg -T
Οι χρονικές σημάνσεις αποδίδονται ως τυπικές ημερομηνίες και ώρες, αλλά η ανάλυση μειώνεται σε ένα λεπτό.
Όλα όσα έγιναν μέσα σε ένα λεπτό έχουν την ίδια χρονική σήμανση. Αν το μόνο που σας απασχολεί είναι η σειρά των γεγονότων, αυτό είναι αρκετά καλό. Επίσης, λάβετε υπόψη ότι σας απορρίπτουν στη γραμμή εντολών. Αυτή η επιλογή δεν ενεργοποιείται αυτόματα
less
.
Παρακολούθηση Ζωντανών Εκδηλώσεων με dmesg
Για να δείτε τα μηνύματα καθώς φτάνουν στην προσωρινή μνήμη δακτυλίου του πυρήνα, χρησιμοποιήστε το
--follow
επιλογή (αναμονή για μηνύματα). Αυτή η πρόταση μπορεί να φαίνεται λίγο περίεργη. Εάν η προσωρινή μνήμη κλήσης χρησιμοποιείται για την αποθήκευση μηνυμάτων από συμβάντα που λαμβάνουν χώρα κατά τη διάρκεια της ακολουθίας εκκίνησης, πώς μπορούν να φτάσουν ζωντανά μηνύματα στην προσωρινή μνήμη κουδουνίσματος μόλις ο υπολογιστής είναι σε λειτουργία και λειτουργεί;
Οτιδήποτε προκαλεί αλλαγή στο υλικό που είναι συνδεδεμένο στον υπολογιστή σας θα έχει ως αποτέλεσμα την αποστολή μηνυμάτων στην προσωρινή μνήμη δακτυλίου του πυρήνα. Ενημερώστε ή προσθέστε μια λειτουργική μονάδα πυρήνα και θα δείτε μηνύματα 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"
Οποιοδήποτε μήνυμα που αναφέρει οποιονδήποτε από τους όρους αναζήτησης παρατίθεται στο παράθυρο του τερματικού.
Χρήση επιπέδων καταγραφής
Κάθε μήνυμα που καταγράφεται στην προσωρινή μνήμη δακτυλίου του πυρήνα έχει ένα επίπεδο συνδεδεμένο σε αυτό. Το επίπεδο αντιπροσωπεύει τη σημασία των πληροφοριών στο μήνυμα. Τα επίπεδα είναι:
-
αναδύονται
: Το σύστημα δεν μπορεί να χρησιμοποιηθεί. -
συναγερμός
: Πρέπει να ληφθούν άμεσα μέτρα. -
κριτ
: Κρίσιμες συνθήκες. -
πλανώμαι
: Συνθήκες σφάλματος. -
προειδοποιώ
: Προειδοποιητικές συνθήκες. -
ειδοποίηση
: Κανονική αλλά σημαντική κατάσταση. -
πληροφορίες
: Ενημερωτικό. -
εντοπισμός σφαλμάτων
: Μηνύματα σε επίπεδο εντοπισμού σφαλμάτων.
Μπορούμε να κάνουμε
dmesg
εξαγάγετε μηνύματα που ταιριάζουν σε ένα συγκεκριμένο επίπεδο χρησιμοποιώντας το
-l
(επίπεδο) επιλογή και μεταβίβαση του ονόματος του επιπέδου ως παράμετρος γραμμής εντολών. Για να δείτε μόνο μηνύματα “πληροφοριακού” επιπέδου, χρησιμοποιήστε αυτήν την εντολή:
sudo dmesg -l info
Όλα τα μηνύματα που παρατίθενται είναι ενημερωτικά μηνύματα. Δεν περιέχουν σφάλματα ή προειδοποιήσεις, απλώς χρήσιμες ειδοποιήσεις.
Συνδυάστε δύο ή περισσότερα επίπεδα καταγραφής σε μία εντολή για να ανακτήσετε μηνύματα πολλών επιπέδων καταγραφής:
sudo dmesg -l debug,notice
Η έξοδος από
dmesg
είναι ένα μείγμα μηνυμάτων κάθε επιπέδου καταγραφής:
Οι Κατηγορίες Εγκαταστάσεων
ο
dmesg
Τα μηνύματα ομαδοποιούνται σε κατηγορίες που ονομάζονται “εγκαταστάσεις”. Ο κατάλογος των εγκαταστάσεων είναι:
-
kern
: Μηνύματα πυρήνα. -
χρήστης
: Μηνύματα σε επίπεδο χρήστη. -
ταχυδρομείο
: Σύστημα αλληλογραφίας. -
δαίμονας
: Δαίμονες συστήματος. -
auth
: Μηνύματα ασφάλειας/εξουσιοδότησης. -
syslog
: Εσωτερικά μηνύματα syslogd. -
lpr
: Υποσύστημα εκτυπωτή γραμμής. -
Νέα
: Υποσύστημα ειδήσεων δικτύου.
Μπορούμε να ρωτήσουμε
dmesg
να φιλτράρει την έξοδο του για να εμφανίζει μόνο μηνύματα σε μια συγκεκριμένη εγκατάσταση. Για να το κάνουμε αυτό, πρέπει να χρησιμοποιήσουμε το
-f
(εγκατάσταση) επιλογή:
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” ή “αποθήκευση” ή όρους όπως “αποτυχία”, “αποτυχία” ή “αδύνατη”. -
Χρησιμοποιήστε το
--follow
επιλογή και ρολόι
dmesg
μηνύματα σε πραγματικό χρόνο.
Καλο κυνηγι.
VIA:
HowToGeek.com

