systemd, init - διαχειριστής συστήματος και υπηρεσιών systemd
ΣΥΝΟΨΗ
/usr/lib/systemd/systemd [ΕΠΙΛΟΓΕΣ...]
init [ΕΠΙΛΟΓΕΣ...]
ΠΕΡΙΓΡΑΦΗ
Το systemd είναι ένας διαχειριστής συστήματος και υπηρεσιών για λειτουργικά συστήματα Linux. Όταν εκτελείται ως η πρώτη διαδικασία κατά την εκκίνηση (ως PID 1), λειτουργεί ως σύστημα init που θέτει σε λειτουργία και διατηρεί τις υπηρεσίες του χώρου χρήστη. Ξεχωριστές παρουσίες εκκινούνται για τους συνδεδεμένους χρήστες, ώστε να θέτουν σε λειτουργία τις υπηρεσίες τους.
Το systemd συνήθως δεν καλείται απευθείας από τον χρήστη, αλλά εγκαθίσταται ως ο σύνδεσμος /sbin/init και ξεκινά κατά τη διάρκεια της πρώιμης εκκίνησης. Οι παρουσίες διαχειριστή χρήστη ξεκινούν αυτόματα μέσω της υπηρεσίας [email protected](5).
Όταν εκτελείται ως παρουσία συστήματος, το systemd ερμηνεύει το αρχείο διαμόρφωσης system.conf και τα αρχεία στους καταλόγους system.conf.d. όταν εκτελείται ως παρουσία χρήστη, το systemd ερμηνεύει το αρχείο διαμόρφωσης user.conf και τα αρχεία στους καταλόγους user.conf.d. Δείτε το systemd-system.conf(5) για περισσότερες πληροφορίες.
Το systemd περιέχει εγγενείς υλοποιήσεις διαφόρων εργασιών που πρέπει να εκτελεστούν ως μέρος της διαδικασίας εκκίνησης. Για παράδειγμα, ορίζει το όνομα κεντρικού υπολογιστή ή διαμορφώνει τη συσκευή δικτύου loopback. Επίσης, θέτει σε λειτουργία και τοποθετεί διάφορα συστήματα αρχείων API, όπως τα /sys/, /proc και /dev/.
Το systemd θα επαναφέρει επίσης το ρολόι συστήματος κατά τη διάρκεια της πρώιμης εκκίνησης, εάν φαίνεται ότι έχει οριστεί εσφαλμένα. Δείτε την ενότητα "Εποχή ρολογιού συστήματος" παρακάτω.
Σημειώστε ότι μόνο ορισμένα από τα περιβάλλοντα που παρέχονται από το systemd καλύπτονται από την υπόσχεση φορητότητας και σταθερότητας περιβάλλοντος[1].
Το API D-Bus του systemd περιγράφεται στο org.freedesktop.systemd1(5) και org.freedesktop.LogControl1(5).
Τα συστήματα που καλούν το systemd σε ένα περιβάλλον κοντέινερ ή initrd θα πρέπει να εφαρμόσουν τις προδιαγραφές Container Interface[2] ή initrd Interface[3], αντίστοιχα.
ΜΟΝΑΔΕΣ
Το systemd παρέχει ένα σύστημα εξαρτήσεων μεταξύ διαφόρων οντοτήτων που ονομάζονται "μονάδες" 11 διαφορετικών τύπων. Οι μονάδες ενσωματώνουν διάφορα αντικείμενα που είναι σχετικά με την εκκίνηση του συστήματος και τη συντήρηση. Οι περισσότερες μονάδες διαμορφώνονται σε αρχεία διαμόρφωσης μονάδων, η σύνταξη και το βασικό σύνολο επιλογών των οποίων περιγράφονται στο systemd.unit(5), ωστόσο ορισμένες δημιουργούνται αυτόματα από άλλα αρχεία διαμόρφωσης, δυναμικά από την κατάσταση του συστήματος ή προγραμματιστικά κατά τη διάρκεια εκτέλεσης. Οι μονάδες μπορούν να βρίσκονται σε διάφορες καταστάσεις, όπως περιγράφεται στον ακόλουθο πίνακα. Σημειώστε ότι οι διάφοροι τύποι μονάδων μπορεί να έχουν διάφορες υποκαταστάσεις, οι οποίες αντιστοιχίζονται στις γενικευμένες καταστάσεις μονάδας που περιγράφονται εδώ.
Πίνακας 1. Καταστάσεις ACTIVE μονάδας
┌──────────────┬─────────────────────────────────────┐
│ Κατάσταση │ Περιγραφή │
├──────────────┼─────────────────────────────────────┤
│ active │ Έχει εκκινηθεί, έχει συνδεθεί, έχει τοποθετηθεί, ...,│
│ │ ανάλογα με τον τύπο της μονάδας. │
├──────────────┼─────────────────────────────────────┤
│ inactive │ Έχει σταματήσει, έχει αποσυνδεθεί, έχει αποσυνδεθεί, ...,│
│ │ ανάλογα με τον τύπο της μονάδας. │
├──────────────┼─────────────────────────────────────┤
│ failed │ Παρόμοιο με το inactive, αλλά η μονάδα │
│ │ απέτυχε με κάποιο τρόπο (η διαδικασία │
│ │ επέστρεψε κωδικό σφάλματος κατά την έξοδο, │
│ │ παρουσίασε σφάλμα, μια λειτουργία εξέπνευσε ή │
│ │ μετά από πάρα πολλές επανεκκινήσεις). │
├──────────────┼─────────────────────────────────────┤
│ activating │ Αλλάζει από inactive σε active. │
├──────────────┼─────────────────────────────────────┤
│ deactivating │ Αλλάζει από active σε inactive. │
├──────────────┼─────────────────────────────────────┤
│ maintenance │ Η μονάδα είναι inactive και βρίσκεται σε εξέλιξη μια λειτουργία συντήρησης. │
├──────────────┼─────────────────────────────────────┤
│ reloading │ Η μονάδα είναι active και επανεκκινεί την
│ │ διαμόρφωσή της. │
├──────────────┼─────────────────────────────────────┤
│ refreshing │ Η μονάδα είναι active και μια νέα μονάδα τοποθετείται │
│ │ στον χώρο ονομάτων της. │
└──────────────┴─────────────────────────────────────┘
Οι ακόλουθοι τύποι μονάδων είναι διαθέσιμοι:
Μονάδες υπηρεσίας, οι οποίες εκκινούν και ελέγχουν δαίμονες και τις διεργασίες που αποτελούνται από αυτούς. Για
λεπτομέρειες, δείτε το systemd.service(5).
Μονάδες υποδοχών, οι οποίες ενσωματώνουν τοπικές υποδοχές IPC ή δικτύου στο σύστημα, χρήσιμες για
ενεργοποίηση βάσει υποδοχών. Για λεπτομέρειες σχετικά με τις μονάδες υποδοχών, δείτε το systemd.socket(5), για λεπτομέρειες
σχετικά με την ενεργοποίηση βάσει υποδοχών και άλλες μορφές ενεργοποίησης, δείτε το daemon(7).
Οι μονάδες-στόχος είναι χρήσιμες για την ομαδοποίηση μονάδων ή την παροχή γνωστών σημείων συγχρονισμού κατά την εκκίνηση, δείτε systemd.target(5).
Οι μονάδες-συσκευής εκθέτουν τις συσκευές του πυρήνα στο systemd και μπορούν να χρησιμοποιηθούν για την υλοποίηση ενεργοποίησης βάσει συσκευών. Για λεπτομέρειες, δείτε systemd.device(5).
Οι μονάδες-σημείου τοποθέτησης ελέγχουν τα σημεία τοποθέτησης στο σύστημα αρχείων, για λεπτομέρειες δείτε systemd.mount(5).
Οι μονάδες-αυτόματης τοποθέτησης παρέχουν δυνατότητες αυτόματης τοποθέτησης, για τοποθέτηση συστημάτων αρχείων κατά απαίτηση καθώς και για παράλληλη εκκίνηση. Δείτε systemd.automount(5).
Οι μονάδες-χρονοδιακόπτη είναι χρήσιμες για την ενεργοποίηση άλλων μονάδων βάσει χρονοδιακοπτών. Μπορείτε να βρείτε λεπτομέρειες στο systemd.timer(5).
Οι μονάδες-εναλλαγής είναι πολύ παρόμοιες με τις μονάδες-σημείου τοποθέτησης και ενσωματώνουν διαμερίσματα μνήμης εναλλαγής ή αρχεία του λειτουργικού συστήματος. Περιγράφονται στο systemd.swap(5).
Οι μονάδες-διαδρομής μπορούν να χρησιμοποιηθούν για την ενεργοποίηση άλλων υπηρεσιών όταν αλλάζουν ή τροποποιούνται αντικείμενα του συστήματος αρχείων. Δείτε systemd.path(5).
Οι μονάδες-τομής μπορούν να χρησιμοποιηθούν για την ομαδοποίηση μονάδων που διαχειρίζονται διαδικασίες συστήματος (όπως μονάδες υπηρεσίας και μονάδες εύρους) σε μια ιεραρχική δομή για σκοπούς διαχείρισης πόρων. Δείτε systemd.slice(5).
Οι μονάδες-εύρους είναι παρόμοιες με τις μονάδες-υπηρεσίας, αλλά διαχειρίζονται ξένες διαδικασίες αντί να τις ξεκινήσουν. Δείτε systemd.scope(5).
Οι μονάδες ονομάζονται όπως τα αρχεία διαμόρφωσής τους. Ορισμένες μονάδες έχουν ειδική σημασιολογία. Μια λεπτομερής λίστα είναι διαθέσιμη στο systemd.special(7).
Το systemd γνωρίζει διάφορους τύπους εξαρτήσεων, συμπεριλαμβανομένων των θετικών και αρνητικών απαιτήσεων εξαρτήσεων (δηλαδή Requires= και Conflicts=) καθώς και των εξαρτήσεων παραγγελίας (After= και Before=). Σημείωση: οι εξαρτήσεις παραγγελίας και απαιτήσεων είναι ορθογώνιες. Εάν υπάρχει μόνο μια εξάρτηση απαιτήσεων μεταξύ δύο μονάδων (π.χ. foo.service απαιτεί bar.service), αλλά όχι εξάρτηση παραγγελίας (π.χ. foo.service μετά το bar.service) και και οι δύο ζητούν να ξεκινήσουν, θα ξεκινήσουν παράλληλα. Είναι ένα κοινό μοτίβο ότι και οι δύο, απαιτήσεις και εξαρτήσεις παραγγελίας, τοποθετούνται μεταξύ δύο μονάδων. Σημειώστε επίσης ότι η πλειονότητα των εξαρτήσεων δημιουργούνται και διατηρούνται σιωπηρά από το systemd. Στις περισσότερες περιπτώσεις, δεν θα πρέπει να είναι απαραίτητο να δηλώνονται επιπλέον εξαρτήσεις χειροκίνητα, ωστόσο είναι δυνατό να γίνει αυτό.
Τα προγράμματα εφαρμογών και οι μονάδες (μέσω των εξαρτήσεων) μπορούν να ζητήσουν αλλαγές κατάστασης των μονάδων. Στο systemd, αυτές οι αιτήσεις ενσωματώνονται ως "εργασίες" και διατηρούνται σε μια ουρά εργασιών. Οι εργασίες μπορούν να επιτύχουν ή να αποτύχουν, η εκτέλεσή τους παραγγέλνεται με βάση τις εξαρτήσεις παραγγελίας των μονάδων για τις οποίες έχουν προγραμματιστεί.
Κατά την εκκίνηση, το systemd ενεργοποιεί τη μονάδα-στόχο default.target, της οποίας η εργασία είναι να ενεργοποιεί τις υπηρεσίες εκκίνησης και άλλες μονάδες εκκίνησης μέσω των εξαρτήσεων. Συνήθως, το όνομα της μονάδας είναι απλώς ένα ψευδώνυμο (συνδεδεμένος σύνδεσμος) είτε για την graphical.target (για πλήρως λειτουργικές εκκινήσεις στο περιβάλλον εργασίας χρήστη) είτε για την multi-user.target (για περιορισμένες εκκινήσεις μόνο κονσόλας για χρήση σε ενσωματωμένα ή διακομιστή περιβάλλοντα ή παρόμοια· ένα υποσύνολο του graphical.target). Ωστόσο, είναι στην κρίση του διαχειριστή να το διαμορφώσει ως ψευδώνυμο σε οποιαδήποτε άλλη μονάδα-στόχο. Δείτε systemd.special(7) για λεπτομέρειες σχετικά με αυτές τις μονάδες-στόχους.
Κατά την πρώτη εκκίνηση, το systemd θα ενεργοποιήσει ή θα απενεργοποιήσει μονάδες σύμφωνα με μια προκαθορισμένη πολιτική. Δείτε το systemd.preset(5) και την ενότητα "Σημασιολογία Πρώτης Εκκίνησης" στο machine-id(5).
Το systemd διατηρεί μόνο ένα ελάχιστο σύνολο μονάδων φορτωμένο στη μνήμη. Συγκεκριμένα, οι μόνες μονάδες που διατηρούνται φορτωμένες στη μνήμη είναι εκείνες για τις οποίες ισχύει τουλάχιστον μία από τις ακόλουθες συνθήκες:
Είναι σε ενεργή, ενεργοποιούμενη, απενεργοποιούμενη ή αποτυχημένη κατάσταση (δηλαδή, σε οποιαδήποτε κατάσταση μονάδας εκτός από την "ανενεργή")
Έχει μια εργασία σε αναμονή για αυτήν
Είναι μια εξάρτηση τουλάχιστον μιας άλλης μονάδας που είναι φορτωμένη στη μνήμη
Έχει κάποια μορφή πόρου που εξακολουθεί να είναι διαθέσιμη (π.χ., μια μονάδα υπηρεσίας που είναι ανενεργή, αλλά για την οποία μια διαδικασία εξακολουθεί να βρίσκεται σε εκκρεμότητα και αγνόησε το αίτημα τερματισμού)
Έχει προγραμματικά συνδεθεί στη μνήμη μέσω μιας κλήσης D-Bus
Το systemd θα φορτώνει αυτόματα και σιωπηρά μονάδες από το δίσκο – εάν δεν είναι ήδη φορτωμένες – μόλις ζητηθούν λειτουργίες για αυτές. Έτσι, σε πολλούς τομείς, το γεγονός εάν μια μονάδα είναι φορτωμένη ή όχι είναι αόρατο στους πελάτες. Χρησιμοποιήστε την εντολή `systemctl list-units --all` για να καταγράψετε όλες τις μονάδες που είναι επί του παρόντος φορτωμένες. Οποιαδήποτε μονάδα για την οποία καμία από τις παραπάνω συνθήκες δεν ισχύει, θα αποφορτωθεί άμεσα. Σημειώστε ότι όταν μια μονάδα αποφορτωθεί από τη μνήμη, τα δεδομένα λογιστικής της απομακρύνονται επίσης. Ωστόσο, αυτά τα δεδομένα γενικά δεν χάνονται, καθώς δημιουργείται μια εγγραφή αρχείου καταγραφής που δηλώνει τους χρησιμοποιούμενους πόρους κάθε φορά που μια μονάδα τερματίζεται.
Οι διαδικασίες που δημιουργεί το systemd τοποθετούνται σε μεμονωμένες ομάδες ελέγχου Linux, με όνομα τη μονάδα στην οποία ανήκουν, στην ιδιωτική ιεραρχία του systemd. (Δείτε το [Control Groups v2](4) για περισσότερες πληροφορίες σχετικά με τις ομάδες ελέγχου, ή απλά "cgroups"). Το systemd χρησιμοποιεί αυτό για να παρακολουθεί αποτελεσματικά τις διαδικασίες. Οι πληροφορίες της ομάδας ελέγχου διατηρούνται στον πυρήνα και είναι προσβάσιμες μέσω της ιεραρχίας του συστήματος αρχείων (κάτω από το /sys/fs/cgroup/) ή σε εργαλεία όπως το systemd-cgls(1) ή το [ps]({filename}../../ps)(1) (η εντολή `ps xawf -eo pid,user,cgroup,args` είναι ιδιαίτερα χρήσιμη για την καταγραφή όλων των διαδικασιών και των μονάδων systemd στις οποίες ανήκουν.).
Το systemd είναι συμβατό με διάφορες καθιερωμένες λειτουργίες Unix, όπως το /etc/fstab ή η βάση δεδομένων utmp.
Το systemd διαθέτει ένα ελάχιστο σύστημα συναλλαγών: εάν ζητηθεί η εκκίνηση ή ο τερματισμός μιας μονάδας, θα την προσθέσει και θα προσθέσει όλες τις εξαρτήσεις της σε μια προσωρινή συναλλαγή. Στη συνέχεια, θα επαληθεύσει εάν η συναλλαγή είναι συνεπής (δηλαδή, εάν η σειρά όλων των μονάδων είναι χωρίς κύκλους). Εάν δεν είναι, το systemd θα προσπαθήσει να την διορθώσει και θα αφαιρέσει μη απαραίτητες εργασίες από τη συναλλαγή που θα μπορούσαν να αφαιρέσουν τον κύκλο. Επίσης, το systemd προσπαθεί να καταστείλει μη απαραίτητες εργασίες στη συναλλαγή που θα σταματούσαν μια λειτουργική υπηρεσία. Τέλος, ελέγχεται εάν οι εργασίες της συναλλαγής έρχονται σε αντίθεση με εργασίες που έχουν ήδη τεθεί σε αναμονή και, προαιρετικά, η συναλλαγή θα ακυρωθεί. Εάν όλα εξελιχθούν καλά και η συναλλαγή είναι συνεπής και ελαχιστοποιεί την επίδρασή της, θα συγχωνευθεί με όλες τις εκκρεμείς εργασίες και θα προστεθεί στην ουρά εκτέλεσης. Στην πράξη, αυτό σημαίνει ότι πριν εκτελέσει μια ζητούμενη λειτουργία, το systemd θα επαληθεύσει ότι έχει νόημα, διορθώνοντάς την εάν είναι δυνατόν και αποτυγχάνοντας μόνο εάν δεν μπορεί πραγματικά να λειτουργήσει.
Σημειώστε ότι οι συναλλαγές δημιουργούνται ανεξάρτητα από την κατάσταση μιας μονάδας κατά την εκτέλεση, επομένως, για παράδειγμα, εάν ζητηθεί μια εργασία εκκίνησης σε μια ήδη ενεργοποιημένη μονάδα, θα εξακολουθεί να δημιουργεί μια συναλλαγή και να ενεργοποιεί τυχόν ανενεργές εξαρτήσεις (και να προκαλεί διάδοση άλλων εργασιών όπως ορίζεται στις καθορισμένες σχέσεις). Αυτό συμβαίνει επειδή η εργασία που έχει τεθεί στην ουρά συγκρίνεται με την κατάσταση της στοχευόμενης μονάδας κατά τη στιγμή της εκτέλεσης και επισημαίνεται ως επιτυχής και ολοκληρωμένη όταν και οι δύο ικανοποιούν τις προϋποθέσεις. Ωστόσο, αυτή η εργασία περιλαμβάνει επίσης άλλες εξαρτήσεις λόγω των καθορισμένων σχέσεων, γεγονός που οδηγεί, στο παράδειγμά μας, σε εργασίες εκκίνησης για οποιεσδήποτε από αυτές τις ανενεργές μονάδες που επίσης τίθενται στην ουρά.
Οι μονάδες μπορούν να δημιουργούνται δυναμικά κατά την εκκίνηση και κατά τη φόρτωση του διαχειριστή συστήματος, για παράδειγμα, βάσει άλλων αρχείων διαμόρφωσης ή παραμέτρων που μεταβιβάζονται στη γραμμή εντολών του πυρήνα. Για λεπτομέρειες, δείτε το systemd.generator(7).
ΚΑΤΑΛΟΓΟΙ
Κατάλογοι μονάδων συστήματος Ο διαχειριστής συστήματος systemd διαβάζει τις διαμορφώσεις μονάδων από διάφορους καταλόγους. Τα πακέτα που θέλουν να εγκαταστήσουν αρχεία μονάδων θα πρέπει να τα τοποθετούν στον κατάλογο που επιστρέφεται από την εντολή pkg-config systemd --variable=systemdsystemunitdir. Άλλοι κατάλογοι που ελέγχονται είναι οι /usr/local/lib/systemd/system και /usr/lib/systemd/system. Η διαμόρφωση του χρήστη έχει πάντα προτεραιότητα. Η εντολή pkg-config systemd --variable=systemdsystemconfdir επιστρέφει τη διαδρομή του καταλόγου διαμόρφωσης του συστήματος.
Τα πακέτα θα πρέπει να τροποποιούν το περιεχόμενο αυτών των καταλόγων μόνο με τις εντολές ενεργοποίησης και απενεργοποίησης του εργαλείου systemctl(1). Η πλήρης λίστα των καταλόγων παρέχεται στο systemd.unit(5).
Κατάλογοι μονάδων χρήστη Παρόμοιοι κανόνες ισχύουν για τους καταλόγους μονάδων χρήστη. Ωστόσο, εδώ ακολουθείται η προδιαγραφή XDG Base Directory[5] για την εύρεση των μονάδων. Οι εφαρμογές θα πρέπει να τοποθετούν τα αρχεία μονάδων τους στον κατάλογο που επιστρέφεται από την εντολή pkg-config systemd --variable=systemduserunitdir. Η παγκόσμια διαμόρφωση γίνεται στον κατάλογο που αναφέρεται από την εντολή pkg-config systemd --variable=systemduserconfdir. Οι εντολές ενεργοποίησης και απενεργοποίησης του εργαλείου systemctl(1) μπορούν να χειριστούν τόσο την παγκόσμια (δηλαδή, για όλους τους χρήστες) όσο και την ιδιωτική (για έναν χρήστη) ενεργοποίηση/απενεργοποίηση μονάδων. Η πλήρης λίστα των καταλόγων παρέχεται στο systemd.unit(5).
ΣΗΜΑΤΑ
Η υπηρεσία ακούει διάφορα σήματα διαδικασίας UNIX που μπορούν να χρησιμοποιηθούν για την υποβολή αιτημάτων για διάφορες ενέργειες ασύγχρονα. Η διαχείριση σημάτων ενεργοποιείται πολύ νωρίς κατά την εκκίνηση, πριν από την έναρξη οποιωνδήποτε άλλων διαδικασιών. Ωστόσο, ένας εποπτικός διαχειριστής κοντέινερ ή παρόμοιος που σκοπεύει να υποβάλει αιτήματα για αυτές τις λειτουργίες μέσω αυτού του μηχανισμού θα πρέπει να λάβει υπόψη ότι αυτή η λειτουργικότητα δεν είναι διαθέσιμη κατά τη διάρκεια της πρώιμης φάσης αρχικοποίησης. Ένα μήνυμα ειδοποίησης sd_notify() που περιέχει το πεδίο X_SYSTEMD_SIGNALS_LEVEL=2 εκπέμπεται μόλις ενεργοποιηθούν οι χειριστές σημάτων, δείτε παρακάτω. Αυτό μπορεί να χρησιμοποιηθεί για τον σωστό προγραμματισμό της υποβολής αυτών των σημάτων.
SIGTERM
Όταν λαμβάνει αυτό το σήμα, ο διαχειριστής συστήματος systemd σειριοποιεί την κατάστασή του, επανακινεί τον εαυτό του και αποσειριοποιεί ξανά την αποθηκευμένη κατάσταση. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl daemon-reexec`.
Οι διαχειριστές χρηστών systemd θα ξεκινήσουν την μονάδα `exit.target` όταν ληφθεί αυτό το σήμα. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl --user start exit.target --job-mode=replace-irreversibly`.
SIGINT
Όταν λαμβάνει αυτό το σήμα, ο διαχειριστής συστήματος systemd θα ξεκινήσει την μονάδα `ctrl-alt-del.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start ctrl-alt-del.target --job-mode=replace-irreversibly`. Εάν αυτό το σήμα ληφθεί περισσότερες από 7 φορές σε 2 δευτερόλεπτα, θα εκκινηθεί μια άμεση επανεκκίνηση. Σημειώστε ότι η πίεση των πλήκτρων Ctrl+Alt+Del στην κονσόλα θα προκαλέσει αυτό το σήμα. Επομένως, εάν μια επανεκκίνηση έχει κολλήσει, η πίεση των πλήκτρων Ctrl+Alt+Del περισσότερες από 7 φορές σε 2 δευτερόλεπτα είναι ένας σχετικά ασφαλής τρόπος για να εκκινηθεί μια άμεση επανεκκίνηση.
Οι διαχειριστές χρηστών systemd αντιμετωπίζουν αυτό το σήμα με τον ίδιο τρόπο όπως και το SIGTERM.
SIGWINCH
Όταν ληφθεί αυτό το σήμα, ο διαχειριστής συστήματος systemd θα ξεκινήσει την μονάδα `kbrequest.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start kbrequest.target`.
Αυτό το σήμα αγνοείται από τους διαχειριστές χρηστών systemd.
SIGPWR
Όταν ληφθεί αυτό το σήμα, ο διαχειριστής systemd θα ξεκινήσει την μονάδα `sigpwr.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start sigpwr.target`.
SIGUSR1
Όταν ληφθεί αυτό το σήμα, ο διαχειριστής systemd θα προσπαθήσει να επανασυνδεθεί στο δίαυλο D-Bus.
SIGUSR2
Όταν ληφθεί αυτό το σήμα, ο διαχειριστής systemd θα καταγράψει την πλήρη κατάστασή του σε μορφή αναγνώσιμη από τον άνθρωπο. Τα δεδομένα που καταγράφονται είναι τα ίδια με αυτά που εκτυπώνονται από την εντολή `systemd-analyze dump`.
SIGHUP
Επαναφορτώνει ολόκληρη τη διαμόρφωση του daemon. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl daemon-reload`.
SIGRTMIN+0
Εισέρχεται στην προεπιλεγμένη λειτουργία, ξεκινά την μονάδα `default.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl isolate default.target`.
SIGRTMIN+1
Εισέρχεται στην λειτουργία διάσωσης, ξεκινά την μονάδα `rescue.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl isolate rescue.target`.
SIGRTMIN+2
Εισέρχεται στην λειτουργία έκτακτης ανάγκης, ξεκινά την μονάδα `emergency.service`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl isolate emergency.service`.
SIGRTMIN+3
Τερματίζει την μηχανή, ξεκινά την μονάδα `halt.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start halt.target --job-mode=replace-irreversibly`.
SIGRTMIN+4
Απενεργοποιεί την μηχανή, ξεκινά την μονάδα `poweroff.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start poweroff.target --job-mode=replace-irreversibly`.
SIGRTMIN+5
Επανεκκινεί την μηχανή, ξεκινά την μονάδα `reboot.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start reboot.target --job-mode=replace-irreversibly`.
SIGRTMIN+6
Επανεκκινεί την μηχανή μέσω του kexec, ξεκινά την μονάδα `kexec.target`. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή `systemctl start kexec.target --job-mode=replace-irreversibly`.
SIGRTMIN+7
Επανεκκινεί το χώρο του χρήστη, ξεκινά την μονάδα soft-reboot.target. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή systemctl start soft-reboot.target --job-mode=replace-irreversibly.
Προστέθηκε στην έκδοση 254.
SIGRTMIN+13
Διακόπτει αμέσως το σύστημα.
SIGRTMIN+14
Απενεργοποιεί αμέσως το σύστημα.
SIGRTMIN+15
Επανεκκινεί αμέσως το σύστημα.
SIGRTMIN+16
Επανεκκινεί αμέσως το σύστημα με χρήση του kexec.
SIGRTMIN+17
Επανεκκινεί αμέσως το χώρο του χρήστη.
Προστέθηκε στην έκδοση 254.
SIGRTMIN+20
Ενεργοποιεί την εμφάνιση μηνυμάτων κατάστασης στην κονσόλα, όπως ελέγχεται μέσω του systemd.show_status=1 στην γραμμή εντολών του πυρήνα.
Μπορεί να θέλετε να χρησιμοποιήσετε το SetShowStatus() αντί για το SIGRTMIN+20, προκειμένου να αποφύγετε πιθανά προβλήματα χρονισμού. Δείτε το org.freedesktop.systemd1(5).
SIGRTMIN+21
Απενεργοποιεί την εμφάνιση μηνυμάτων κατάστασης στην κονσόλα, όπως ελέγχεται μέσω του systemd.show_status=0 στην γραμμή εντολών του πυρήνα.
Μπορεί να θέλετε να χρησιμοποιήσετε το SetShowStatus() αντί για το SIGRTMIN+21, προκειμένου να αποφύγετε πιθανά προβλήματα χρονισμού. Δείτε το org.freedesktop.systemd1(5).
SIGRTMIN+22
Ορίζει το επίπεδο καταγραφής του διαχειριστή υπηρεσιών σε "debug", με τρόπο ισοδύναμο με το systemd.log_level=debug στην γραμμή εντολών του πυρήνα.
SIGRTMIN+23
Επαναφέρει το επίπεδο καταγραφής στην διαμορφωμένη τιμή του. Η διαμορφωμένη τιμή προέρχεται – με σειρά προτεραιότητας – από την τιμή που καθορίζεται με το systemd.log-level= στην γραμμή εντολών του πυρήνα, ή την τιμή που καθορίζεται με το LogLevel= στο αρχείο διαμόρφωσης, ή την προεπιλεγμένη τιμή "info".
Προστέθηκε στην έκδοση 239.
SIGRTMIN+24
Τερματίζει αμέσως τον διαχειριστή (διαθέσιμο μόνο για περιπτώσεις --user).
Προστέθηκε στην έκδοση 195.
SIGRTMIN+25
Όταν λαμβάνει αυτό το σήμα, ο διαχειριστής του systemd θα εκτελέσει ξανά τον εαυτό του. Αυτό είναι σε μεγάλο βαθμό ισοδύναμο με την εντολή systemctl daemon-reexec, εκτός από το ότι θα γίνει ασύγχρονα.
Ο διαχειριστής του συστήματος systemd αντιμετωπίζει αυτό το σήμα με τον ίδιο τρόπο όπως και το SIGTERM.
Προστέθηκε στην έκδοση 250.
SIGRTMIN+26
Επαναφέρει τον προορισμό καταγραφής στην διαμορφωμένη τιμή του. Η διαμορφωμένη τιμή προέρχεται – με σειρά προτεραιότητας – από την τιμή που καθορίζεται με το systemd.log-target= στην γραμμή εντολών του πυρήνα, ή την τιμή που καθορίζεται με το LogTarget= στο αρχείο διαμόρφωσης, ή την προεπιλεγμένη τιμή.
Προστέθηκε στην έκδοση 239.
SIGRTMIN+27, SIGRTMIN+28
Ορίζει τον προορισμό καταγραφής σε "console" όταν λαμβάνεται το SIGRTMIN+27 (ή σε "kmsg" όταν λαμβάνεται το SIGRTMIN+28), με τρόπο ισοδύναμο με το systemd.log_target=console (ή systemd.log_target=kmsg όταν λαμβάνεται το SIGRTMIN+28) στην γραμμή εντολών του πυρήνα.
Προστέθηκε στην έκδοση 239.
ΠΕΡΙΒΑΛΛΟΝ
Το μπλοκ περιβάλλοντος για τον διαχειριστή του συστήματος ορίζεται αρχικά από τον πυρήνα. (Συγκεκριμένα, οι αναθέσεις "key=value" στην γραμμή εντολών του πυρήνα μετατρέπονται σε μεταβλητές περιβάλλοντος για το PID 1. Για τον διαχειριστή του χρήστη, ο διαχειριστής του συστήματος ορίζει το περιβάλλον όπως περιγράφεται στην ενότητα "Μεταβλητές περιβάλλοντος στις δημιουργημένες διεργασίες" του systemd.exec(5). Η ρύθμιση DefaultEnvironment= στον διαχειριστή του συστήματος ισχύει για όλες τις υπηρεσίες, συμπεριλαμβανομένης της [email protected]. Μπορούν επίσης να διαμορφωθούν πρόσθετες καταχωρήσεις (όπως για οποιαδήποτε άλλη υπηρεσία) μέσω των ρυθμίσεων Environment= και EnvironmentFile= για την [email protected] (δείτε το systemd.exec(5)). Επίσης, μπορούν να οριστούν πρόσθετες μεταβλητές περιβάλλοντος μέσω της ρύθμισης ManagerEnvironment= στα αρχεία systemd-system.conf(5) και systemd-user.conf(5).
Μερικές από τις μεταβλητές που κατανοεί το systemd:
$SYSTEMD_LOG_LEVEL
Το μέγιστο επίπεδο καταγραφής των εκπεμπόμενων μηνυμάτων (τα μηνύματα με υψηλότερο επίπεδο καταγραφής, δηλαδή τα λιγότερο σημαντικά, θα καταστέλλονται). Δέχεται μια λίστα τιμών χωρισμένων με κόμμα. Μια τιμή μπορεί να είναι είτε μία από τις (με σειρά φθίνουσας σημασίας) emerg, alert, crit, err, warning, notice, info, debug, είτε ένας ακέραιος αριθμός στο εύρος 0...7. Δείτε το syslog(3) για περισσότερες πληροφορίες. Κάθε τιμή μπορεί προαιρετικά να έχει πρόθεμα μία από τις τιμές console, syslog, kmsg ή journal ακολουθούμενη από μια άνω τελεία, για να οριστεί το μέγιστο επίπεδο καταγραφής για αυτόν τον συγκεκριμένο προορισμό καταγραφής (π.χ.
SYSTEMD_LOG_LEVEL=debug,console:info καθορίζει την καταγραφή σε επίπεδο debug, εκτός από την καταγραφή στην κονσόλα, η οποία θα πρέπει να είναι σε επίπεδο info). Σημειώστε ότι το καθολικό μέγιστο επίπεδο καταγραφής έχει προτεραιότητα έναντι οποιωνδήποτε επιπέδων καταγραφής ανά προορισμό.
Αυτό μπορεί να παρακαμφθεί με το --log-level=.
$SYSTEMD_LOG_COLOR
Μια τιμή boolean. Εάν είναι true, τα μηνύματα που γράφονται στο tty θα έχουν χρώμα ανάλογα με την προτεραιότητα.
Αυτό μπορεί να παρακαμφθεί με το --log-color=.
$SYSTEMD_LOG_TIME
Μια τιμή boolean. Εάν είναι true, τα μηνύματα καταγραφής της κονσόλας θα έχουν πρόθεμα με μια χρονική σήμανση.
Αυτό μπορεί να παρακαμφθεί με το --log-time=.
Προστέθηκε στην έκδοση 246.
$SYSTEMD_LOG_LOCATION
Μια τιμή boolean. Εάν είναι true, τα μηνύματα θα έχουν πρόθεμα με το όνομα αρχείου και τον αριθμό γραμμής στον πηγαίο κώδικα από όπου προέρχονται τα μηνύματα.
Αυτό μπορεί να παρακαμφθεί με το --log-location=.
$SYSTEMD_LOG_TID
Μια τιμή boolean. Εάν είναι true, τα μηνύματα θα έχουν πρόθεμα με το τρέχον αριθμητικό αναγνωριστικό thread (TID).
Προστέθηκε στην έκδοση 247.
$SYSTEMD_LOG_TARGET
Ο προορισμός για τα μηνύματα καταγραφής. Μία από τις τιμές: console (καταγραφή στο συνδεδεμένο tty), console-prefixed (καταγραφή στο συνδεδεμένο tty αλλά με προθέματα που κωδικοποιούν το επίπεδο καταγραφής και την "διεύθυνση", δείτε το syslog(3), kmsg (καταγραφή στο buffer κυκλικής καταγραφής του kernel), journal (καταγραφή στο journal), journal-or-kmsg (καταγραφή στο journal εάν είναι διαθέσιμο και στο kmsg αλλιώς), auto (καθορισμός του κατάλληλου προορισμού καταγραφής αυτόματα, η προεπιλογή), null (απενεργοποίηση της εξόδου καταγραφής).
Αυτό μπορεί να παρακαμφθεί με το --log-target=.
$SYSTEMD_LOG_RATELIMIT_KMSG
Καθορίζει εάν θα γίνεται περιορισμός της συχνότητας καταγραφής στο kmsg ή όχι. Δέχεται μια τιμή boolean. Η προεπιλογή είναι "true". Εάν απενεργοποιηθεί, το systemd δεν θα περιορίζει τη συχνότητα των μηνυμάτων που γράφονται στο kmsg.
Προστέθηκε στην έκδοση 254.
$XDG_CONFIG_HOME, $XDG_CONFIG_DIRS, $XDG_DATA_HOME, $XDG_DATA_DIRS
Ο διαχειριστής χρηστών systemd χρησιμοποιεί αυτές τις μεταβλητές σύμφωνα με τις προδιαγραφές XDG Base Directory[5] για να βρει τη διαμόρφωσή του.
$SYSTEMD_UNIT_PATH, $SYSTEMD_GENERATOR_PATH, $SYSTEMD_ENVIRONMENT_GENERATOR_PATH
Καθορίζουν πού το systemd αναζητά αρχεία μονάδων και γεννήτριες.
Αυτές οι μεταβλητές ενδέχεται να περιέχουν μια λίστα διαδρομών, χωρισμένων με άνω τελείες (":"). Όταν ορίζεται, εάν η λίστα τελειώνει με ένα κενό στοιχείο ("...:"), αυτή η λίστα προτίθεται στην κανονική λίστα διαδρομών. Διαφορετικά, η καθορισμένη λίστα αντικαθιστά την κανονική λίστα διαδρομών.
$SYSTEMD_PAGER, $PAGER
Σελίδα που χρησιμοποιείται όταν δεν δίνεται η επιλογή --no-pager. Χρησιμοποιείται το $SYSTEMD_PAGER εάν έχει οριστεί. διαφορετικά χρησιμοποιείται το $PAGER. Εάν ούτε το $SYSTEMD_PAGER ούτε το $PAGER έχουν οριστεί, δοκιμάζονται διαδοχικά μια σειρά από γνωστές υλοποιήσεις σελιδοποίησης, συμπεριλαμβανομένου του [less]({filename}../../less)(1) και του more(1), μέχρι να βρεθεί κάποια. Εάν δεν βρεθεί καμία υλοποίηση σελιδοποίησης, δεν καλείται σελιδοποιητής. Η ρύθμιση αυτών των μεταβλητών περιβάλλοντος σε μια κενή συμβολοσειρά ή στην τιμή "cat" είναι ισοδύναμη με τη χρήση της επιλογής --no-pager.
Σημείωση: εάν το $SYSTEMD_PAGERSECURE δεν έχει οριστεί, τα $SYSTEMD_PAGER και $PAGER μπορούν να χρησιμοποιηθούν μόνο για την απενεργοποίηση της σελιδοποίησης (με "cat" ή ""), και διαφορετικά αγνοούνται.
$SYSTEMD_LESS
Αντικαταστήστε τις επιλογές που περνιούνται στο less (από προεπιλογή "FRSXMK").
Οι χρήστες ενδέχεται να θέλουν να αλλάξουν δύο συγκεκριμένες επιλογές:
K
Αυτή η επιλογή δίνει την εντολή στον σελιδοποιητή να τερματίσει αμέσως όταν πατηθεί το Ctrl+C. Για να επιτραπεί στο less να χειριστεί το Ctrl+C μόνο του, ώστε να επιστρέψει στην προτροπή εντολών του σελιδοποιητή, καταργήστε αυτήν την επιλογή.
Εάν η τιμή του $SYSTEMD_LESS δεν περιλαμβάνει το "K" και ο σελιδοποιητής που καλείται είναι το less, το Ctrl+C θα αγνοηθεί από το εκτελέσιμο αρχείο και θα πρέπει να χειριστεί από τον σελιδοποιητή.
X
Αυτή η επιλογή δίνει την εντολή στον σελιδοποιητή να μην στέλνει συμβολοσειρές αρχικοποίησης και τερματισμού στο τερματικό. Είναι ορισμένη από προεπιλογή για να επιτρέπεται στην έξοδο της εντολής να παραμένει ορατή στο τερματικό, ακόμη και μετά την έξοδο του σελιδοποιητή. Ωστόσο, αυτό αποτρέπει ορισμένες λειτουργίες του σελιδοποιητή, συγκεκριμένα η σελιδοποιημένη έξοδος δεν μπορεί να γίνει κύλιση με το ποντίκι.
Σημειώστε ότι η ρύθμιση της κανονικής μεταβλητής περιβάλλοντος $LESS δεν έχει καμία επίδραση στις κλήσεις του less από τα εργαλεία του systemd.
$SYSTEMD_LESSCHARSET
Αντικαταστήστε το σύνολο χαρακτήρων που περνιέται στο less (από προεπιλογή "utf-8", εάν το τερματικό που καλείται καθορίζεται ότι είναι συμβατό με UTF-8).
Σημειώστε ότι η ρύθμιση της κανονικής μεταβλητής περιβάλλοντος $LESSCHARSET δεν έχει καμία επίδραση στις κλήσεις του less από τα εργαλεία του systemd.
$SYSTEMD_PAGERSECURE
Κοινές εντολές σελιδοποιητή, όπως το [less]({filename}../../less)(1), εκτός από την "σελιδοποίηση", δηλαδή την κύλιση της εξόδου, υποστηρίζουν επίσης το άνοιγμα ή την εγγραφή σε άλλα αρχεία και την εκτέλεση αυθαίρετων εντολών shell. Όταν οι εντολές καλούνται με αυξημένα δικαιώματα, για παράδειγμα κάτω από το [sudo]({filename}../../sudo)(8) ή το pkexec(1), ο σελιδοποιητής γίνεται ένα όριο ασφαλείας. Πρέπει να ληφθεί μέριμνα ώστε να χρησιμοποιούνται μόνο προγράμματα με αυστηρά περιορισμένη λειτουργικότητα ως σελιδοποιητές και να μην επιτρέπονται ακούσιες διαδραστικές λειτουργίες, όπως το άνοιγμα ή η δημιουργία νέων αρχείων ή η εκκίνηση υποδιεργασιών. Η "ασφαλής λειτουργία" για τον σελιδοποιητή μπορεί να ενεργοποιηθεί όπως περιγράφεται παρακάτω, εάν ο σελιδοποιητής το υποστηρίζει (οι περισσότεροι σελιδοποιητές δεν είναι γραμμένοι με τρόπο που να λαμβάνει υπόψη αυτό). Συνιστάται είτε να ενεργοποιήσετε ρητά την "ασφαλή λειτουργία" είτε να απενεργοποιήσετε εντελώς τον σελιδοποιητή χρησιμοποιώντας την επιλογή --no-pager ή το PAGER=cat όταν επιτρέπετε σε μη αξιόπιστους χρήστες να εκτελούν εντολές με αυξημένα δικαιώματα.
Αυτή η επιλογή παίρνει ένα boolean όρισμα. Όταν ορίζεται σε true, ενεργοποιείται η "ασφαλής λειτουργία" του pager. Στη "ασφαλή λειτουργία", το LESSSECURE=1 θα οριστεί κατά την εκκίνηση του pager, το οποίο δίνει οδηγίες στο pager να απενεργοποιήσει τις εντολές που ανοίγουν ή δημιουργούν νέα αρχεία ή εκκινούν νέες υποδιεργασίες. Επί του παρόντος, μόνο το less(1) είναι γνωστό ότι κατανοεί αυτήν τη μεταβλητή και εφαρμόζει την "ασφαλή λειτουργία".
Όταν ορίζεται σε false, δεν τίθενται περιορισμοί στο pager. Η ρύθμιση του SYSTEMD_PAGERSECURE=0 ή η μη κατάργησή του από το κληρονομημένο περιβάλλον ενδέχεται να επιτρέψει στον χρήστη να εκτελέσει αυθαίρετες εντολές.
Όταν η $SYSTEMD_PAGERSECURE δεν είναι ορισμένη, τα εργαλεία systemd προσπαθούν να προσδιορίσουν αυτόματα εάν η "ασφαλής λειτουργία" θα πρέπει να ενεργοποιηθεί και εάν το pager το υποστηρίζει. Η "ασφαλής λειτουργία" ενεργοποιείται αν το αποτελεσματικό UID δεν είναι το ίδιο με το UID του κατόχου της συνεδρίας σύνδεσης, δείτε geteuid(2) και sd_pid_get_owner_uid(3), ή κατά την εκτέλεση υπό το sudo(8) ή παρόμοια εργαλεία (η $SUDO_UID είναι ορισμένη [6]). Σε αυτές τις περιπτώσεις, το SYSTEMD_PAGERSECURE=1 θα οριστεί και τα pagers που δεν είναι γνωστό ότι εφαρμόζουν την "ασφαλή λειτουργία" δεν θα χρησιμοποιηθούν καθόλου. Σημειώστε ότι αυτή η αυτόματη ανίχνευση καλύπτει μόνο τους πιο συνηθισμένους μηχανισμούς για την αύξηση των προνομίων και προορίζεται ως διευκόλυνση. Συνιστάται να ορίσετε ρητά το $SYSTEMD_PAGERSECURE ή να απενεργοποιήσετε το pager.
Σημειώστε ότι εάν οι μεταβλητές $SYSTEMD_PAGER ή $PAGER πρόκειται να τηρηθούν, εκτός από την απενεργοποίηση του pager, θα πρέπει επίσης να οριστεί το $SYSTEMD_PAGERSECURE.
$SYSTEMD_COLORS
Παίρνει ένα boolean όρισμα. Όταν είναι true, το systemd και τα σχετικά βοηθητικά προγράμματα θα χρησιμοποιούν χρώματα στην έξοδό τους, διαφορετικά η έξοδος θα είναι ασπρόμαυρη. Επιπλέον, η μεταβλητή μπορεί να πάρει μία από τις ακόλουθες ειδικές τιμές: "16", "256" για να περιορίσει τη χρήση χρωμάτων στα βασικά 16 ή 256 χρώματα ANSI, αντίστοιχα. Αυτό μπορεί να καθοριστεί για να αντικαταστήσει την αυτόματη απόφαση που βασίζεται στο $TERM και στο τι είναι συνδεδεμένη η κονσόλα.
$SYSTEMD_URLIFY
Η τιμή πρέπει να είναι boolean. Ελέγχει εάν θα δημιουργηθούν εξαγώγιμοι σύνδεσμοι στην έξοδο για τερματικά που υποστηρίζουν αυτό. Αυτό μπορεί να καθοριστεί για να αντικαταστήσει την απόφαση που λαμβάνει το systemd με βάση το $TERM και άλλες συνθήκες.
$LISTEN_PID, $LISTEN_PIDFDID, $LISTEN_FDS, $LISTEN_FDNAMES
Ορίζεται από το systemd για τις εποπτευόμενες διεργασίες κατά τη διάρκεια της ενεργοποίησης που βασίζεται στην υποδοχή. Δείτε το sd_listen_fds(3) για περισσότερες πληροφορίες.
$NOTIFY_SOCKET
Ορίζεται από τον διαχειριστή υπηρεσιών για τις υπηρεσίες του για ειδοποιήσεις κατάστασης και ετοιμότητας. Χρησιμοποιείται επίσης από τον διαχειριστή υπηρεσιών για την ειδοποίηση των εποπτικών διαχειριστών κοντέινερ ή των διαχειριστών υπηρεσιών στην ιεραρχία σχετικά με την πρόοδό του. Δείτε το sd_notify(3) και την αντίστοιχη ενότητα παρακάτω για περισσότερες πληροφορίες.
Για περισσότερες μεταβλητές περιβάλλοντος που κατανοεί το systemd και τα διάφορα συστατικά του, δείτε τις Γνωστές Μεταβλητές Περιβάλλοντος[7].
ΓΡΑΜΜΗ ΕΝΤΟΛΩΝ ΠΥΡΗΝΑ
Όταν εκτελείται ως η συστημική παρουσία, το systemd αναλύει μια σειρά επιλογών που αναφέρονται παρακάτω. Μπορούν να καθοριστούν ως ορίσματα γραμμής εντολών πυρήνα, τα οποία αναλύονται από διάφορες πηγές ανάλογα με το περιβάλλον στο οποίο εκτελείται το systemd. Εάν εκτελείται μέσα σε ένα κοντέινερ Linux, αυτές οι επιλογές αναλύονται από τα ορίσματα γραμμής εντολών που μεταβιβάζονται στο systemd, εκτός από οποιεσδήποτε από τις επιλογές γραμμής εντολών που αναφέρονται στην ενότητα Επιλογές παραπάνω. Εάν εκτελείται εκτός των κοντέινερ Linux, αυτά τα ορίσματα αναλύονται από το /proc/cmdline.
Οι ακόλουθες μεταβλητές είναι κατανοητές:
systemd.unit=, rd.systemd.unit=
Αντικαθιστά τη μονάδα που θα ενεργοποιηθεί κατά την εκκίνηση. Από προεπιλογή είναι η default.target. Αυτό μπορεί να χρησιμοποιηθεί για να
εκκινήσετε προσωρινά σε μια διαφορετική μονάδα εκκίνησης, για παράδειγμα rescue.target ή emergency.service.
Δείτε το systemd.special(7) για λεπτομέρειες σχετικά με αυτές τις μονάδες. Η επιλογή που προτάσσεται με το "rd."
ισχύει μόνο στο initrd, ενώ η επιλογή που δεν έχει αυτό το πρόθεμα ισχύει μόνο στο κύριο σύστημα.
systemd.dump_core
Δέχεται ένα λογικό όρισμα ή ενεργοποιεί την επιλογή εάν καθοριστεί χωρίς όρισμα. Εάν είναι ενεργοποιημένο, ο διαχειριστής systemd (PID 1) δημιουργεί ένα αρχείο core όταν διακόπτεται η λειτουργία του. Διαφορετικά, δεν δημιουργείται αρχείο core.
Από προεπιλογή είναι ενεργοποιημένο.
Προστέθηκε στην έκδοση 233.
systemd.crash_chvt
Δέχεται έναν θετικό ακέραιο αριθμό ή ένα λογικό όρισμα. Μπορεί επίσης να καθοριστεί χωρίς όρισμα, με την ίδια επίδραση όπως και ένα θετικό λογικό. Εάν καθοριστεί ένας θετικός ακέραιος αριθμός (στο εύρος 1–63), ο διαχειριστής συστήματος (PID 1) θα ενεργοποιήσει την καθορισμένη εικονική κονσόλα όταν διακόπτεται η λειτουργία του. Από προεπιλογή είναι απενεργοποιημένο, που σημαίνει ότι δεν επιχειρείται καμία αλλαγή. Εάν οριστεί σε ενεργοποιημένο, χρησιμοποιείται η εικονική κονσόλα στην οποία γράφονται τα μηνύματα του πυρήνα.
Προστέθηκε στην έκδοση 233.
systemd.crash_shell
Δέχεται ένα λογικό όρισμα ή ενεργοποιεί την επιλογή εάν καθοριστεί χωρίς όρισμα. Εάν είναι ενεργοποιημένο, ο διαχειριστής συστήματος (PID 1) δημιουργεί ένα κέλυφος όταν διακόπτεται η λειτουργία του. Διαφορετικά, δεν δημιουργείται κέλυφος.
Από προεπιλογή είναι απενεργοποιημένο, για λόγους ασφαλείας, καθώς το κέλυφος δεν προστατεύεται από έλεγχο ταυτότητας με κωδικό πρόσβασης.
Προστέθηκε στην έκδοση 233.
systemd.crash_action=
Δέχεται μία από τις τιμές "freeze", "reboot" ή "poweroff". Από προεπιλογή είναι "freeze". Εάν οριστεί σε "freeze", το σύστημα θα "παγώσει" επ' αόριστον όταν διακόπτεται η λειτουργία του διαχειριστή συστήματος (PID 1). Εάν οριστεί σε "reboot", ο διαχειριστής συστήματος (PID 1) θα επανεκκινήσει αυτόματα τη μηχανή όταν διακόπτεται η λειτουργία του, μετά από καθυστέρηση 10 δευτερολέπτων. Εάν οριστεί σε "poweroff", ο διαχειριστής συστήματος (PID 1) θα απενεργοποιήσει αμέσως τη μηχανή όταν διακόπτεται η λειτουργία του. Εάν συνδυαστεί με το systemd.crash_shell, η διαμορφωμένη ενέργεια κατά τη διακοπή λειτουργίας θα εκτελεστεί μετά την έξοδο του κελύφους.
Προστέθηκε στην έκδοση 256.
systemd.confirm_spawn
Δέχεται ένα λογικό όρισμα ή μια διαδρομή προς την εικονική κονσόλα όπου θα εμφανίζονται τα μηνύματα επιβεβαίωσης. Μπορεί επίσης να καθοριστεί χωρίς όρισμα, με την ίδια επίδραση όπως και ένα θετικό λογικό. Εάν είναι ενεργοποιημένο, ο διαχειριστής συστήματος (PID 1) ζητά επιβεβαίωση κατά την εκκίνηση διαδικασιών χρησιμοποιώντας το /dev/console. Εάν παρέχεται μια διαδρομή ή ένα όνομα κονσόλας (όπως "ttyS0"), θα χρησιμοποιηθεί η εικονική κονσόλα στην οποία δείχνει αυτή η διαδρομή ή η οποία περιγράφεται από το δεδομένο όνομα. Από προεπιλογή είναι απενεργοποιημένο.
Προστέθηκε στην έκδοση 233.
systemd.service_watchdogs=
Δέχεται ένα boolean όρισμα. Εάν είναι απενεργοποιημένο, όλα τα runtime watchdogs υπηρεσιών (WatchdogSec=) και οι ενέργειες έκτακτης ανάγκης (π.χ. OnFailure= ή StartLimitAction=) αγνοούνται από τον διαχειριστή συστήματος (PID 1); δείτε systemd.service(5). Από προεπιλογή είναι ενεργοποιημένο, δηλαδή τα watchdogs και οι ενέργειες αποτυχίας υποβάλλονται σε κανονική επεξεργασία. Το hardware watchdog δεν επηρεάζεται από αυτήν την επιλογή.
Προστέθηκε στην έκδοση 237.
systemd.show_status
Δέχεται ένα boolean όρισμα ή τις σταθερές error και auto. Μπορεί επίσης να καθοριστεί χωρίς όρισμα, με το ίδιο αποτέλεσμα με ένα θετικό boolean. Εάν είναι ενεργοποιημένο, ο διαχειριστής systemd (PID 1) εμφανίζει συνοπτικές ενημερώσεις κατάστασης υπηρεσίας στην κονσόλα κατά την εκκίνηση. Με την τιμή error, εμφανίζονται μόνο μηνύματα σχετικά με αποτυχίες, αλλά η εκκίνηση παραμένει σιωπηλή. Η τιμή auto συμπεριφέρεται όπως το false έως ότου υπάρξει σημαντική καθυστέρηση στην εκκίνηση. Από προεπιλογή είναι ενεργοποιημένο, εκτός εάν περνάει η επιλογή quiet ως παράμετρος γραμμής εντολών του kernel, οπότε και από προεπιλογή είναι error. Εάν καθοριστεί, αντικαθιστά την επιλογή διαμόρφωσης του αρχείου συστήματος διαχείρισης ShowStatus=, δείτε systemd-system.conf(5).
Προστέθηκε στην έκδοση 233.
systemd.status_unit_format=
Δέχεται τις τιμές name, description ή combined. Εάν είναι name, ο διαχειριστής συστήματος θα χρησιμοποιεί ονόματα μονάδων στα μηνύματα κατάστασης. Εάν είναι combined, ο διαχειριστής συστήματος θα χρησιμοποιεί ονόματα μονάδων και περιγραφές στα μηνύματα κατάστασης. Όταν καθορίζεται, αντικαθιστά την επιλογή διαμόρφωσης του αρχείου συστήματος διαχείρισης StatusUnitFormat=, δείτε systemd-system.conf(5).
Προστέθηκε στην έκδοση 243.
systemd.log_color, systemd.log_level=, systemd.log_location, systemd.log_target=,
systemd.log_time, systemd.log_tid, systemd.log_ratelimit_kmsg
Ελέγχει την έξοδο καταγραφής, με το ίδιο αποτέλεσμα με τις περιγραφόμενες παραπάνω μεταβλητές περιβάλλοντος $SYSTEMD_LOG_COLOR, $SYSTEMD_LOG_LEVEL, $SYSTEMD_LOG_LOCATION, $SYSTEMD_LOG_TARGET, $SYSTEMD_LOG_TIME, $SYSTEMD_LOG_TID και $SYSTEMD_LOG_RATELIMIT_KMSG. Τα systemd.log_color, systemd.log_location, systemd.log_time, systemd.log_tid και systemd.log_ratelimit_kmsg μπορούν να καθοριστούν χωρίς όρισμα, με το ίδιο αποτέλεσμα με ένα θετικό boolean.
systemd.default_standard_output=, systemd.default_standard_error=
Ελέγχει την προεπιλεγμένη έξοδο standard output και standard error για υπηρεσίες και sockets. Δηλαδή, ελέγχει την προεπιλογή για τις επιλογές StandardOutput= και StandardError= (δείτε systemd.exec(5) για λεπτομέρειες). Δέχεται μία από τις τιμές inherit, null, tty, journal, journal+console, kmsg, kmsg+console. Εάν το όρισμα παραλειφθεί, το systemd.default-standard-output= έχει από προεπιλογή την τιμή journal και το systemd.default-standard-error= έχει από προεπιλογή την τιμή inherit.
systemd.setenv=
Δέχεται ένα string όρισμα στη μορφή VARIABLE=VALUE. Μπορεί να χρησιμοποιηθεί για τον καθορισμό προεπιλεγμένων μεταβλητών περιβάλλοντος που θα προστεθούν στις θυγατρικές διεργασίες που δημιουργούνται. Μπορεί να χρησιμοποιηθεί περισσότερες από μία φορές για τον καθορισμό πολλών μεταβλητών.
systemd.machine_id=
Δέχεται μια τιμή 32 χαρακτήρων σε δεκαεξαδική μορφή που θα χρησιμοποιηθεί για τον καθορισμό του machine-id. Προορίζεται κυρίως για την εκκίνηση μέσω δικτύου, όπου το ίδιο machine-id είναι επιθυμητό για κάθε εκκίνηση.
Προστέθηκε στην έκδοση 229.
systemd.set_credential=, systemd.set_credential_binary=
Ορίζει ένα διαπιστευτήριο συστήματος, το οποίο μπορεί στη συνέχεια να διαδοθεί σε υπηρεσίες συστήματος χρησιμοποιώντας τις ρυθμίσεις ImportCredential= ή LoadCredential=, δείτε το systemd.exec(5) για λεπτομέρειες. Λαμβάνει ένα ζεύγος ονόματος και τιμής διαπιστευτηρίων, χωρισμένα με διὰ κόλου. Η παράμετρος systemd.set_credential= αναμένει την τιμή του διαπιστευτηρίου σε απλή μορφή κειμένου, ενώ η παράμετρος systemd.set_credential_binary= λαμβάνει δυαδικά δεδομένα κωδικοποιημένα σε Base64. Σημειώστε ότι η γραμμή εντολών του πυρήνα είναι συνήθως προσβάσιμη από μη προνομιούχα προγράμματα στο /proc/cmdline. Επομένως, αυτός ο μηχανισμός δεν είναι κατάλληλος για τη μεταφορά ευαίσθητων δεδομένων. Χρησιμοποιήστε τον μόνο για δεδομένα που δεν είναι ευαίσθητα (π.χ. δημόσια κλειδιά/πιστοποιητικά, αντί για ιδιωτικά κλειδιά) ή σε περιβάλλοντα δοκιμών/αποσφαλμάτωσης.
Για περισσότερες πληροφορίες, δείτε την τεκμηρίωση [System and Service Credentials].
Προστέθηκε στην έκδοση 251.
systemd.import_credentials=
Λαμβάνει ένα λογικό όρισμα. Εάν είναι false, απενεργοποιεί την εισαγωγή διαπιστευτηρίων από τη γραμμή εντολών του πυρήνα, τον πίνακα συμβολοσειρών DMI/SMBIOS OEM, το υποσύστημα qemu_fw_cfg ή το στοιχείο πυρήνα EFI.
Προστέθηκε στην έκδοση 251.
quiet
Απενεργοποιεί την έξοδο κατάστασης κατά την εκκίνηση, όπως ακριβώς θα έκανε η ρύθμιση systemd.show_status=no. Σημειώστε ότι αυτή η επιλογή διαβάζεται επίσης από τον ίδιο τον πυρήνα και απενεργοποιεί την έξοδο καταγραφής του πυρήνα. Επομένως, η παράδοση αυτής της επιλογής απενεργοποιεί την κανονική έξοδο τόσο από τον διαχειριστή συστήματος όσο και από τον πυρήνα.
Προστέθηκε στην έκδοση 186.
debug
Ενεργοποιεί την έξοδο εντοπισμού σφαλμάτων. Αυτό είναι ισοδύναμο με το systemd.log_level=debug. Σημειώστε ότι αυτή η επιλογή διαβάζεται επίσης από τον ίδιο τον πυρήνα και ενεργοποιεί την έξοδο εντοπισμού σφαλμάτων του πυρήνα. Επομένως, η παράδοση αυτής της επιλογής ενεργοποιεί την έξοδο εντοπισμού σφαλμάτων τόσο από τον διαχειριστή συστήματος όσο και από τον πυρήνα.
Προστέθηκε στην έκδοση 205.
emergency, rd.emergency, -b
Εκκινεί σε κατάσταση έκτακτης ανάγκης. Αυτό είναι ισοδύναμο με το systemd.unit=emergency.target ή rd.systemd.unit=emergency.target, αντίστοιχα, και παρέχεται για λόγους συμβατότητας και για να είναι ευκολότερο στην πληκτρολόγηση.
Προστέθηκε στην έκδοση 186.
rescue, rd.rescue, single, s, S, 1
Εκκινεί σε κατάσταση ανάκτησης. Αυτό είναι ισοδύναμο με το systemd.unit=rescue.target ή rd.systemd.unit=rescue.target, αντίστοιχα, και παρέχεται για λόγους συμβατότητας και για να είναι ευκολότερο στην πληκτρολόγηση.
Προστέθηκε στην έκδοση 186.
2 3, 4, 5
Εκκινεί στο καθορισμένο παλαιό επίπεδο εκτέλεσης SysV. Τα 2, 3 και 4 είναι ισοδύναμα με το systemd.unit=multi-user.target. και το 5 είναι ισοδύναμο με το systemd.unit=graphical.target, και παρέχονται για λόγους συμβατότητας και για να είναι ευκολότερο στην πληκτρολόγηση.
Προστέθηκε στην έκδοση 186.
locale.LANG=, locale.LANGUAGE=, locale.LC_CTYPE=, locale.LC_NUMERIC=, locale.LC_TIME=,
locale.LC_COLLATE=, locale.LC_MONETARY=, locale.LC_MESSAGES=, locale.LC_PAPER=, locale.LC_NAME=,
locale.LC_ADDRESS=, locale.LC_TELEPHONE=, locale.LC_MEASUREMENT=, locale.LC_IDENTIFICATION=
Ορίζει την τοπική ρύθμιση συστήματος που θα χρησιμοποιηθεί. Αυτό αντικαθιστά τις ρυθμίσεις στο /etc/locale.conf. Για περισσότερες πληροφορίες, δείτε το locale.conf(5) και το locale(7).
Προστέθηκε στην έκδοση 186.
Για άλλες παραμέτρους γραμμής εντολών πυρήνα που κατανοούνται από τα στοιχεία του βασικού λειτουργικού συστήματος, ανατρέξτε στην τεκμηρίωση [kernel-command-line(7)].
ΣΥΣΤΗΜΑΤΙΚΑ ΔΙΑΠΙΣΤΕΥΤΗΡΙΑ
Κατά την αρχικοποίηση, ο διαχειριστής υπηρεσιών θα εισαγάγει διαπιστευτήρια από διάφορες πηγές στο σύνολο διαπιστευτηρίων του συστήματος, τα οποία στη συνέχεια μπορούν να διαδοθούν στις υπηρεσίες και να χρησιμοποιηθούν από δημιουργούς:
Όταν ο διαχειριστής υπηρεσιών αρχικοποιείται για πρώτη φορά, θα διαβάσει τα διαπιστευτήρια του συστήματος από τις συμβολοσειρές SMBIOS Type 11 vendor, io.systemd.credential:name=value, και io.systemd.credential.binary:name=value.
Ταυτόχρονα, θα εισαγάγει διαπιστευτήρια από το QEMU "fw_cfg". (Σημειώστε ότι ο μηχανισμός SMBIOS είναι γενικά προτιμότερος, επειδή είναι ταχύτερος και γενικός.)
Τα διαπιστευτήρια μπορούν να μεταδοθούν μέσω της γραμμής εντολών του πυρήνα, χρησιμοποιώντας την παράμετρο systemd.set-credential=, όπως αναφέρεται παραπάνω.
Τα διαπιστευτήρια μπορούν να μεταδοθούν από το περιβάλλον UEFI μέσω του systemd-stub(7).
Όταν ο διαχειριστής υπηρεσιών ενεργοποιείται κατά τη μετάβαση από το initrd στο host, θα εισαγάγει όλα τα αρχεία στο /run/credentials/@initrd/ ως διαπιστευτήρια συστήματος.
Εκτελέστε το systemd-creds(1) ως εξής για να δείτε τη λίστα των διαπιστευτηρίων που έχουν μεταδοθεί στο σύστημα:
# systemd-creds --system list
Για περισσότερες πληροφορίες, δείτε την τεκμηρίωση System and Service Credentials[8].
Ο διαχειριστής υπηρεσιών, όταν εκτελείται ως PID 1, χρησιμοποιεί τα ακόλουθα διαπιστευτήρια συστήματος:
vmm.notify_socket
Περιέχει μια διεύθυνση AF_VSOCK ή AF_UNIX στην οποία θα σταλεί ένα μήνυμα ειδοποίησης READY=1 όταν ο διαχειριστής υπηρεσιών έχει ολοκληρώσει την εκκίνηση. Δείτε το sd_notify(3) και την επόμενη ενότητα για περισσότερες πληροφορίες. Σημειώστε ότι εάν το hypervisor δεν υποστηρίζει το SOCK_DGRAM μέσω του AF_VSOCK, θα δοκιμαστεί το SOCK_SEQPACKET. Το περιεχόμενο του διαπιστευτηρίου για το AF_VSOCK θα πρέπει να είναι μια συμβολοσειρά στη μορφή "vsock:CID:PORT". Μπορούν να χρησιμοποιηθούν οι "vsock-stream", "vsock-dgram" και "vsock-seqpacket" αντί για το "vsock" για να επιβληθεί η χρήση του αντίστοιχου τύπου υποδοχής.
Αυτή η δυνατότητα είναι χρήσιμη για διαχειριστές μηχανών ή άλλες διαδικασίες στο host για να λάβουν μια ειδοποίηση μέσω του VSOCK όταν μια εικονική μηχανή έχει ολοκληρώσει την εκκίνηση.
Προστέθηκε στην έκδοση 254.
system.machine_id
Παίρνει ένα δεκαεξαδικό αναγνωριστικό 128 bit για να αρχικοποιήσει το /etc/machine-id, εάν το αρχείο δεν έχει ρυθμιστεί ακόμα. Δείτε το machine-id(5) για λεπτομέρειες.
Προστέθηκε στην έκδοση 254.
Για μια λίστα διαπιστευτηρίων συστήματος που χρησιμοποιούνται από διάφορα άλλα στοιχεία του systemd, δείτε το systemd.systemcredentials(7).
ΠΡΩΤΟΚΟΛΛΟ ΕΤΟΙΜΟΤΗΤΑΣ
Ο διαχειριστής υπηρεσιών υλοποιεί ένα πρωτόκολλο ειδοποίησης ετοιμότητας, τόσο μεταξύ του διαχειριστή και των υπηρεσιών του (δηλαδή, προς τα κάτω στην ιεραρχία), όσο και μεταξύ του διαχειριστή και ενός πιθανού επόπτη υψηλότερα στην ιεραρχία (ο τελευταίος θα μπορούσε να είναι ένας διαχειριστής μηχανών ή εμπορευματοκιβωτίων, ή, σε περίπτωση μιας διαχειριστή υπηρεσιών ανά χρήστη, η παρουσία του διαχειριστή υπηρεσιών του συστήματος). Το βασικό πρωτόκολλο (και το προτεινόμενο API για αυτό) περιγράφεται στο sd_notify(3).
Η υποδοχή ειδοποίησης που χρησιμοποιεί ο διαχειριστής υπηρεσιών (συμπεριλαμβανομένου του PID 1) για την αναφορά ετοιμότητας στον δικό του επόπτη ορίζεται μέσω της συνήθους μεταβλητής περιβάλλοντος $NOTIFY_SOCKET (δείτε παραπάνω). Δεδομένου ότι αυτό μπορεί να οριστεί απευθείας μόνο για διαχειριστές εμπορευματοκιβωτίων και για την παρουσία του διαχειριστή υπηρεσιών ανά χρήστη, είναι διαθέσιμος ένας πρόσθετος μηχανισμός για τη διαμόρφωση αυτού, ιδιαίτερα προοριζόμενος για χρήση σε περιβάλλοντα VM: το διαπιστευτήριο συστήματος vmm.notify_socket (δείτε παραπάνω) μπορεί να οριστεί σε μια κατάλληλη υποδοχή (συνήθως μια AF_VSOCK) μέσω των συμβολοσειρών SMBIOS Type 11 vendor. Για λεπτομέρειες, δείτε παραπάνω.
Το πρωτόκολλο ειδοποιήσεων από τον διαχειριστή υπηρεσιών προς τα πάνω στην ιεραρχία προς έναν επόπτη υποστηρίζει αριθμός πεδίων επέκτασης που επιτρέπουν σε έναν επόπτη να μάθει για συγκεκριμένες ιδιότητες του συστήματος και να παρακολουθεί την πρόοδο εκκίνησης. Συγκεκριμένα, αποστέλλονται τα ακόλουθα πεδία:
Ένα μήνυμα X_SYSTEMD_HOSTNAME=... θα αποσταλεί μόλις καθοριστεί το αρχικό όνομα κεντρικού υπολογιστή για το σύστημα. Σημειώστε ότι κατά τη διάρκεια της μεταγενέστερης εκτέλεσης, το όνομα κεντρικού υπολογιστή μπορεί να αλλάξει ξανά προγραμματικά και (προς το παρόν) δεν αποστέλλονται περαιτέρω ειδοποιήσεις σε αυτήν την περίπτωση.
Προστέθηκε στην έκδοση 256.
Ένα μήνυμα X_SYSTEMD_MACHINE_ID=... θα αποσταλεί μόλις καθοριστεί το αναγνωριστικό μηχανής του συστήματος. Δείτε την σελίδα man machine-id(5) για λεπτομέρειες.
Προστέθηκε στην έκδοση 256.
Ένα μήνυμα X_SYSTEMD_SIGNALS_LEVEL=... θα αποσταλεί μόλις ο διαχειριστής υπηρεσιών εγκαταστήσει τους διάφορους χειριστές σημάτων διαδικασιών UNIX που περιγράφονται παραπάνω. Η τιμή του πεδίου είναι ένας ακέραιος αριθμός χωρίς πρόσημο, μορφοποιημένος ως δεκαδικός αριθμός και υποδεικνύει την υποστηριζόμενη λειτουργία σημάτων διαδικασιών UNIX του διαχειριστή υπηρεσιών. Προς το παρόν, ορίζεται μόνο ένα επίπεδο λειτουργίας:
Το X\_SYSTEMD\_SIGNALS\_LEVEL=2 καλύπτει τα διάφορα σήματα διαδικασιών UNIX που τεκμηριώνονται παραπάνω –
τα οποία είναι ένα υπερσύνολο αυτών που υποστηρίζονται από το ιστορικό σύστημα SysV init.
Σήματα που αποστέλλονται στο PID 1 πριν από την αποστολή αυτού του μηνύματος ενδέχεται να μην υποβάλλονται σε επεξεργασία σωστά. Ένας καταναλωτής αυτών των μηνυμάτων θα πρέπει να αναλύει την τιμή ως έναν ακέραιο αριθμό χωρίς πρόσημο που υποδεικνύει το επίπεδο υποστήριξης. Για τώρα ορίζεται μόνο το αναφερόμενο επίπεδο 2, αλλά αργότερα ενδέχεται να οριστούν επιπλέον επίπεδα με υψηλότερους ακέραιους αριθμούς, τα οποία θα εφαρμόζουν ένα υπερσύνολο της τρέχουσας ορισμένης συμπεριφοράς.
Προστέθηκε στην έκδοση 256.
Τα μηνύματα X\_SYSTEMD\_UNIT\_ACTIVE=... και X\_SYSTEMD\_UNIT\_INACTIVE=... θα αποστέλλονται για
κάθε μονάδα στόχο καθώς γίνεται ενεργή ή σταματά να είναι ενεργή. Αυτό είναι χρήσιμο για την παρακολούθηση της προόδου εκκίνησης και της λειτουργικότητας. Για παράδειγμα, μόλις αναφερθεί ότι η μονάδα ssh-access.target ξεκίνησε, συνήθως είναι διαθέσιμη η πρόσβαση SSH, δείτε την σελίδα man systemd.special(7) για λεπτομέρειες.
Προστέθηκε στην έκδοση 256.
Ένα μήνυμα X_SYSTEMD_SHUTDOWN=... θα αποσταλεί πολύ λίγο πριν το σύστημα τερματιστεί. Η τιμή είναι μία από τις συμβολοσειρές "reboot", "halt", "poweroff" και "kexec" και υποδεικνύει ποιος τύπος τερματισμού εκτελείται.
Προστέθηκε στην έκδοση 256.
Ένα μήνυμα X_SYSTEMD_REBOOT_PARAMETER=... θα αποσταλεί επίσης πολύ λίγο πριν το σύστημα τερματιστεί. Η τιμή του είναι το όρισμα επανεκκίνησης, όπως έχει διαμορφωθεί με την εντολή systemctl --reboot-argument=....
Προστέθηκε στην έκδοση 256.
Σημειώστε ότι αυτά τα πεδία επέκτασης αποστέλλονται επιπλέον των κανονικών ειδοποιήσεων "READY=1" και "RELOADING=1".
ΕΠΙΛΟΓΕΣ
Το systemd συνήθως δεν καλείται απευθείας, επειδή ξεκινά νωρίς και είναι ήδη σε λειτουργία όταν οι χρήστες μπορεί να αλληλεπιδράσουν μαζί του. Συνήθως, χρησιμοποιούνται εργαλεία όπως το [systemctl]({filename}../../systemctl)(1) για την αποστολή εντολών
στον διαχειριστή. Δεδομένου ότι το systemd συνήθως δεν καλείται απευθείας, οι επιλογές που αναφέρονται παρακάτω είναι
κυρίως χρήσιμες για σκοπούς εντοπισμού σφαλμάτων και ειδικούς σκοπούς.
Επιλογές ενδοσκόπησης και εντοπισμού σφαλμάτων
Αυτές οι επιλογές χρησιμοποιούνται για δοκιμές και ενδοσκόπηση και το systemd μπορεί να κληθεί με αυτές ανά πάσα στιγμή:
--dump-configuration-items
Εμφάνιση κατανοητών στοιχείων διαμόρφωσης μονάδας. Αυτό παράγει μια συνοπτική αλλά πλήρη λίστα των στοιχείων διαμόρφωσης που κατανοούνται στα αρχεία ορισμού μονάδας.
--dump-bus-properties
Εμφάνιση εκτεθειμένων ιδιοτήτων διακόπτη. Αυτό παράγει μια συνοπτική αλλά πλήρη λίστα ιδιοτήτων που εκτίθενται στο D-Bus.
Προστέθηκε στην έκδοση 239.
--test
Καθορισμός της αρχικής συναλλαγής εκκίνησης (δηλαδή της λίστας των εργασιών που προστίθενται στην ουρά κατά την εκκίνηση), εμφάνιση και έξοδος — χωρίς να εκτελεστούν πραγματικά καμία από τις καθορισμένες εργασίες. Αυτή η επιλογή είναι χρήσιμη μόνο για εντοπισμό σφαλμάτων. Σημειώστε ότι κατά την κανονική εκκίνηση του διαχειριστή υπηρεσιών, ενδέχεται να εκκινηθούν επιπλέον μονάδες που δεν εμφανίζονται από αυτήν τη λειτουργία, επειδή το υλικό, η υποδοχή, ο διακόπτης ή άλλοι τύποι ενεργοποίησης ενδέχεται να προσθέσουν επιπλέον εργασίες καθώς εκτελείται η συναλλαγή. Χρησιμοποιήστε το --system για να ζητήσετε την αρχική συναλλαγή του διαχειριστή υπηρεσιών συστήματος (αυτό είναι επίσης η υπονοούμενη προεπιλογή), συνδυάστε το με το --user για να ζητήσετε την αρχική συναλλαγή της διαχείρισης υπηρεσιών ανά χρήστη.
--system, --user
Όταν χρησιμοποιούνται σε συνδυασμό με το --test, επιλέγουν εάν θα υπολογιστεί η αρχική συναλλαγή για την παρουσία του συστήματος ή για μια παρουσία ανά χρήστη. Αυτές οι επιλογές δεν έχουν καμία επίδραση όταν καλούνται χωρίς το --test, καθώς κατά τις κανονικές (δηλαδή μη --test) κλήσεις, ο διαχειριστής υπηρεσιών θα ανιχνεύσει αυτόματα εάν πρέπει να λειτουργεί σε λειτουργία συστήματος ή ανά χρήστη, ελέγχοντας εάν το PID στο οποίο εκτελείται είναι 1 ή όχι. Σημειώστε ότι δεν υποστηρίζεται η εκκίνηση και η διατήρηση ενός συστήματος με τον διαχειριστή υπηρεσιών που εκτελείται σε λειτουργία --system, αλλά με ένα PID διαφορετικό από 1.
-h, --help
Εμφάνιση ενός σύντομου κειμένου βοήθειας και έξοδος.
--version
Εμφάνιση μιας σύντομης συμβολοσειράς έκδοσης και έξοδος.
Επιλογές που αντιγράφουν τις ρυθμίσεις της γραμμής εντολών του πυρήνα
Αυτές οι επιλογές αντιστοιχούν άμεσα σε επιλογές που αναφέρονται παραπάνω στην ενότητα "Γραμμή εντολών πυρήνα". Και οι δύο μορφές μπορούν να χρησιμοποιηθούν ισοδύναμα για τον διαχειριστή συστήματος, αλλά συνιστάται να χρησιμοποιείτε τις μορφές που αναφέρονται παραπάνω σε αυτό το πλαίσιο, επειδή ονομάζονται σωστά. Όταν μια επιλογή καθορίζεται τόσο στη γραμμή εντολών του πυρήνα όσο και ως κανονικό όρισμα γραμμής εντολών, η τελευταία έχει μεγαλύτερη προτεραιότητα.
Όταν το systemd χρησιμοποιείται ως διαχειριστής χρήστη, η γραμμή εντολών του πυρήνα αγνοείται και κατανοούνται μόνο οι επιλογές που περιγράφονται παρακάτω. Ωστόσο, το systemd συνήθως εκκινείται σε αυτήν τη λειτουργία μέσω της υπηρεσίας [email protected](5), η οποία κοινοποιείται μεταξύ όλων των χρηστών. Μπορεί να είναι πιο βολικό να χρησιμοποιείτε αρχεία διαμόρφωσης για την τροποποίηση ρυθμίσεων (δείτε systemd-user.conf(5)) ή μεταβλητές περιβάλλοντος. Δείτε την ενότητα "Περιβάλλον" παραπάνω για μια συζήτηση σχετικά με τον τρόπο ρύθμισης του μπλοκ περιβάλλοντος.
--unit=
Ορίστε την προεπιλεγμένη μονάδα που θα ενεργοποιηθεί κατά την εκκίνηση. Εάν δεν καθοριστεί, η προεπιλογή είναι το default.target. Δείτε το systemd.unit= παραπάνω.
--dump-core
Ενεργοποιήστε τη δημιουργία αρχείου απομνημόνευσης σε περίπτωση σφάλματος. Αυτός ο διακόπτης δεν έχει καμία επίδραση όταν εκτελείται ως μια διαδικασία χρήστη. Είναι το ίδιο με το systemd.dump_core= παραπάνω.
--crash-vt=VT
Μεταβείτε σε μια συγκεκριμένη εικονική κονσόλα (VT) σε περίπτωση σφάλματος. Αυτός ο διακόπτης δεν έχει καμία επίδραση όταν εκτελείται ως μια διαδικασία χρήστη. Είναι το ίδιο με το systemd.crash_chvt= παραπάνω (αλλά όχι με την διαφορετική ορθογραφία!).
Προστέθηκε στην έκδοση 227.
--crash-shell
Εκτελέστε ένα κέλυφος σε περίπτωση σφάλματος. Αυτός ο διακόπτης δεν έχει καμία επίδραση όταν εκτελείται ως μια διαδικασία χρήστη. Δείτε το systemd.crash_shell= παραπάνω.
--crash-action=
Καθορίστε τι πρέπει να γίνει όταν καταρρεύσει ο διαχειριστής συστήματος (PID 1). Αυτός ο διακόπτης δεν έχει καμία επίδραση όταν το systemd εκτελείται ως μια διαδικασία χρήστη. Δείτε το systemd.crash_action= παραπάνω.
Προστέθηκε στην έκδοση 256.
--confirm-spawn
Ζητήστε επιβεβαίωση κατά την δημιουργία διαδικασιών. Αυτός ο διακόπτης δεν έχει καμία επίδραση όταν εκτελείται ως μια διαδικασία χρήστη. Δείτε το systemd.confirm_spawn παραπάνω.
--show-status
Εμφανίστε συνοπτικές πληροφορίες κατάστασης μονάδας στην κονσόλα κατά την εκκίνηση και την τερμάτιση λειτουργίας. Δείτε το systemd.show_status παραπάνω.
Προστέθηκε στην έκδοση 244.
--log-color
Επισημάνετε σημαντικά μηνύματα καταγραφής. Δείτε το systemd.log_color παραπάνω.
Προστέθηκε στην έκδοση 244.
--log-level=
Ορίστε το επίπεδο καταγραφής. Δείτε το systemd.log_level παραπάνω.
--log-location
Συμπεριλάβετε την θέση του κώδικα στα μηνύματα καταγραφής. Δείτε το systemd.log_location παραπάνω.
Προστέθηκε στην έκδοση 244.
--log-target=
Ορίστε τον στόχο καταγραφής. Δείτε το systemd.log_target παραπάνω.
--log-time=
Προσθέστε χρονική σήμανση στα μηνύματα κονσόλας. Δείτε το systemd.log_time παραπάνω.
Προστέθηκε στην έκδοση 246.
--machine-id=
Αντικαταστήστε το machine-id που έχει οριστεί στον σκληρό δίσκο. Δείτε το systemd.machine_id= παραπάνω.
Προστέθηκε στην έκδοση 229.
--service-watchdogs
Ενεργοποιήστε ή απενεργοποιήστε παγκοσμίως όλους τους χρονικούς ελέγχους υπηρεσιών και τις ενέργειες έκτακτης ανάγκης. Δείτε το systemd.service_watchdogs παραπάνω.
Προστέθηκε στην έκδοση 237.
--default-standard-output=, --default-standard-error=
Ορίζει την προεπιλεγμένη έξοδο ή την έξοδο σφάλματος για όλες τις υπηρεσίες και τις υποδοχές, αντίστοιχα. Δείτε το systemd.default_standard_output= και το systemd.default_standard_error= παραπάνω.
ΕΠΟΧΗ ΣΥΣΤΗΜΙΚΟΥ ΡΟΛΟΓΙΟΥ
Όταν το systemd ξεκινά ή επανεκκινείται, μπορεί να ορίσει το συστημικό ρολόι στην "εποχή". Αυτός ο μηχανισμός χρησιμοποιείται για να διασφαλιστεί ότι το συστημικό ρολόι παραμένει κάπως εύλογα αρχικοποιημένο και κατά προσέγγιση μονοτονικό μεταξύ των επανεκκινήσεων, σε περίπτωση που δεν υπάρχει μπαταρία-υποστηριζόμενο τοπικό RTC ή δεν λειτουργεί σωστά.
Η εποχή είναι η χαμηλότερη ημερομηνία από την οποία υποτίθεται ότι έχει οριστεί σωστά η ώρα του συστημικού ρολογιού. Κατά την αρχικοποίηση, το τοπικό ρολόι προωθείται στην εποχή εάν είχε οριστεί σε χαμηλότερη τιμή. Ως ειδική περίπτωση, εάν το τοπικό ρολόι είναι αρκετά μακριά στο μέλλον (από προεπιλογή 15 χρόνια, αλλά αυτό μπορεί να διαμορφωθεί κατά τη διάρκεια της δημιουργίας), το ρολόι υλικού θεωρείται ελαττωματικό και το συστημικό ρολόι επαναφέρεται στην εποχή.
Η εποχή ορίζεται στο μεγαλύτερο από: τον χρόνο δημιουργίας του systemd, τον χρόνο τροποποίησης ("mtime") του /usr/lib/clock-epoch και τον χρόνο τροποποίησης του /var/lib/systemd/timesync/clock.
ΑΡΧΕΙΑ
/run/systemd/notify
Υποδοχή ειδοποίησης κατάστασης daemon. Αυτή είναι μια υποδοχή datagram AF_UNIX και χρησιμοποιείται για την υλοποίηση της λογικής ειδοποίησης daemon, όπως υλοποιείται από τη συνάρτηση sd_notify(3).
/run/systemd/private
Χρησιμοποιείται εσωτερικά ως κανάλι επικοινωνίας μεταξύ του systemctl(1) και της διαδικασίας systemd. Αυτή είναι μια υποδοχή ροής AF_UNIX. Αυτή η διεπαφή είναι ιδιωτική για το systemd και δεν θα πρέπει να χρησιμοποιείται σε εξωτερικά έργα.
/usr/lib/clock-epoch
Η ώρα τροποποίησης ("mtime") αυτού του αρχείου χρησιμοποιείται για την εποχή της ώρας, δείτε την προηγούμενη ενότητα.
Προστέθηκε στην έκδοση 247.
/var/lib/systemd/timesync/clock
Η ώρα τροποποίησης ("mtime") αυτού του αρχείου ενημερώνεται από την υπηρεσία systemd-timesyncd.service(8). Εάν υπάρχει, η ώρα τροποποίησης του αρχείου χρησιμοποιείται για την εποχή, δείτε την προηγούμενη ενότητα.
Προστέθηκε στην έκδοση 257.
ΙΣΤΟΡΙΚΟ
systemd 252
Οι παράμετροι γραμμής εντολών πυρήνα systemd.unified_cgroup_hierarchy και systemd.legacy_systemd_cgroup_controller έχουν καταργηθεί. Παρακαλούμε να μεταβείτε στην ενοποιημένη ιεραρχία cgroup.
ΔΕΙΤΕ ΕΠΙΣΗΣ
Η αρχική σελίδα του systemd[9], systemd-system.conf(5), locale.conf(5), systemctl(1), journalctl(1), systemd-notify(1), daemon(7), sd-daemon(3), org.freedesktop.systemd1(5), systemd.unit(5), systemd.special(7), pkg-config(1), kernel-command-line(7), bootup(7), systemd.directives(7), org.freedesktop.systemd1(5)
Για περισσότερες πληροφορίες σχετικά με τις έννοιες και τις ιδέες πίσω από το systemd, ανατρέξτε στο Αρχικό Έγγραφο Σχεδιασμού[10].
ΣΗΜΕΙΩΣΕΙΣ
Interface Portability and Stability Promise
https://systemd.io/PORTABILITY_AND_STABILITY/
Container Interface
https://systemd.io/CONTAINER_INTERFACE
initrd Interface
https://systemd.io/INITRD_INTERFACE/
Control Groups v2
https://docs.kernel.org/admin-guide/cgroup-v2.html
XDG Base Directory specification
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
Συνιστάται για άλλα εργαλεία να ορίζουν και να ελέγχουν τη μεταβλητή $SUDO_UID, αντιμετωπίζοντάς την ως
μια κοινή διεπαφή.
Known Environment Variables
https://systemd.io/ENVIRONMENT
System and Service Credentials
https://systemd.io/CREDENTIALS
systemd Homepage
https://systemd.io/
Original Design Document
https://0pointer.de/blog/projects/systemd.html