Εκμάθηση εντολών Journalctl: Πλήρης και πρακτικός οδηγός

Τελευταία ενημέρωση: 16/10/2025
Συγγραφέας: Ισαάκ
  • Το Journalctl συγκεντρώνει και φιλτράρει τα αρχεία καταγραφής του συστήματος κατά ώρα, μονάδα, προτεραιότητα και άλλα.
  • Επιτρέπει ευέλικτες εξόδους (JSON, ISO 8601, λεπτομερείς) και παρακολούθηση σε πραγματικό χρόνο.
  • Διαχείριση χώρου με κενό και όρια στο journald.conf για λεπτομερή έλεγχο.

Οδηγός Journalctl και systemd

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

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

Journalctl, systemd-journald, και γιατί είναι σημαντικά

Σε συστήματα με systemd, τα μηνύματα από τον πυρήνα, τις υπηρεσίες, το initrd και τις διεργασίες χρήστη συλλέγονται σε ένα δυαδικό ημερολόγιο που διαχειρίζεται το systemd-journaldΣε αντίθεση με το /var/log/syslog και παρόμοια, αυτή η δυαδική μορφή επιτρέπει Γρήγορες αναζητήσεις, φιλτράρισμα μεταδεδομένων και ευέλικτα αποτελέσματα (π.χ. JSON ή στυλ syslog), όλα από ένα μόνο σημείο πρόσβασης: journalctl.

UEFI BIOS
σχετικό άρθρο:
Πώς να αποκτήσετε πρόσβαση και να ενημερώσετε τις ρυθμίσεις υλικολογισμικού (BIOS/UEFI) από Linux χρησιμοποιώντας systemctl και systemd

Πρώτα απ 'όλα: ελέγξτε τη ζώνη ώρας

Δεδομένου ότι οι εγγραφές εμφανίζονται σε τοπική ώρα από προεπιλογή, συνιστάται πρώτα να επικυρώσετε τη ζώνη ώρας με timedatectlΜπορείτε να εμφανίσετε τις διαθέσιμες ζώνες με timedatectl list-timezones και αλλάξτε το με sudo timedatectl set-timezone ZONAΓια να ελέγξετε την κατάσταση, χρήσεις timedatectl status και επιβεβαιώνει ότι το τοπικό ρολόι είναι σωστό.

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

Ξεκινώντας: προβολή, πλοήγηση και σελιδοποίηση

Χωρίς επιχειρήματα, journalctl εμφανίζει ολόκληρο το ημερολόγιο από την παλαιότερη καταχώρηση έως την νεότερη χρησιμοποιώντας σελιδοποίηση (συνήθως μείον). Μπορείτε να κάνετε κύλιση με τα βέλη και, αν η γραμμή είναι μεγαλύτερη από την οθόνη, δείτε τα υπόλοιπα με το δεξί βέλοςΓια να αντιστρέψετε τη σειρά (πρώτα τα πρόσφατα), προσθέστε -r.

Αν θέλετε η γραμμή να περικοπεί αντί να μετατοπιστεί πλευρικά, χρησιμοποιήστε --no-fullκαι να δεις τα πάντα (συμπεριλαμβανομένων μη εκτυπώσιμοι χαρακτήρες), προσθέτει -aΌταν θέλετε να επεξεργαστείτε την έξοδο με άλλα εργαλεία, --no-pager απενεργοποιεί το pager και αφήνει την έξοδο σε stdout.

Υπάρχουν πιο πρακτικές συντομεύσεις για την καθημερινή ζωή: -e μεταβείτε κατευθείαν στο τέλος του ημερολογίου για να δείτε τα τελευταία νέα και -x δοκιμάστε προσθήκη εξηγήσεων χρήσιμο σε ορισμένα μηνύματα (όταν είναι διαθέσιμα) για την επιτάχυνση της διάγνωσης.

Φιλτράρισμα κατά εκκίνηση συστήματος

