Πώς να χρησιμοποιήσετε το systemctl για τη διαχείριση υπηρεσιών και μονάδων
Στο Linux, το systemctl διαδραματίζει κεντρικό ρόλο στη διαχείριση του συστήματος εκκίνησης και του διαχειριστή υπηρεσιών systemd. Με το systemctl, οι χρήστες έχουν τον έλεγχο των υπηρεσιών του systemd, των μονάδων και των ρυθμίσεών του, γεγονός που το καθιστά ένα απαραίτητο εργαλείο για τη διαχείριση του συστήματος. Από τον έλεγχο της εκκίνησης έως την προσαρμογή των καταστάσεων του συστήματος, το systemctl προσφέρει ένα ολοκληρωμένο φάσμα λειτουργιών.
Τι είναι το systemctl;
Το systemctl είναι ένα εργαλείο γραμμής εντολών για τη διαχείριση του systemd, ενός συστήματος εκκίνησης και διαχειριστή συστήματος για λειτουργικά συστήματα Linux. Το systemd αποτελεί πλέον το τυπικό σύστημα εκκίνησης για πολλές διανομές Linux και διανομές διακομιστών Linux, όπως το Ubuntu, το Debian, το Fedora, το Red Hat Enterprise Linux (RHEL), το CentOS, το Arch Linux, το Mageia και το Gentoo. Ωστόσο, δεν έχει εφαρμοστεί καθολικά σε όλες τις διανομές.
Στο οικοσύστημα του systemd, το systemctl διαδραματίζει κεντρικό ρόλο στη διαχείριση των υπηρεσιών του συστήματος, στη διαμόρφωση, στη συμπεριφορά κατά την εκκίνηση και στη συντήρηση του συστήματος. Οι δυνατότητες του εργαλείου δεν περιορίζονται απλώς στην εκκίνηση και τη διακοπή των υπηρεσιών. Προσφέρει ολοκληρωμένη διαχείριση σχεδόν όλων των πτυχών ενός συστήματος Linux.
Στο παρακάτω σεμινάριο, θα βρείτε πρακτικά παραδείγματα κώδικα και εντολές Linux για τη χρήση του systemctl. Τα παρακάτω παραδείγματα βασίζονται στο Ubuntu 22.04.
Διαχείριση υπηρεσιών
Ο πρωταρχικός στόχος του συστήματος init είναι η εκκίνηση των στοιχείων που απαιτούνται μετά την εκκίνηση του πυρήνα Linux ( στοιχεία του userland). Το σύστημα init χρησιμοποιείται επίσης για τον αποτελεσματικό έλεγχο των υπηρεσιών και των δαίμων σε έναν διακομιστή, σε οποιοδήποτε στάδιο της λειτουργίας του συστήματος.
Στο systemd, οι περισσότερες διεργασίες αφορούν πόρους που διαχειρίζεται το σύστημα. Αυτοί ονομάζονται «μονάδες». Οι μονάδες αυτές ταξινομούνται ανάλογα με τον τύπο του πόρου που αντιπροσωπεύουν και ορίζονται από αρχεία μονάδων. Μπορείτε να αναγνωρίσετε τον τύπο της μονάδας από την επέκταση του αρχείου της.
Κατά τη διαχείριση των υπηρεσιών, οι μονάδες υπηρεσιών που τελειώνουν με την κατάληξη .service είναι σημαντικές. Ωστόσο, δεν είναι πάντα απαραίτητο να χρησιμοποιείται αυτή η κατάληξη στις εντολές διαχείρισης υπηρεσιών. Το systemd είναι σε θέση να αναγνωρίζει ότι τέτοιες εντολές αναφέρονται γενικά σε υπηρεσίες.
Εκκίνηση και διακοπή υπηρεσιών
Μία από τις πιο συνηθισμένες εργασίες που εκτελούνται στο Linux με το systemctl είναι η εκκίνηση και η διακοπή υπηρεσιών. Αυτές οι λειτουργίες είναι θεμελιώδεις για τη διαχείριση του συστήματος και σας επιτρέπουν να διατηρείτε τον έλεγχο των διεργασιών που εκτελούνται σε ένα σύστημα. Για να εκκινήσετε μια υπηρεσία, χρησιμοποιήστε την εντολή start. Εάν εργάζεστε ως χρήστης χωρίς δικαιώματα root, θα πρέπει να χρησιμοποιήσετε sudo.
$ sudo systemctl start application.servicebashΔεδομένου ότι το systemd έχει σχεδιαστεί ώστε να αναζητά αυτόματα αρχεία .service για εντολές διαχείρισης υπηρεσιών, η εντολή μπορεί επίσης να εισαχθεί σε απλοποιημένη μορφή:
$ sudo systemctl start applicationbashΓια παράδειγμα, για να ξεκινήσετε τον διακομιστή ιστού Apache, θα πληκτρολογούσατε:
$ sudo systemctl start apache2bashΑν θέλετε να σταματήσετε μια υπηρεσία που εκτελείται, χρησιμοποιήστε stop:
$ sudo systemctl stop application.servicebashΕπανεκκίνηση και ανανέωση
Για να επανεκκινήσετε μια υπηρεσία, κάτι που συχνά απαιτείται μετά από μια αλλαγή στις ρυθμίσεις, χρησιμοποιήστε την εντολή restart:
$ sudo systemctl restart application.servicebashΕάν μια εφαρμογή έχει τη δυνατότητα να φορτώσει εκ νέου τα αρχεία ρυθμίσεών της χωρίς επανεκκίνηση, μπορεί να χρησιμοποιηθεί η εντολή reload για να ξεκινήσει η διαδικασία:
$ sudo systemctl reload application.servicebashΑν δεν είστε σίγουροι αν μια υπηρεσία προσφέρει τη δυνατότητα επαναφόρτωσης της διαμόρφωσής της, μπορείτε να χρησιμοποιήσετε την εντολή reload-or-restart. Αυτό θα επαναφορτώσει τη διαμόρφωση, εφόσον υποστηρίζεται αυτή η επιλογή. Αν δεν υποστηρίζεται, η εντολή θα επανεκκινήσει την υπηρεσία για να ξεκινήσει η ενημέρωση της διαμόρφωσης.
$ sudo systemctl reload-or-restart application.servicebashΕνεργοποίηση και απενεργοποίηση υπηρεσιών
Ενεργοποιώντας και απενεργοποιώντας υπηρεσίες, μπορείτε να καθορίσετε αν μια υπηρεσία θα ξεκινά αυτόματα κατά την εκκίνηση του συστήματος. Αυτό είναι ιδιαίτερα σημαντικό για την απόδοση του συστήματος, την ασφάλεια και τη διαχείριση των εξαρτήσεων μεταξύ διαφορετικών υπηρεσιών. Χρησιμοποιήστε την εντολή enable για να ρυθμίσετε την αυτόματη ενεργοποίηση κατά την εκκίνηση του συστήματος:
$ sudo systemctl enable application.servicebashΌταν εκτελείται αυτή η διαδικασία, δημιουργείται ένας συμβολικός σύνδεσμος. Ο σύνδεσμος αυτός συνδέει το αντίγραφο του αρχείου υπηρεσίας συστήματος. Το αρχείο υπηρεσίας συστήματος βρίσκεται συνήθως στον κατάλογο /lib/systemd/system ή /etc/systemd/system. Εκεί θα βρείτε επίσης τον κατάλογο στον σκληρό δίσκο όπου το systemd αναζητά αρχεία για την αυτόματη εκκίνηση. Αυτό συμβαίνει συνήθως στον κατάλογο /etc/systemd/system/some_target.target.wants.
$ sudo systemctl enable application.servicebashΓια να αποτρέψετε την αυτόματη εκκίνηση μιας υπηρεσίας κατά την εκκίνηση του συστήματος, χρησιμοποιήστε disable:
$ sudo systemctl disable application.servicebashΣτη συνέχεια, ο συμβολικός σύνδεσμος που καθορίζει την αυτόματη ενεργοποίηση κατά την εκκίνηση θα διαγραφεί.
Προσοχή: Η απλή ενεργοποίηση μιας υπηρεσίας δεν συνεπάγεται την άμεση εκκίνησή της στην τρέχουσα συνεδρία. Για να ξεκινήσετε αμέσως την υπηρεσία και να τη ρυθμίσετε ώστε να εκκινείται αυτόματα κατά την εκκίνηση του συστήματος, πρέπει να εκτελέσετε και τις δύο εντολές start και enable.
Ελέγξτε την κατάσταση των υπηρεσιών
Το systemctl επιτρέπει την εμφάνιση πληροφοριών σχετικά με την κατάσταση των υπηρεσιών. Αυτό είναι ιδιαίτερα χρήσιμο για την παρακολούθηση και τη διάγνωση της τρέχουσας κατάστασης των υπηρεσιών του συστήματος και των εφαρμογών. Χρησιμοποιήστε την εντολή status για τον έλεγχο:
$ systemctl status application.servicebashΑυτή η εντολή παρέχει μια σειρά πληροφοριών, όπως την τρέχουσα κατάσταση της υπηρεσίας (ενεργή, ανενεργή, με σφάλμα κ.λπ.), τις πιο πρόσφατα εκτελεσθείσες διεργασίες και τα μηνύματα καταγραφής, την ιεραρχία των cgroup καθώς και τις πρώτες γραμμές του αρχείου καταγραφής.
Για να ελέγξετε την τρέχουσα κατάσταση λειτουργίας μιας υπηρεσίας στο Linux με το systemctl, χρησιμοποιείται is-active. Αυτή η εντολή υποδεικνύει αν μια υπηρεσία είναι ενεργή αυτή τη στιγμή ή όχι:
$ systemctl is-active application.servicebashΗ τρέχουσα κατάσταση ορίζεται συνήθως ως active αν η υπηρεσία είναι ενεργή, ή ως inactive αν η υπηρεσία είναι ανενεργή.
Για να ελέγξετε αν μια υπηρεσία έχει ρυθμιστεί ώστε να ενεργοποιείται αυτόματα κατά την εκκίνηση του συστήματος, μπορείτε να χρησιμοποιήσετε την εντολή is-enabled. Αυτό είναι ιδιαίτερα χρήσιμο για τη διαχείριση των ρυθμίσεων εκκίνησης των υπηρεσιών σε ένα σύστημα Linux.
$ systemctl is-enabled application.servicebashΗ εντολή υποδεικνύει αν η υπηρεσία είναι ενεργοποιημένη ή απενεργοποιημένη και, ανάλογα με την απάντηση, ορίζει τον κωδικό εξόδου σε «0» ή «1».
Μπορείτε επίσης να χρησιμοποιήσετε την εντολή is-failed για να ελέγξετε αν μια συγκεκριμένη υπηρεσία παρουσιάζει σφάλμα:
$ systemctl is-failed application.servicebashΕάν η εκτέλεση ολοκληρωθεί με επιτυχία, εμφανίζεται η τιμή active. Εάν παρουσιαστεί σφάλμα, η τιμή θα είναι failed. Εάν η μονάδα σταμάτησε σκόπιμα, ως απάντηση ενδέχεται να εμφανιστεί unknown ή inactive. Η κατάσταση εξόδου 0 υποδηλώνει ότι παρουσιάστηκε σφάλμα, ενώ 1 υποδηλώνει οποιαδήποτε άλλη κατάσταση.
Κατάσταση συστήματος
Οι εντολές που παρουσιάστηκαν μέχρι τώρα επικεντρώνονταν στη διαχείριση μεμονωμένων υπηρεσιών. Ωστόσο, αυτές οι εντολές δεν παρέχουν πληροφορίες σχετικά με την τρέχουσα κατάσταση του συστήματος. Υπάρχει μια σειρά από εντολές systemctl που μπορούν να παρέχουν ακριβώς αυτού του είδους τις πληροφορίες.
list-units είναι χρήσιμο για να αποκτήσετε μια γενική εικόνα των τρέχουσων μονάδων στο Linux:
$ systemctl list-unitsbashΌταν εκτελέσετε αυτήν την εντολή, το systemctl εμφανίζει μια λίστα με τις μονάδες που διαχειρίζεται το systemd. Η έξοδος αυτής της λίστας περιλαμβάνει διάφορες στήλες με συγκεκριμένες πληροφορίες για κάθε μονάδα. Εμφανίζονται οι ακόλουθες στήλες:
- UNIT: Το όνομα της μονάδας (συχνά προέρχεται από το όνομα του αρχείου της μονάδας, π.χ. sshd.service για το δαίμονα SSH
- LOAD: Υποδεικνύει αν το αρχείο της μονάδας φορτώθηκε με επιτυχία· οι πιθανές τιμές είναι
loaded,not-foundήerror. - ACTIVE: Η κατάσταση δραστηριότητας της μονάδας, η οποία μπορεί να εναλλάσσεται μεταξύ λειτουργιών όπως
active,inactive,activatingήdeactivating - SUB: Η κατάσταση υπο-δραστηριότητας που παρέχει περαιτέρω λεπτομέρειες σχετικά με την κατάσταση της μονάδας (Για παράδειγμα, μια μονάδα
activeθα μπορούσε να έχει κατάσταση SUBrunning,exitedήfailed.) - DESCRIPTION: Μια σύντομη περιγραφή της μονάδας, που συχνά αντανακλά τον σκοπό ή τη λειτουργικότητα της μονάδας
Ωστόσο, η εντολή εμφανίζει από προεπιλογή μόνο τις ενεργές μονάδες. Για τον λόγο αυτό, η στήλη LOAD στην έξοδο εμφανίζει συνήθως loaded και η στήλη ACTIVE active. Με τη χρήση πρόσθετων επιλογών, το systemctl μπορεί να ρυθμιστεί έτσι ώστε να εμφανίζει και επιπλέον πληροφορίες. Για παράδειγμα, η χρήση της επιλογής --all θα εμφανίσει όλες τις μονάδες που έχουν φορτωθεί από το systemd, ανεξάρτητα από την τρέχουσα κατάσταση δραστηριότητάς τους.
$ systemctl list-units --allbashΤα αποτελέσματα μπορούν να περιοριστούν περαιτέρω με τη χρήση πρόσθετων σημαίας, όπως --state=, για το φιλτράρισμα συγκεκριμένων καταστάσεων στις κατηγορίες LOAD, ACTIVE ή SUB. Είναι σημαντικό να διατηρηθεί η σημαία --all, ώστε να εμφανίζονται και οι ανενεργές μονάδες:
$ systemctl list-units --all --state=inactivebashΜπορείτε επίσης να χρησιμοποιήσετε το φίλτρο --type= για να εμφανίσετε συγκεκριμένους τύπους μονάδων, π.χ. αν θέλετε να δείτε μόνο τις ενεργές μονάδες:
$ systemctl list-units --type=servicebashΕμφάνιση όλων των αρχείων μονάδων
Για να εμφανίσετε μια λίστα με όλα τα αρχεία μονάδων στο Linux χρησιμοποιώντας το systemctl (συμπεριλαμβανομένων εκείνων που το systemd δεν έχει προσπαθήσει να φορτώσει), μπορείτε να χρησιμοποιήσετε list-unit-files. Αυτή η εντολή εμφανίζει όλα τα αρχεία μονάδων που αναγνωρίζει το systemd, συμπεριλαμβανομένων υπηρεσιών, sockets, στόχων και άλλων.
$ systemctl list-units-filesbashΗ εντολή εμφανίζει διάφορες καταστάσεις των αρχείων μονάδων. Αυτές οι καταστάσεις υποδεικνύουν τον τρόπο με τον οποίο έχουν διαμορφωθεί οι αντίστοιχες μονάδες, ειδικότερα όσον αφορά τη συμπεριφορά τους κατά την εκκίνηση του συστήματος. Οι πιο συνηθισμένες καταστάσεις είναι
- Ενεργοποιημένη: Η μονάδα έχει ρυθμιστεί ώστε να ενεργοποιείται αυτόματα κατά την εκκίνηση του συστήματος.
- Απενεργοποιημένη: Η μονάδα δεν έχει ρυθμιστεί για αυτόματη εκκίνηση κατά τη διαδικασία εκκίνησης.
- Κρυμμένη: Η μονάδα είναι πλήρως απενεργοποιημένη, ώστε να μην μπορεί να ξεκινήσει χειροκίνητα ή αυτόματα.
- Στατική: Η μονάδα δεν εκκινείται ανεξάρτητα, αλλά συνήθως εξαρτάται από άλλη μονάδα και εκκινείται μόνο σε αυτό το πλαίσιο.
Διαχείριση μονάδων
Ένα από τα κύρια καθήκοντα του systemctl είναι η διαχείριση των μονάδων. Το systemctl προσφέρει μια σειρά από χρήσιμες εντολές και επιλογές που διευκολύνουν τη λήψη συγκεκριμένων πληροφοριών για μεμονωμένες μονάδες και τη διαχείρισή τους.
Εμφάνιση ενός αρχείου μονάδας
Αν θέλετε το περιεχόμενο ενός συγκεκριμένου αρχείου μονάδας να εμφανίζεται απευθείας στην κονσόλα, μπορείτε να χρησιμοποιήσετε την εντολή cat. Για παράδειγμα, για να δείτε το αρχείο μονάδας μιας υπηρεσίας όπως το ssh.service, πληκτρολογήστε:
$ systemctl cat ssh.servicebashΕμφάνιση εξαρτήσεων
Αν χρησιμοποιήσετε list-dependencies, οι εξαρτήσεις μιας συγκεκριμένης μονάδας θα εμφανιστούν σε δέντρο. Η εντολή έχει την εξής μορφή:
$ systemctl list-dependencies sshd.servicebashΣυνήθως εμφανίζονται οι εξαρτήσεις για .target μονάδες που αντιπροσωπεύουν διαφορετικές καταστάσεις του συστήματος. Χρησιμοποιήστε την επιλογή --all για μια πλήρη, αναδρομική λίστα όλων των εξαρτήσεων.
Για να εμφανίσετε τις αντίστροφες εξαρτήσεις (δηλαδή, τις ενότητες που εξαρτώνται από την καθορισμένη ενότητα), προσθέστε --reverse στην εντολή. Οι επιλογές --before και —after σας επιτρέπουν επίσης να δείτε τις εξαρτήσεις που ξεκινούν πριν ή μετά την εν λόγω ενότητα.
Μονάδες κάλυψης και αποκάλυψης
Η απόκρυψη μιας μονάδας την απενεργοποιεί ουσιαστικά, με αποτέλεσμα να μην μπορεί να ξεκινήσει ούτε χειροκίνητα ούτε αυτόματα. Αυτή η πρακτική χρησιμοποιείται συχνά για να διασφαλιστεί ότι μια υπηρεσία ή μονάδα δεν θα ξεκινήσει κατά λάθος ή αυτόματα λόγω εξαρτήσεων. Η απόκρυψη πραγματοποιείται δημιουργώντας έναν συμβολικό σύνδεσμο του σχετικού αρχείου μονάδας προς /dev/null με την εντολή mask:
$ sudo systemctl mask nginx.servicebashΑυτό εξασφαλίζει ότι η υπηρεσία Nginx δεν μπορεί να ξεκινήσει χειροκίνητα ή αυτόματα όσο βρίσκεται σε κατάσταση απόκρυψης.
Η κατάργηση της απόκρυψης αφαιρεί την κατάσταση απόκρυψης από μια μονάδα, ώστε να μπορεί να ξεκινήσει ξανά κανονικά. Η εντολή για την κατάργηση της απόκρυψης είναι unmask:
$ sudo systemctl unmask nginx.servicebashΕπεξεργασία αρχείων μονάδων
Το systemctl διαθέτει επιλογές για την προσαρμογή και την τροποποίηση αρχείων μονάδων. Αυτές οι λειτουργίες εισήχθησαν με την έκδοση 218 του systemd. Αν χρησιμοποιήσετε την εντολή edit, ένα αρχείο μονάδας στην επιλεγμένη μονάδα ανοίγει αυτόματα για επεξεργασία:
$ sudo systemctl edit nginx.servicebashΚατά την επεξεργασία, δημιουργείται ένα κενό αρχείο για την προσθήκη ή την τροποποίηση συγκεκριμένων οδηγιών σε έναν ορισμό μονάδας. Για κάθε μονάδα (π.χ. nginx.service), δημιουργείται ένας υποφάκελος στον κατάλογο /etc/systemd/system, με την κατάληξη .d να προστίθεται στο όνομα του αρχείου. Στο παραπάνω παράδειγμα, ο υποφάκελος θα ονομάζεται nginx.service.d.
Σε αυτόν τον υποφάκελο δημιουργείται ένα αρχείο override.conf. Όταν το systemd φορτώνει τη μονάδα, συνδυάζει το περιεχόμενο αυτού του αρχείου αποσπασμάτων με το αρχικό αρχείο της μονάδας. Σε αυτή την περίπτωση, προτεραιότητα έχουν οι οδηγίες του αποσπάσματος. Για την επεξεργασία ολόκληρου του αρχείου της μονάδας, μπορεί να χρησιμοποιηθεί η σημαία --full:
$ sudo systemctl edit --full nginx.servicebashΠατώντας --full ανοίγει το υπάρχον αρχείο μονάδας σε ένα πρόγραμμα επεξεργασίας για να γίνουν τροποποιήσεις. Κατά την έξοδο από το πρόγραμμα επεξεργασίας, το σύστημα αποθηκεύει το επεξεργασμένο αρχείο στο /etc/systemd/system.
Για να αναιρέσετε τις αλλαγές που έχετε κάνει εσείς οι ίδιοι, μπορείτε είτε να διαγράψετε τον κατάλογο ρυθμίσεων .d της συσκευής είτε το αρχείο που τροποποιήσατε στο /etc/systemd/system:
$ sudo rm -r /etc/systemd/system/nginx.service.dbashΈνα πλήρως αναθεωρημένο αρχείο μονάδας μπορεί να διαγραφεί με την ακόλουθη εντολή:
$ sudo rm /etc/systemd/system/nginx.servicebashΑφού διαγράψετε το αρχείο ή τον κατάλογο, θα πρέπει να επανεκκινήσετε το systemd, ώστε να σταματήσει να ανατρέχει στα διαγραμμένα αρχεία και να επιστρέψει στην αρχική έκδοση του συστήματος:
$ sudo systemctl daemon-reloadbashΠροσαρμογή της κατάστασης του συστήματος (επίπεδο λειτουργίας) με τη χρήση στόχων
Το systemd χρησιμοποιεί κυρίως τους στόχους (target) για να ομαδοποιεί διαφορετικές μονάδες. Αυτό γίνεται με σκοπό την επίτευξη μιας συγκεκριμένης κατάστασης του συστήματος, παρόμοια με τα επίπεδα εκτέλεσης (runlevels) σε άλλα συστήματα εκκίνησης. Τα αρχεία με την κατάληξη .target λειτουργούν ως σημεία αναφοράς, τα οποία υποδεικνύουν την κατάσταση διαθεσιμότητας ορισμένων λειτουργιών. Αυτό επιτρέπει στους χρήστες να καθορίζουν τη συνολική κατάσταση που επιθυμούν, αντί για τις μεμονωμένες μονάδες που απαιτούνται.
Ένα πρακτικό παράδειγμα είναι swap.target, η οποία υποδηλώνει την κατάσταση ετοιμότητας για εναλλαγή. Οι μονάδες που συμμετέχουν στη διαδικασία εναλλαγής μπορούν να ευθυγραμμιστούν με αυτόν τον στόχο χρησιμοποιώντας επιλογές διαμόρφωσης όπως WantedBy= ή RequiredBy=. Αντίθετα, οι μονάδες που εξαρτώνται από την εναλλαγή μπορούν να το υποδείξουν με ρυθμίσεις όπως οι Wants=, Requires= και After=, προκειμένου να εκφράσουν την εξάρτησή τους και τη σειρά εκκίνησης σε σχέση με την εναλλαγή.
Ανάκτηση και ρύθμιση του προεπιλεγμένου προορισμού
Η ανάκτηση και η ρύθμιση του προεπιλεγμένου στόχου σας επιτρέπει να ορίσετε μια προεπιλεγμένη κατάσταση για το σύστημά σας κατά την εκκίνηση. Δείτε πώς μπορείτε να βρείτε τον προεπιλεγμένο στόχο για το σύστημά σας:
$ systemctl get-default
Output
multi-user.targetbashΑν θέλετε να αλλάξετε τον προεπιλεγμένο προορισμό, χρησιμοποιήστε την εντολή set-default μαζί με το όνομα του προορισμού. Χρησιμοποιήστε την ακόλουθη εντολή για να ορίσετε τον προεπιλεγμένο προορισμό στο graphical.target, ο οποίος εκκινεί ένα γραφικό περιβάλλον χρήστη:
$ sudo systemctl set-default graphical.targetbashΛίστα διαθέσιμων προορισμών
Για να εμφανίσετε όλους τους διαθέσιμους προορισμούς στο σύστημά σας, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:
$ systemctl list-unit-files --type=targetbashΕμφανίζεται μια λίστα με όλα τα αρχεία μονάδων-στόχων που είναι εγκατεστημένα στο σύστημά σας. Για κάθε στόχο εμφανίζονται η διαδρομή και η τρέχουσα κατάσταση (π.χ. ενεργοποιημένος ή απενεργοποιημένος).
Απομόνωση στόχων
Με isolate, μπορείτε να ενεργοποιήσετε ταυτόχρονα όλες τις μονάδες που είναι συνδεδεμένες με έναν συγκεκριμένο στόχο και να σταματήσετε όλες τις άλλες μονάδες που δεν είναι συνδεδεμένες με αυτόν.
Ας υποθέσουμε ότι εργάζεστε σε ένα περιβάλλον όπου το graphical.target είναι ενεργό και θέλετε να μεταβείτε σε καθαρά πολυχρηστική λειτουργία χωρίς γραφικό περιβάλλον χρήστη. Σε αυτή την περίπτωση, μπορείτε να απενεργοποιήσετε το γραφικό σύστημα απομονώνοντας το multi-user.target. Δεδομένου ότι το graphical.target εξαρτάται από το multi-user.target, αλλά όχι το αντίστροφο, όλες οι γραφικές υπηρεσίες διακόπτονται κατά τη μετάβαση.
Ωστόσο, θα πρέπει να ελέγξετε τις σχετικές εξαρτήσεις πριν απομονώσετε έναν στόχο. Έτσι θα αποφύγετε την ακούσια διακοπή σημαντικών διεργασιών.
$ systemctl list-dependencies multi-user.targetbashΑν έχετε επιλέξει τις ενεργές μονάδες που θέλετε να διατηρήσετε και συμφωνείτε με αυτές, μπορείτε να ορίσετε τον επιθυμητό προορισμό:
$ sudo systemctl isolate multi-user.targetbashΣυντομεύσεις για σημαντικά γεγονότα
Υπάρχουν συγκεκριμένες εντολές για βασικές λειτουργίες, όπως το κλείσιμο ή η επανεκκίνηση του συστήματος. Στο Linux, ωστόσο, το systemctl προσφέρει επίσης πρακτικές συντομεύσεις που παρέχουν πρόσθετες λειτουργίες. Για παράδειγμα, για να θέσετε το σύστημα σε λειτουργία διάσωσης (λειτουργία ενός χρήστη), μπορείτε απλά να χρησιμοποιήσετε rescue αντί για isolate rescue.target:
$ sudo systemctl rescuebashΜπορείτε να τερματίσετε το σύστημα πληκτρολογώντας stop:
$ sudo systemctl stopbashΜπορείτε να ξεκινήσετε πλήρη τερματισμό λειτουργίας με poweroff:
$ sudo systemctl poweroffbashΑπό την άλλη πλευρά, μπορείτε να ξεκινήσετε μια επανεκκίνηση με reboot:
$ sudo systemctl rebootbashΕάν έχετε συνδεθεί, αυτές οι εντολές θα σας ενημερώσουν για τις επερχόμενες εκδηλώσεις. Η απλή εκτέλεση ή ο απομονωτισμός του στόχου δεν θα σας παρέχει αυτές τις πληροφορίες. Είναι σημαντικό να γνωρίζετε ότι πολλοί υπολογιστές θα συνδέσουν τις συντομότερες εντολές για αυτές τις ενέργειες με το systemd, προκειμένου να διασφαλίσουν τη σωστή εκτέλεση.
Η παρακάτω εντολή αρκεί συνήθως για την επανεκκίνηση του συστήματος:
$ sudo rebootbash