Τα πράγματα σπάνια πάνε στραβά με το Linux, αλλά αυτό δεν σημαίνει ότι το λειτουργικό σύστημα είναι απρόσβλητο σε προβλήματα. Κάθε τόσο εγκαθιστώ μια νέα υπηρεσία ή εφαρμογή και στη συνέχεια την εκκινώ χρησιμοποιώντας την εντολή:
sudo systemctl εκκίνηση NAME
Όπου NAME είναι το όνομα της εφαρμογής ή της υπηρεσίας.
Επίσης: Τις πρώτες 5 εντολές Linux που πρέπει να μάθει κάθε νέος χρήστης.
Υπήρξαν περιπτώσεις όπου η υπηρεσία αρνήθηκε να ξεκινήσει ή να λειτουργήσει σωστά. Όταν συμβεί αυτό, πού θα απευθυνθείτε; Μπορείτε πάντα να ελέγξετε τα αρχεία καταγραφής (συνήθως το καλύτερο μέρος για να ξεκινήσετε) ή να δοκιμάσετε μια άλλη εντολή που είναι συμπληρωματική systemctl. Αυτή η ομάδα logctl.
logctl Η εντολή υποβάλλει ερώτημα στο αρχείο καταγραφής systemd και εμφανίζει τα περιεχόμενα του αρχείου καταγραφής, το οποίο μπορεί να περιλαμβάνει πληροφορίες σχετικά με το γιατί μια συγκεκριμένη εφαρμογή ή υπηρεσία δεν λειτουργεί όπως αναμένεται. Συχνά όταν προσπαθείτε να ξεκινήσετε μια υπηρεσία χρησιμοποιώντας systemctlεάν η υπηρεσία δεν ξεκινά σωστά (ή δεν ξεκινά καθόλου), θα δείτε στην έξοδο μια προτροπή για χρήση logctl ομάδα για να μάθει τι συνέβη.
Επιτρέψτε μου να σας δείξω πώς να χρησιμοποιήσετε αυτήν την εντολή, ώστε να μην χρειάζεται να σκέφτεστε γιατί τα πράγματα δεν πάνε όπως τα σχεδιάζετε.
Πώς να χρησιμοποιήσετε το logctl
Τι θα χρειαστείτε: Το μόνο πράγμα που θα χρειαστείτε για αυτήν την εργασία είναι μια διανομή Linux που χρησιμοποιεί systemd, που είναι αυτό που είναι οι περισσότερες μεγάλες διανομές.
Το πρώτο πράγμα που πρέπει να δοκιμάσετε είναι να τρέξετε logctl χωρίς καμία επιλογή, που είναι απλά:
Εμφάνιση περισσότερων
logctl
Αυτό που θα δείτε είναι ολόκληρη η έξοδος του συστήματος καταγραφής. Σε αυτά τα ευρήματα, μπορείτε να βρείτε πληροφορίες που θα σας βοηθήσουν να αντιμετωπίσετε το πρόβλημα.
Όταν έτρεξα την εντολή, βγήκαν μόνο 41 γραμμές. Έχω δει περιπτώσεις όπου υπήρχαν εκατοντάδες γραμμές στην έξοδο, καθιστώντας τη χρήση μιας εντολής χωρίς ορίσματα ή επιλογές λίγο άχρηστη.
Επίσης: 10 εφαρμογές Linux που εγκαθιστώ σε κάθε νέο μηχάνημα (και γιατί πρέπει και εσείς)
Ευτυχώς, μπορείτε να φιλτράρετε το μεγαλύτερο μέρος αυτού του θορύβου.
Για παράδειγμα, το SSH έχει προβλήματα με την εκκίνηση. Για να διορθώσετε αυτό το πρόβλημα, μπορείτε να εκτελέσετε την εντολή:
Εμφάνιση περισσότερων
systemctl -u SSH
Σε αυτή την περίπτωση, -υ μέσα μονάδαή μια συγκεκριμένη μονάδα συστήματος (για παράδειγμα, “υπηρεσία”).
Επίσης: Πώς να δημιουργήσετε σημεία επαναφοράς συστήματος στο Linux χρησιμοποιώντας Timeshift – και γιατί πρέπει να το κάνετε
Η έξοδος της παραπάνω εντολής μπορεί να μοιάζει κάπως έτσι:
12 Ιανουαρίου 09:55:42 pop-os systemd[1]: Εκκίνηση του διακομιστή OpenBSD Secure Shell…
12 Ιανουαρίου, 09:55:42 pop-os sshd[3424]: Ο διακομιστής ακούει στη θύρα 22 0.0.0.0.
12 Ιανουαρίου, 09:55:42 pop-os sshd[3424]: Ο διακομιστής ακούει στη θύρα :: 22.
12 Ιανουαρίου 09:55:42 pop-os systemd[1]: Ο διακομιστής OpenBSD Secure Shell εκτελείται.
15 Ιανουαρίου, 09:39:26 pop-os sshd[659190]: Μη έγκυρος χρήστης jackwallen από τη διεύθυνση 192.168.1.77, θύρα 55040.
15 Ιαν 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): check pass; άγνωστος χρήστης
15 Ιαν 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): σφάλμα ελέγχου ταυτότητας; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.77
15 Ιανουαρίου, 09:39:31 pop-os sshd[659190]: Μη έγκυρος κωδικός πρόσβασης για μη έγκυρο χρήστη jackwallen από τη θύρα ssh2 192.168.1.77 55040.
15 Ιανουαρίου, 09:39:33 pop-os sshd[659190]: Η σύνδεση έκλεισε από μη έγκυρο χρήστη jackwallen 192.168.1.77, θύρα 55040. [preauth]
15 Ιαν 09:39:39 pop-os sshd[659232]: Αποδεκτός κωδικός πρόσβασης για υποδοχή από 192.168.1.77, θύρα 55049 ssh2.
15 Ιαν 09:39:39 pop-os sshd[659232]: pam_unix(sshd:session): η περίοδος λειτουργίας άνοιξε για την υποδοχή χρήστη (uid=1000) από τον χρήστη (uid=0)
Όπως μπορείτε να δείτε, στην περίπτωσή μου, το SSH λειτουργεί όπως αναμενόταν, αλλά υπήρξε μια αποτυχημένη προσπάθεια σύνδεσης (αυτό συνέβη επειδή ξέχασα να προσθέσω ένα έγκυρο όνομα χρήστη κατά τη σύνδεση από το iMac μου).
Υπάρχει ένας ακόμη καλύτερος τρόπος αντιμετώπισης προβλημάτων μιας υπηρεσίας χρησιμοποιώντας logctl. Ας υποθέσουμε ότι το SSH λειτουργεί, αλλά υπάρχουν προβλήματα με την αποδοχή συνδέσεων (ή οποιοδήποτε άλλο πρόβλημα μπορεί να προκύψει). Μπορείτε να “αιχμαλωτίσετε” την έξοδο (η οποία εξάγει πληροφορίες σε πραγματικό χρόνο όπως συμβαίνει), ως εξής:
Εμφάνιση περισσότερων
logtcl -xefu ssh
Αυτή η εντολή όχι μόνο θα σας ενημερώσει για την κατάσταση εκκίνησης και εκτέλεσης της υπηρεσίας, αλλά θα παραθέσει επίσης τις πιο πρόσφατες καταχωρήσεις καταγραφής για αυτήν την υπηρεσία. Για να κλείσετε, χρησιμοποιήστε τη συντόμευση πληκτρολογίου Ctrl+c. Για όσους θέλουν να μάθουν, εδώ είναι μια εξήγηση των επιλογών:
- x – προσθήκη επεξήγησης σε γραμμές καταγραφής από τον κατάλογο μηνυμάτων
- e – Μετάβαση αμέσως στο τέλος του αρχείου καταγραφής εντός του υπονοούμενου τηλεειδοποιητή.
- f – follow (εκτυπώστε συνεχώς νέες καταχωρήσεις καθώς καταγράφονται)
- u είναι η μονάδα μέτρησης (όπως εξηγήθηκε παραπάνω)
Μπορείτε επίσης να προβάλετε ένα συγκεκριμένο χρονικό εύρος χρησιμοποιώντας logctl. Ας υποθέσουμε ότι θέλετε να δείτε μόνο τις καταχωρίσεις που έχουν καταγραφεί από τις 20 Ιανουαρίου στις 10:00 π.μ. Η εντολή θα είναι ως εξής:
Εμφάνιση περισσότερων
logctl — από “01/20/2025 10:00:00”
Θα δείτε κάθε καταχώρηση καταγεγραμμένη από τις 10:00 έως την τρέχουσα ώρα.
Επίσης: Πώς να βελτιστοποιήσετε το Linux (και να εξοικονομήσετε χρόνο) με το Stacer
Θα μπορούσατε να κάνετε αυτό το εύρος ακόμη πιο συγκεκριμένο. Ας υποθέσουμε ότι θέλετε να προβάλετε καταχωρήσεις που έχουν καταγραφεί μεταξύ 10:00 και 10:10. Η εντολή θα είναι ως εξής:
Journalctl –από “01/20/2025 10:00:00” –πριν από “01/20/2025 10:05:00”
Και αυτό, φίλοι μου, μπορείτε να το χρησιμοποιήσετε logctl για την αντιμετώπιση προβλημάτων με την εκτέλεση εφαρμογών σε Linux.