Ο διακόπτης -b Σας δείχνει μόνο τις καταχωρήσεις του τρέχουσα εκκίνησηΘα δείτε τις γραμμές "– Επανεκκίνηση –" που οριοθετούν τις συνεδρίες εάν πλοηγηθείτε σε περισσότερες από μία εκκινήσεις. Για να μεταβείτε σε μια προηγούμενη εκκίνηση, χρησιμοποιήστε το journalctl -b -1; για πέντε εκκινήσεις πριν, -b -5Αυτό είναι ιδανικό όταν ένα πρόβλημα παρουσιάζεται μόνο μετά από επανεκκίνηση ή σε συγκεκριμένες ακολουθίες εκκίνησης.

  Ο σωστός τρόπος για να μεταφέρετε φωτογραφίες από το iPhone σε Mac

Αν θέλετε τη λίστα με τις stars που γνωρίζει η εφημερίδα, journalctl --list-boots θα εμφανίσει ένα ανά γραμμή με: σχετική μετατόπιση (0, -1, -2, …), BOOT_ID και χρονικό εύρος. Μπορείτε να υποβάλετε ερώτημα με μετατόπιση ή απόλυτο αναγνωριστικό: journalctl -b 0 o journalctl -b BOOT_ID.

Σημαντικό: Για να διατηρούνται οι προηγούμενες εκκινήσεις σε όλες τις επανεκκινήσεις, ενεργοποιήστε τη μόνιμη αποθήκευση δημιουργώντας /var/log/journal (sudo mkdir -p /var/log/journal) ή επεξεργασία /etc/systemd/journald.conf με Storage=persistentΜε αυτόν τον τρόπο, τα αρχεία καταγραφής δεν θα χάνονται σε κάθε εκκίνηση.

Ισχυρά χρονικά παράθυρα

Για χρονικό περιορισμό, χρησιμοποιήστε --since y --until με τη μορφή ΕΕΕΕ-ΜΜ-ΗΗ ΥΗ: ΜΜ: SSΑν παραλείψετε την ώρα, θεωρούνται μεσάνυχτα. Αν παραλείψετε την ημερομηνία, θεωρείτε την τρέχουσα ημέρα. Για παράδειγμα: journalctl --since "2024-12-01 09:00" --until "2024-12-01 12:00".

Μπορείτε επίσης να χρησιμοποιήσετε σχετικές εκφράσεις: χτες, σήμερα, αύριο, οργανωμένες εκδρομέςή φράσεις όπως "1 hour ago"Ένα κλασικό: journalctl --since 09:00 --until "1 hour ago" για προβολή από την πρώτη ώρα έως την ώρα πριν από την τρέχουσα.

Φιλτράρισμα κατά υπηρεσία, διαδικασίες, χρήστες και άλλα

Το πιο συνηθισμένο φίλτρο είναι ανά μονάδα systemd: -u. Για παράδειγμα, journalctl -u nginx.service Εμφανίζει τα πάντα από την υπηρεσία nginx. Μπορείτε να συνδυάσετε πολλές μονάδες για να δείτε πώς αλληλεπιδρούν. που παρεμβάλλονται χρονολογικά καταχωρήσεις από, για παράδειγμα, Nginx και PHP-FPM: journalctl -u nginx.service -u php-fpm.service --since today.

Για υπηρεσίες που εκτελούνται ή όχι, μπορείτε να παραθέσετε μονάδες με systemctl list-units -t service --all και ανακαλύψτε ακριβή ονόματα (χρήσιμο σε συστήματα με δεκάδες υπηρεσίες). Με αυτόν τον τρόπο αποφεύγετε τα τυπογραφικά λάθη και φιλτράρετε μόνο ό,τι χρειάζεται.

Εάν γνωρίζετε το PID, φιλτράρετε με βάση _PID: journalctl _PID=8088Για χρήστες και ομάδες, χρησιμοποιήστε _UID y _GIDΓια παράδειγμα, id -u www-data θα επιστρέψει το UID που μπορείτε στη συνέχεια να χρησιμοποιήσετε στο journalctl _UID=33 --since today για δείτε τι δημιουργήθηκε από αυτόν τον χρήστη.

