Πώς να χρησιμοποιήσετε το journalctl για να διαβάσετε αρχεία καταγραφής συστήματος Linux

Η καταγραφή του συστήματος Linux άλλαξε με την εισαγωγή του systemd. Μάθετε πώς να χρησιμοποιείτε την εντολή journalctl για να διαβάζετε και να φιλτράρετε μηνύματα αρχείου καταγραφής συστήματος.

Κεντρική Καταγραφή

Δεν είναι ξένος στη διαμάχη, ο διαχειριστής συστήματος και υπηρεσιών systemd εισήγαγε μια σημαντική αλλαγή στον τρόπο συλλογής αρχείων καταγραφής συστήματος. Τα αρχεία καταγραφής βρίσκονταν σε διαφορετικά σημεία του συστήματος αρχείων ανάλογα με την υπηρεσία ή τον δαίμονα που τα δημιουργούσε. Όλοι όμως είχαν ένα κοινό. Ήταν αρχεία απλού κειμένου.

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

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

Το journalctl είναι το εργαλείο συνήθιζε να δουλεύει με το περιοδικό.

journalctl Χωρίς διακοσμητικά στοιχεία

Μπορείτε να καλέσετε το journalctl χωρίς παραμέτρους γραμμής εντολών:

journalctl

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

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

Πατήστε Ctrl+C για έξοδο.

Αν και το journalctl μπορεί να κληθεί χωρίς χρήση sudo, θα βεβαιωθείτε ότι βλέπετε όλες τις λεπτομέρειες μέσα στο αρχείο καταγραφής εάν χρησιμοποιείτε sudo.

sudo journalctl

Εάν χρειάζεται, μπορείτε να κάνετε το journalctl να στέλνει την έξοδό του στο παράθυρο του τερματικού αντί για λιγότερο, χρησιμοποιώντας την επιλογή –no-pager.

sudo journalctl --no-pager

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

Για να περιορίσετε τον αριθμό των γραμμών που επιστρέφει το journalctl, χρησιμοποιήστε την επιλογή -n (γραμμές). Ας ζητήσουμε δέκα γραμμές εξόδου:

sudo journalctl -n 10

Μετά από ενημερώσεις περιοδικών

Για να κάνετε το journalctl να εμφανίζει τις πιο πρόσφατες καταχωρήσεις καθώς φτάνουν στο ημερολόγιο, χρησιμοποιήστε την επιλογή -f (ακολουθώ).

sudo journalctl -f

Η πιο πρόσφατη καταχώριση έχει χρονική σήμανση 07:09:07. Καθώς λαμβάνει χώρα νέα δραστηριότητα, οι νέες καταχωρήσεις προστίθενται στο κάτω μέρος της οθόνης. Σχεδόν ενημερώσεις σε πραγματικό χρόνο—cool!

Στις 07:09:59 μια εφαρμογή που ονομάζεται geek-app εισήγαγε μια καταχώρηση στο ημερολόγιο που έλεγε, “Νέο μήνυμα από την HTG”.

Αλλαγή της μορφής εμφάνισης

Επειδή το περιοδικό είναι ένα δυαδικό αρχείο, τα δεδομένα σε αυτό πρέπει να μεταφραστούν ή να αναλυθούν σε κείμενο για να μπορέσουν να εμφανιστούν σε εσάς. Με διαφορετικούς αναλυτές, μπορούν να δημιουργηθούν διαφορετικές μορφές εξόδου από τα ίδια δυαδικά δεδομένα προέλευσης. Υπάρχουν πολλές διαφορετικές μορφές που μπορεί να χρησιμοποιήσει το journalctl.

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

sudo journalctl -n 10 -o short-full

Από αριστερά προς τα δεξιά, τα πεδία είναι:

  Πώς να παρακολουθήσετε το Netflix στην επιφάνεια εργασίας Linux με το Electronplayer

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

Για να αποκτήσετε μια πλήρη σήμανση ημερομηνίας και ώρας, χρησιμοποιήστε τον τροποποιητή short-full:

sudo journalctl -n 10 -o short-full

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

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

sudo journalctl -n 10 -o verbose

Εκεί υπάρχουν πολλά πιθανά πεδία, αλλά είναι σπάνιο να υπάρχουν όλα τα πεδία σε ένα μήνυμα.

Ένα πεδίο που αξίζει να συζητηθεί είναι το πεδίο Προτεραιότητα. Σε αυτό το παράδειγμα, έχει τιμή 6. Η τιμή αντιπροσωπεύει τη σημασία του μηνύματος:

0: Έκτακτη ανάγκη. Το σύστημα δεν μπορεί να χρησιμοποιηθεί.
1: Ειδοποίηση. Έχει επισημανθεί μια συνθήκη που πρέπει να διορθωθεί αμέσως.
2: Κριτική. Αυτό καλύπτει σφάλματα, coredumps και σημαντικές αποτυχίες σε κύριες εφαρμογές.
3: Σφάλμα. Έχει αναφερθεί σφάλμα, αλλά δεν θεωρείται σοβαρό.
4: Προειδοποίηση. Φέρνει στην προσοχή σας μια συνθήκη που, αν αγνοηθεί, μπορεί να γίνει σφάλμα.
5: Σημείωση. Χρησιμοποιείται για την αναφορά συμβάντων που είναι ασυνήθιστα, αλλά όχι σφαλμάτων.
6: Πληροφορίες. Τακτικά επιχειρησιακά μηνύματα. Αυτά δεν απαιτούν δράση.
7: Εντοπισμός σφαλμάτων. Μηνύματα που τοποθετούνται σε εφαρμογές για να διευκολύνουν τον εντοπισμό σφαλμάτων τους.

Εάν θέλετε η έξοδος να παρουσιάζεται ως σωστά διαμορφωμένη Σημείωση αντικειμένου JavaScript (JSON), χρησιμοποιήστε τον τροποποιητή json:

sudo journalctl -n 10 -o json

Κάθε μήνυμα είναι σωστά τυλιγμένο ως ένα καλά διαμορφωμένο αντικείμενο JSON και εμφανίζεται ένα μήνυμα ανά γραμμή εξόδου.

Για να έχετε την έξοδο JSON όμορφα τυπωμένο, χρησιμοποιήστε τον τροποποιητή json-pretty.

sudo journalctl -n 10 -o json-pretty

Κάθε αντικείμενο JSON χωρίζεται σε πολλές γραμμές, με κάθε ζεύγος ονόματος-τιμής σε μια νέα γραμμή.

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

sudo journalctl -n 10 -o cat

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

Επιλογή μηνυμάτων καταγραφής κατά χρονική περίοδο

Για να περιορίσετε την έξοδο από το journalctl σε μια χρονική περίοδο που σας ενδιαφέρει, χρησιμοποιήστε τις επιλογές -S (από) και -U (μέχρι).

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

sudo journalctl -S "2020-91-12 07:00:00"

sudo journalctl -S

Η οθόνη περιέχει μόνο μηνύματα που έφτασαν μετά την ημερομηνία και την ώρα στην εντολή.

Έξοδος από sudo journalctl -S

Για να ορίσετε μια χρονική περίοδο για την οποία θέλετε να κάνετε αναφορά, χρησιμοποιήστε και τις δύο επιλογές -S (από) και -U (μέχρι) μαζί. Αυτή η εντολή εξετάζει μηνύματα καταγραφής από μια χρονική περίοδο 15 λεπτών.:

sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00"

sudo journalctl -S

Αυτός είναι ένας εξαιρετικός συνδυασμός εάν γνωρίζετε ότι συνέβη κάτι περίεργο στο σύστημά σας και περίπου πότε συνέβη.

έξοδος από sudo journalctl -S

Χρήση σχετικών χρονικών περιόδων

Μπορείτε να χρησιμοποιήσετε σχετική διευθυνσιοδότηση όταν επιλέγετε τις χρονικές περιόδους σας. Αυτό σημαίνει ότι μπορείτε να πείτε πράγματα όπως “δείξε μου όλα τα συμβάντα από μια μέρα πριν μέχρι τώρα”. Αυτό ακριβώς σημαίνει αυτή η εντολή. Το «d» σημαίνει «ημέρα» και το «-1» σημαίνει μια μέρα στο παρελθόν.

sudo journalctl -S -1d

Τα μηνύματα του αρχείου καταγραφής παρατίθενται από τις 00:00:00 χθες, μέχρι “τώρα”.

  Πώς να παίξετε το House Flipper στο Linux

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

sudo journalctl -S -1h

Τα μηνύματα από την τελευταία ώρα εμφανίζονται για εσάς. Μπορείτε επίσης να χρησιμοποιήσετε το “m” για να ορίσετε σχετικές χρονικές περιόδους που μετρώνται σε λεπτά και το “w” για εβδομάδες.

Το journalctl κατανοεί το σήμερα, το χθες και το αύριο. Αυτοί οι τροποποιητές παρέχουν έναν εύχρηστο τρόπο για τον καθορισμό κοινών χρονικών περιόδων. Για να δείτε όλα τα γεγονότα που συνέβησαν χθες, χρησιμοποιήστε αυτήν την εντολή:

sudo journalctl -S yesterday

Όλα τα συμβάντα ημερολογίου που συνέβησαν χθες, μέχρι τα μεσάνυχτα 00:00:00, ανακτώνται και εμφανίζονται για εσάς.

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

sudo journalctl -S today

Εμφανίζονται τα πάντα από τις 00:00:00 μέχρι τη στιγμή που εκδίδεται η εντολή.

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

sudo journalctl -S -2d -U today

Όλα από προχθές μέχρι σήμερα ανακτώνται και εμφανίζονται.

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

Μπορείτε να αναζητήσετε μηνύματα καταγραφής που ταιριάζουν με ένα ευρύ φάσμα πεδίων περιοδικών. Αυτές οι αναζητήσεις προσπαθούν να βρουν αντιστοιχίσεις στα μεταδεδομένα που επισυνάπτονται σε κάθε μήνυμα. Συνιστάται να ανατρέξτε στη λίστα πεδίων και επιλέξτε αυτά που θα σας φανούν πιο χρήσιμα.

Λάβετε υπόψη ότι το αν μια εφαρμογή συμπληρώνει κάθε πεδίο ή όχι εξαρτάται αποκλειστικά από τους συντάκτες της εφαρμογής. Δεν μπορείτε να εγγυηθείτε ότι κάθε πεδίο θα είναι γεμάτο.

Όλοι οι τροποποιητές πεδίων ημερολογίου χρησιμοποιούνται με τον ίδιο τρόπο. Θα χρησιμοποιήσουμε μερικά στα παραδείγματά μας παρακάτω. Για να αναζητήσετε μηνύματα καταγραφής από μια συγκεκριμένη εφαρμογή, χρησιμοποιήστε τον τροποποιητή _COMM (εντολή). Εάν χρησιμοποιείτε επίσης την επιλογή -f (follow), το journalctl θα παρακολουθεί νέα μηνύματα από αυτήν την εφαρμογή καθώς φτάνουν.

sudo journalctl -f _COMM=geek-app

Μπορείτε να αναζητήσετε καταχωρήσεις ημερολογίου χρησιμοποιώντας το αναγνωριστικό διαδικασίας της διαδικασίας που δημιούργησε το μήνυμα καταγραφής. Χρησιμοποιήστε την εντολή ps για να βρείτε το αναγνωριστικό διαδικασίας του δαίμονα ή της εφαρμογής που πρόκειται να αναζητήσετε.

sudo journalctl _PID=751

Στο μηχάνημα που χρησιμοποιήθηκε για την έρευνα αυτού του άρθρου, το SSH Ο δαίμονας είναι η διαδικασία 751.

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

sudo journalctl _UID=1000

Όλα τα μηνύματα που σχετίζονται με οποιοδήποτε άλλο αναγνωριστικό χρήστη φιλτράρονται. Εμφανίζονται μόνο μηνύματα που σχετίζονται με τον χρήστη 1000:

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

sudo journalctl /usr/bin/anacron

Όλο το ανάκρον Τα μηνύματα του ημερολογίου του προγραμματιστή ανακτώνται και εμφανίζονται.

Για να διευκολύνουμε την αναζήτηση, μπορούμε να ζητήσουμε από το journalctl να παραθέσει όλες τις τιμές που διατηρεί, για οποιοδήποτε από τα πεδία του περιοδικού.

Για να δείτε τα αναγνωριστικά χρήστη για τα οποία το journalctl έχει καταγράψει μηνύματα καταγραφής, χρησιμοποιήστε την επιλογή -F (πεδία) και περάστε το αναγνωριστικό πεδίου _UID.

journalctl -F _UID

Ας το κάνουμε ξανά και ας δούμε το αναγνωριστικά ομάδας (GID’s):

journalctl -F _GID

Μπορείτε να το κάνετε αυτό με οποιοδήποτε από τα αναγνωριστικά πεδίων περιοδικών.

  Πώς να κάνετε αναβάθμιση σε Linux Mint 20.2

Καταχώριση μηνυμάτων πυρήνα

Υπάρχει ένας ενσωματωμένος τρόπος για να απομονώνετε γρήγορα τα μηνύματα του πυρήνα. Δεν χρειάζεται να τα ψάχνετε και να τα απομονώνετε μόνοι σας. Η επιλογή -k (πυρήνας) αφαιρεί όλα τα άλλα μηνύματα και σας δίνει μια άμεση προβολή των εγγραφών του ημερολογίου του πυρήνα.