Το ημερολόγιο καταχωρεί αυτόματα πολλά πεδία: εκτελέσιμο, εντολή, μεταφορά, εγκατάσταση, κ.λπ. Με journalctl -F CAMPO μπορείτε να απαριθμήσετε τα διαφορετικές τιμές από ένα πεδίο και έτσι να δημιουργήσετε πιο ακριβή φίλτρα. Συμβουλευτείτε man systemd.journal-fields για να δείτε τον πλήρη κατάλογο των φιλτραριζόμενων πεδίων.

Μερικά πολύ χρήσιμα φίλτρα: ανά εκτελέσιμη διαδρομή (journalctl /usr/bin/bash), από τη δυνατότητα στυλ syslog (SYSLOG_FACILITY=3 αντιστοιχεί σε δαίμονα), με βάση το αναγνωριστικό εκκίνησης (_BOOT_ID=...) ή με μεταφορά (_TRANSPORT=kernel|stdout|journal|syslog|driver|audit) σύμφωνα με Η προέλευση του μηνύματος.

Μπορείτε ακόμη και να φιλτράρετε ανά συσκευή σε ορισμένες περιπτώσεις, για παράδειγμα για Εντοπισμός συμβάντων USB σε Linux o con journalctl /dev/sda, χρήσιμο για τον εντοπισμό μηνυμάτων που σχετίζονται με αποθήκευση όταν υπάρχουν υποψίες για I/O ή κατεστραμμένους τομείς.

Μηνύματα πυρήνα και ισοδύναμα dmesg

Για να δείτε μόνο τα μηνύματα πυρήνα που έχετε -k o --dmesgΑπό προεπιλογή, περιορίζονται στην τρέχουσα εκκίνηση, αλλά μπορείτε να τα συνδυάσετε με -b για άλλες μπότες: journalctl -k -b -5 θα δείξει τον πυρήνα από πέντε εκκινήσεις πριν.

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

  Πώς να επωφεληθείτε από το ιστορικό του προχείρου στα Windows 11

Προτεραιότητες καταγραφής: 0 έως 7 ή ονομαστικά

Το Journalctl αναγνωρίζει τα τυπικά επίπεδα προτεραιότητας: 0 έκτακτη ανάγκη, 1 ειδοποίηση, 2 κρίσιμη, 3 σφάλμα, 4 προειδοποίηση, 5 ειδοποίηση, 6 πληροφορίες, 7 εντοπισμός σφαλμάτων. Μπορείτε να φιλτράρετε με -p χρησιμοποιώντας το όνομα ή τον αριθμό και από προεπιλογή περιλαμβάνει το επιλεγμένο επίπεδο και όλα τα πιο αυστηρά.

Παραδείγματα: journalctl -p err -b (σφάλμα και υψηλότερο στην τρέχουσα εκκίνηση) ή journalctl -p 3Αν θέλετε να περιορίσετε μια ακριβές εύρος, χρησιμοποιήστε τη μορφή desde..hasta: για παράδειγμα, μόνο προειδοποίηση, σφάλμα και κρίσιμο με journalctl -p warning..crit ή σε αριθμούς journalctl -p 4..2.

Παρακολουθήστε σε πραγματικό χρόνο, τις πιο πρόσφατες γραμμές και αναζητήσεις

Για να «ακούσετε» την εφημερίδα ζωντανά, -f λειτουργεί το ίδιο όπως ουρά -fΙδανικό όταν επανεκκινείτε μια υπηρεσία και θέλετε να δείτε αμέσως τι βγάζει. Αν προτιμάτε ένα δείγμα, -n εμφάνιση των τελευταίων N γραμμών (προεπιλογή 10): journalctl -n, journalctl -n 20 o journalctl -n12 στη συμπαγή του μορφή.

Εκτός από την πάντα χρήσιμη διοχέτευση για το grep, το journalctl ενσωματώνει --grep για μοτίβα regex απευθείας στο ερώτημα. Για παράδειγμα, για να εντοπίσετε καταχωρήσεις που περιέχουν GnuPG: journalctl --grep GnuPGΣε συνδυασμό με τον χρόνο, την οδήγηση ή την προτεραιότητα, η αναζήτηση είναι χειρουργικός.

Μορφές εξόδου και εξαγωγής

με -o αλλάζετε τη μορφή εξόδου. Έχετε short (στυλ syslog από προεπιλογή), short-iso (Χρονική σήμανση ISO 8601), short-monotonic (μονότονο σημάδι), short-precise (μικροδευτερόλεπτα) και πολύλογος (εμφανίζει όλα τα πεδία, συμπεριλαμβανομένων των εσωτερικών).

Για ενσωματώσεις, json y json-pretty είναι ιδανικά (το τελευταίο είναι πιο ευανάγνωστο από τον άνθρωπο), και json-sse ενθυλακώνει την έξοδο για συμβάντα που αποστέλλονται από τον διακομιστήΗ μορφή cat εκτύπωση μόνο του πεδίου MESSAGE, χρήσιμο για καθαρές μετρήσεις, και export Χρησιμοποιείται για μεταφορά ή αντίγραφα ασφαλείας των αρχείων σε δυαδικό.

Αν πρόκειται να επεξεργαστείτε με άλλα εργαλεία, θυμηθείτε να τα συνδυάσετε --no-pager και ανακατευθύνσεις: journalctl -b -u nginx -o json --no-pager > nginx.json ή απλά journalctl > mensajes.log όταν χρειάζεστε ένα γρήγορο άδειασμα.

Άδειες και ασφάλεια

Από τη σχεδίαση, κάθε χρήστης μπορεί να υποβάλει ερώτημα τα δικά τους αρχείαΓια να δείτε το σύστημα, πρέπει να είστε ρίζα ή ανήκουν σε ομάδες όπως adm, wheel o systemd-journalΑυτό αποτρέπει τις διαρροές ευαίσθητων πληροφοριών και σέβεται την αρχή της ελάχιστο προνόμιο.

Έλεγχος χρήσης δίσκου

Για να μετρήσετε πόσο χώρο καταλαμβάνει η εφημερίδα: journalctl --disk-usageΘα δείτε μια σύνοψη των MiB/GiB που καταναλώνονται από τα αρχεία του ημερολογίου σε μόνιμη και πτητική αποθήκευση, κάτι που είναι σημαντικό για αποφύγετε τους τρόμους σε μικρά χωρίσματα.

Εάν χρειάζεται να μειώσετε ή ελευθερώστε χώρο στο LinuxΈχετε τρεις στρατηγικές εκκένωσης: κατά μέγεθος, κατά χρόνο και κατά αριθμό αρχείων. Παραδείγματα: sudo journalctl --vacuum-size=1G, sudo journalctl --vacuum-time=2weeks o sudo journalctl --vacuum-files=10 να διατηρήσουμε όσο το δυνατόν περισσότερο 10 αρχειοθετημένα αρχεία.

Για να ορίσετε μόνιμα όρια, επεξεργαστείτε /etc/systemd/journald.confΤα πιο χρήσιμα κλειδιά: SystemMaxUse= y RuntimeMaxUse= (συνολικό όριο σε επίμονες και ασταθείς), SystemKeepFree= y RuntimeKeepFree= (χώρος προς κράτηση στο FS), SystemMaxFileSize= y RuntimeMaxFileSize= (μέγεθος μεμονωμένου αρχείου) και SystemMaxFiles= y RuntimeMaxFiles= (μέγιστος αριθμός αρχειοθετημένων αρχείων). Τα μεγέθη δέχονται επιθήματα K, M, G, T, P, E.

Λάβετε υπόψη ότι τα όρια μεγέθους αρχείου καθοδηγούν την περιστροφή για να επιτευχθεί η σημειωμένη τιμή και ότι, από προεπιλογή, εάν δεν ρυθμίσετε τίποτα, το journal συνήθως αυτοπεριορισμός σε περίπου 10% του συστήματος αρχείων όπου βρίσκεται. Αφού αλλάξετε τη διαμόρφωση, επανεκκινήστε την υπηρεσία με sudo systemctl restart systemd-journald.

Γρήγορες συνταγές και κόλπα