sudo journalctl -k

Η επισήμανση αντικατοπτρίζει τη σημασία του μηνύματος, σύμφωνα με τις τιμές στο πεδίο Προτεραιότητα.

Έλεγχος μηνυμάτων εκκίνησης

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

Για να δείτε τις εγγραφές αρχείου καταγραφής που σχετίζονται με την τελευταία σας εκκίνηση, χρησιμοποιήστε την επιλογή -b (boot):

journalctl -b

Οι καταχωρίσεις του ημερολογίου για την τελευταία εκκίνηση εμφανίζονται για εσάς.

Όταν λέμε “τελευταία εκκίνηση”, εννοούμε τη διαδικασία εκκίνησης που έφερε στη ζωή τον υπολογιστή σας για την τρέχουσα συνδεδεμένη περίοδο σύνδεσης. Για να δείτε προηγούμενες εκκινήσεις, μπορείτε να χρησιμοποιήσετε έναν αριθμό για να πείτε στο journalctl ποια εκκίνηση σας ενδιαφέρει. Για να δείτε την τρίτη προηγούμενη εκκίνηση, χρησιμοποιήστε αυτήν την εντολή:

journalctl -b 3

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

Είναι εύκολο να μπερδευτείτε με τη σειρά των μπότες. Για να βοηθήσουμε, μπορούμε να ζητήσουμε από το journalctl να αναφέρει τις μπότες που έχει ηχογραφήσει στο ημερολόγιο του, χρησιμοποιώντας την επιλογή –list-boots.

journalctl --list-boots

Μπορείτε να προσδιορίσετε την εκκίνηση για την οποία θέλετε να δείτε μηνύματα από τη σφραγίδα ημερομηνίας και ώρας και, στη συνέχεια, να χρησιμοποιήσετε τον αριθμό στην αριστερή στήλη για να λάβετε τα μηνύματα καταγραφής για αυτήν τη σειρά εκκίνησης. Μπορείτε επίσης να επιλέξετε το αναγνωριστικό εκκίνησης 32-bit και να το μεταβιβάσετε στο journalctl.

sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

Τα μηνύματα καταγραφής από την ακολουθία εκκίνησης που ζητήσαμε ανακτώνται και εμφανίζονται.

Διαχείριση χώρου στον σκληρό δίσκο του περιοδικού

Φυσικά, το ημερολόγιο και όλα τα μηνύματα καταγραφής του αποθηκεύονται στον σκληρό σας δίσκο. Αυτό σημαίνει ότι θα καταλαμβάνουν χώρο στον σκληρό δίσκο. Για να δείτε πόσος χώρος έχει πιάσει το περιοδικό, χρησιμοποιήστε την επιλογή –disk-usage.

journalctl --disk-usage

Με τους σημερινούς σκληρούς δίσκους, τα 152 MB δεν είναι καθόλου πολύς χώρος, αλλά για λόγους επίδειξης, θα τα περικόψουμε ξανά. Υπάρχουν δύο τρόποι να το κάνουμε αυτό. Το πρώτο είναι να ορίσετε ένα όριο μεγέθους στο οποίο θέλετε να μειωθεί το ημερολόγιο. Θα αναπτυχθεί ξανά, φυσικά, αλλά μπορούμε να το κλαδέψουμε τώρα έτοιμο για αυτή τη νέα ανάπτυξη.

Θα χρησιμοποιήσουμε την επιλογή με τον υπέροχο τίτλο –μέγεθος κενού και θα περάσουμε στο μέγεθος στο οποίο θα θέλαμε να μειωθεί το ημερολόγιο. Θα ζητήσουμε 100 MB. Ο τρόπος για να το σκεφτούμε αυτό είναι ότι ζητάμε από το journalctl να “πετάξει ό,τι μπορείτε, αλλά μην πηγαίνετε κάτω από 100 MB.”

journalctl --vacuum-size=100M

Ο άλλος τρόπος για να περικόψετε το μέγεθος του περιοδικού είναι να χρησιμοποιήσετε την επιλογή – vacuum-time. Αυτή η επιλογή λέει στο journalctl να απορρίψει μηνύματα που είναι παλαιότερα από την περίοδο που παρέχετε στη γραμμή εντολών. Μπορείτε να χρησιμοποιήσετε ημέρες, εβδομάδες, μήνες και χρόνια στη χρονική περίοδο.

Ας εξαλείψουμε όλα τα μηνύματα παλαιότερα της μίας εβδομάδας:

journalctl --vacuum-time=1weeks

Δεδομένα έναντι πληροφοριών

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

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