Για να δείτε μόνο τα πιο σοβαρά σφάλματα από την τελευταία εκκίνηση: journalctl -p err -bΑν θέλετε ακριβώς προειδοποίηση, σφάλμα και κρίσιμο: journalctl -p warning..crit o journalctl -p 4..2 να το εκφράσω με αριθμούς.

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

Καταγράψτε όλες τις τιμές σε ένα πεδίο και βελτιώστε τα φίλτρα: journalctl -F _GID (o -F _UID, -F _EXE, κ.λπ.). Είναι ιδανικό για την ανακάλυψη πραγματικών αναγνωριστικών πριν από τη δημιουργία του τελικού σας ερωτήματος.

Διαχωρίστε ανά εκτελέσιμο αρχείο ή εντολή: journalctl _EXE=/usr/bin/sudo o journalctl _COMM=sudoΕάν χρειάζεται να απομονώσετε τι προέρχεται από την έξοδο τυπικών υπηρεσιών, φιλτράρετε κατά _TRANSPORT=stdout.

Φιλτράρισμα κατά κεντρικό υπολογιστή σε κοινόχρηστα περιβάλλοντα ονόματος κεντρικού υπολογιστή: journalctl _HOSTNAME=debianΚαι για να ζητήσετε εισιτήρια από έναν συγκεκριμένο χρήστη που γνωρίζει το UID του: journalctl _UID=0 (root) ή ο αριθμός που αντιστοιχεί στην περίπτωσή σας.

Χρειάζεται να βλέπετε μόνο μηνύματα επιπέδου "χρήστη" από το αρχείο καταγραφής συστήματος της εγκατάστασης; journalctl SYSLOG_FACILITY=1 (και να θυμάστε ότι το 3 αντιστοιχεί σε δαίμονας). Αυτά τα φίλτρα σάς βοηθούν να μιμηθείτε κλασικές προβολές syslog κατά τη μετεγκατάσταση στο systemd.

Εργασία σε UTC, ISO 8601 και ακρίβεια μικροδευτερολέπτων

Εάν έχετε συστήματα σε πολλές ζώνες ή συγκρίνετε με μετρήσεις, προσθέστε --utc για την τυποποίηση του χρόνου. Για σαφείς και τακτοποιημένες μορφές, -o short-iso Είναι μια εξαιρετική επιλογή. Αν ενδιαφέρεστε για μονοτονική ταξινόμηση ρολογιού (για εντοπισμό σφαλμάτων σε σχετικές ακολουθίες), -o short-monotonic είναι φίλος σου.

Όταν ένα περιστατικό απαιτεί μέγιστη λεπτομέρεια, -o short-precise προσθέτει μικροδευτερόλεπτα στη χρονική σήμανση. Είναι ένα στολίδι όταν συσχετίζεται με ίχνη, προφίλ ή καταγραφές δικτύου.

Καλές πρακτικές για καθημερινή χρήση

Ενεργοποιήστε την επιμονή αν σας ενδιαφέρει το ιστορικό: δημιουργήστε /var/log/journal ή διαμορφώστε Storage=persistent και επανεκκινήστε το journald. Εάν εργάζεστε με πολλή εναλλαγή, ορίστε SystemMaxUse y SystemKeepFree ώστε να μην πνίξει ποτέ το χώρισμα.

Για τον εντοπισμό σφαλμάτων σε υπηρεσίες, συνδυάστε: -u servicio + -f + φίλτρα του προτεραιότητα και ώρα. Προσθήκη -x όταν υποψιάζεστε κρυπτικά μηνύματα. Μερικές φορές παρέχει επιπλέον ενδείξεις που σας σώζουν πολύτιμα λεπτά.

Σε αγωγούς και εξαγωγές, χρησιμοποιήστε --no-pager και μορφές όπως json o export ανάλογα με το εργαλείο-στόχο. Μην ξεχνάτε την ασφάλεια: περιορίστε την πρόσβαση σε κατάλληλες ομάδες και έλεγχος δικαιωμάτων εάν κοινοποιείτε αποτελέσματα που ενδέχεται να περιέχουν ευαίσθητα δεδομένα.

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