# systemd (Ελληνικά)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Σχετικά άρθρα

- systemd/User
- systemd/Timers
- systemd/Journal
- systemd FAQ
- init
- Daemons
- udev
- Improving performance/Boot process
- Allow users to shutdown

Από τον ιστότοπο του έργου:

systemd είναι μια σουίτα βασικών μονάδων δόμησης για το σύστημα Linux. Παρέχει έναν διαχειριστή συστήματος και υπηρεσιών ο οποίος εκτελείται ως PID 1 και εκκινεί το υπόλοιπο σύστημα. Το systemd διαθέτει ικανότητες επιθετικής παράλληλης επεξεργασίας, χρησιμοποιεί την ενεργοποίηση υποδοχέα socket και του D-Buss (αγγλικά) για την εκκίνηση υπηρεσιών, προσφέρει κατά παραγγελία εκκίνηση προγραμμάτων-δαιμόνων, παρακολουθεί τις διεργασίες χρησιμοποιώντας τις ομάδες ελέγχου (αγγλικά) Linux, διατηρεί τα σημεία προσάρτησης και αυτόματης προσάρτησης και εφαρμόζει μια περίπλοκη λογική συναλλακτικής υπηρεσίας ελέγχου βασισμένης σε εξαρτήσεις. Το systemd υποστηρίζει τα σενάρια init SysV και LSB και λειτουργεί ως αντικατάσταση του sysvinit. Άλλα μέρη του περιλαμβάνουν έναν δαίμονα καταγραφών, εργαλεία για τον έλεγχο βασικών ρυθμίσεων συστήματος όπως του hostname, της ημερομηνίας, των συνόλων τοπικής προσαρμογής locale, διατηρεί μια λίστα των συνδεδεμένων χρηστών, εκτελεί περιέκτες και εικονικές μηχανές, λογαριασμούς συστήματος, καταλόγους χρονοεκτέλεσης (runtime) και ρυθμίσεις, δαίμονες για την διαχείριση απλών ρυθμίσεων δικτύου, χρονικό συγχρονισμό δικτύου, προώθηση καταγραφών και επίλυση ονομάτων (name resolution).

Σημείωση: Για μια λεπτομερή εξήγηση του λόγου που το Arch υιοθέτησε το systemd, δείτε αυτή την ανάρτηση στο φόρουμ.

## Βασική χρήση του systemctl

Η κυριότερη εντολή που χρησιμοποιείται για την ενδοσκόπηση και έλεγχο του systemd είναι η systemctl. Κάποιες από τις χρήσεις της εξετάζουν την κατάσταση του συστήματος και διαχειρίζονται το σύστημα και τις υπηρεσίες. Για περισσότερες λεπτομέρειες, δες systemctl(1).

Συμβουλή:

- Για να ελέγξετε το systemd σε μια απομακρυσμένη συσκευή μπορείτε να χρησιμοποιήσετε όλες τις ακόλουθες εντολές systemctl μαζί με τον διακόπτη `-H user@host`. Για να συνδεθεί στο απομακρυσμένο systemd η εντολή θα χρησιοποιήσει το SSH.

Οι χρήστες Plasma μπορούν να εγκαταστήσουν το systemd-kcmAUR ως γραφικό περιβάλλον για το systemctl. Μετά την εγκατάστασή του το άρθρωμα θα προστεθεί στο System administration.

### Αναλύοντας την κατάσταση συστήματος

Εμφανίστε την κατάσταση συστήματος χρησιμοποιώντας: Show system status using:

    $ systemctl status

Εμφανίστε την Λίστα εκτελούμενων μονάδων:

    $ systemctl

ή:

    $ systemctl list-units

Εμφανίστε την Λίστα αποτυχημένων μονάδων:

    $ systemctl --failed

Τα διαθέσιμα αρχεία μονάδων μπορείτε να τα δείτε στους καταλόγους `/usr/lib/systemd/system/` και `/etc/systemd/system/` (ο τελευταίος αυτός έχει προτεραιόητα). Εμφανίστε την Λίστα εγκατεστημένων μονάδων με:

    $ systemctl list-unit-files

Εμφανίστε τα cgroup slice, την μνήμη και τον γονέα ενός PID:

    $ systemctl status pid

### Χρησιμοποώντας τις μονάδες

Μονάδες μπορούν να είναι, για παράδειγμα, υπηρεσίες (.service), σημεία προσάρτησης (.mount), συσκευές (.device) ή υποδοχές sockets (.socket).

Γενικά, όταν χρησιμοποιείτε το systemctl,πρέπει να προσδιορίσετε το πλήρες όνομα του αρχείου της μονάδας, συμπεριλαμβάνοντας το πρόθεμά της, για παράδειγμα `sshd.socket`. Υπάρχουν, εντούτοις, μερικές συντετμημένες φόρμες όταν προσδιορίζεται την μονάδα στις εντολές systemctl που ακολουθουν:

- Αν δεν καθορίσετε το πρόθεμα το systemctl θα υποθέσει το .service. Για παράδειγμα, τα `netctl` και `netctl.service` είναι ισοδύναμα.
- Τα σημεία προσάρτησης θα μεταφραστούν αυτόματα στην ανάλογη μονάδα .mount. Για παράδειγμα, προσδιορίζοντας `/home` είναι ισοδύναμο του `home.mount`.
- Παρόμοια με τα σημεία προσάρτησης, οι συσκευές μεταφράζονται αυτόματα στην ανάλογη μονάδα .device, γι' αυτό ο προσδιορισμός `/dev/sda2` είναι ισοδυναμος του `dev-sda2.device`.

Για λεπτομέρειες, δείτε το εγχειρίδιο systemd.unit(5).

Σημείωση: Κάποια ονόματα μονάδων περιέχουν το σύμβολο `@` (π.χ. `name@string.service`): αυτό σημαίνει ότι είναι this means that they are κρούσματα (instances) μιας πρότυπης μονάδας της οποίας το πραγματικό όνομα αρχείου δεν περιέχει το `αλφαριθμητικό` μέρος (π.χ. `name@.service`). Ως `αλφαριθμητικό` καλείται το προσδιοριστικό εκτέλεσης του systemd και είναι παρόμοιο με την παράμετρο που περνάει στην πρότυπη μονάδα όταν αυτή καλείται με την εντολή systemctl: μέσα στο αρχείο της μονάδας υποκαθιστά το προσδιοριστικό `%i`. Ακριβέσερα, πριν το systemd επιχειρήσει την εκκίνηση της πρότυπης μονάδας `name@.suffix` θα αναζητήσει την μονάδα με το ακριβές όνομα αρχείου `name@string.suffix`, αν και κατά σύμβαση τέτοια "σύγκρουση" σπάνια συμβαίνει. Τα περισσότερα ονόματα αρχείων μονάδων, δηλαδή, που περιέχουν το σύμβολο `@` εννοούνται ως πρότυπα (templates). Επίσης, αν μια πρότυπη μονάδα κληθεί χωρίς κάποιο προσδιοριστικό εκτέλεσης απλώς θα αποτύχει εφόσον το προσδιοριστικό `%i` δεν μπορεί να υποκατασταθεί.
Συμβουλή:

- Οι περισσότερες από τις εντολές που ακολουθούν λειτουργούν επίσης αν προσδιοριστούν πολλαπλές μονάδες. Για περισσότερες πληροφορίες, δείτε systemctl(1).
- Ο διακόπτης `--now` μπορεί να χρησιμοποιηθεί σε συνδυασμό με τους `enable`, `disable`, και `mask` για να εκκινήσουν, να σταματήσουν ή να κρυφτούν, αντίστοιχα, άμεσα και όχι μετά από επανεκκίνηση της συσκευής οι μονάδες.
- Ένα πακέτο μπορεί να διαθέτει μονάδες για διάφορους σκοπούς. Αν μόλις εγκαταστήσατε κάποιο πακέτο, το σενάριο `pacman -Qql package | grep -Fe .service -e .socket` μπορεί να χρησιμοποιηθεί για να τις ελέγξετε και εντοπίσετε.

Εκκίνηση μιας μονάδας αμέσως:

    # systemctl start μονάδα

Σταμάτημα μιας μονάδας αμέσως:

    # systemctl stop μονάδα

Επανεκκίνηση μιας μονάδας:

    # systemctl restart μονάδα

Απαίτηση από μια μονάδα να επαναφορτώσει τις ρυθμίσεις της:

    # systemctl reload μονάδα

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

    $ systemctl status μονάδα

Ελέγξτε αν μια μονάδα είναι ήδη ενεργοποιημένη ή όχι:

    $ systemctl is-enabled μονάδα

Ενεργοποιήστε μια μονάδα να εκκινεί κατά την εκκίνηση της συσκευής:

    # systemctl enable μονάδα

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

    # systemctl enable --now μονάδα

Απενεργοποιήστε μια μονάδα ώστε να μην εκκινεί κατά την εκκίνηση της συσκευής:

    # systemctl disable μονάδα

Αποκρύψτε μια μονάδα ώστε να είναι αδύνατη η εκκίνησή της (τόσο χειροκίνητα όσο και ως εξάρτηση, κάτι που καθιστά την αποκρυψη επικίνδυνη):

    # systemctl mask μονάδα

Αποκαλύψτε μια μονάδα:

    # systemctl unmask μονάδα

Προβάλετε την σελίδα εγχειριδίου που συνοδεύει κάποια μονάδα (πρέπει να υποστηρίζεται από το αρχείο της μονάδας):

    $ systemctl help μονάδα

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

Σημείωση: Με την εντολή αυτή δεν ζητείται από τις αλλαγμένες μονάδες να επαναφορτώσουν τις ρυθμίσεις τους. Δείτ το πιο πάνω παράδειγμα για `επαναφορτωση`.

    # systemctl daemon-reload

### Διαχείριση ενέργειας

Για την διαχείριση ενέργειας ως μη προνομιούχος χρήστης, είναι απαραίτητο το polkit. Αν βρίσκεστε σε τοπική συνεδρία χρήστη μέσω systemd-logind και δεν υπάρχουν άλλες ενεργές συνεδρίες, οι εντολές που ακολουθούν θα λειτουργήσουν χωρίς προνόμια χρήστη root. Αν όχι, (για παράδειγμα, επειδή κάποιος άλλος χρήστης είναι συνδεδεμένος σε κάποιο τερματικό tty)If not (for example, because another user is logged into a tty), το systemd θα σας ζητήσει τον κωδικό του χρήστη root.

Τερματισμός και επανεκκίνηση του συστήματος:

    $ systemctl reboot

Τερματισμός και απενεργοποίηση του συστήματος:

    $ systemctl poweroff

Αναστολή του συστήματος:

    $ systemctl suspend

Θέση του συστήματος σε κατάσταση αδρανοποίησης:

    $ systemctl hibernate

Θέση του συστήματος σε κατάσταση αδρανοποίησης-ύπνου (ή suspend-to-both):

    $ systemctl hybrid-sleep

## Σύνταξη αρχείων μονάδων

Η σύνταξη των μονάδων αρχείων (αγγλικά) του systemd έχει εμπνευστεί από τα αρχεία με κατάληση .desktop της Προδιαγραφής Εισόδου Επιφάνειας Εργασίας XDG τα οποία, με την σειρά τους, εμπνεύστηκαν από τα αρχεία με κατάληξη .ini του Microsoft Windows. Τα αρχεία μονάδων φορτώνονται από πολλαπλές τοποθεσίες (για να δείτε την πλήρη λίστα τους, εκτελέστε `systemctl show --property=UnitPath`), οι κυριότερες όμως είναι (ταξινομημένες κατά αύξουσα προτεραιότητα):

- `/usr/lib/systemd/system/`: μονάδες που παρέχονται από τα εγκατεστημένα πακέτα
- `/etc/systemd/system/`: μονάδες εγκατεστημένες από τον διαχειριστή του συστήματος

Σημείωση:

- Τα δρομολόγια φόρτωσης των μονάδων είναι εντελώς διαφορετικά όταν το systemd εκτελείται σε λειτουργία χρήστη.
- Τα ονόματα μονάδων systemd πρέπει να περιέχουν μόνον αλφαριθμητικούς χαρκτήρες ASCII, κάτω παύλες και τελείες. Κάθε άλλος χαρακτήρας πρέπει να αντικαθίσταται από χαρακτήρες διαφυγής "\x2d" τύπου C ή να εφαρμόζουν την προκαθορισμένη σημειογραφία ('@', '-'). Για περισσότερες πληροφορίες δείτε τα systemd.unit(5) και systemd-escape(1).

Για παραδείγματα, δείτε τις μονάδες που εγκατέστησαν τα πακέτα σας, καθώς και την ιστοσελίδα annotated example section του εγχειριδίου systemd.service(5).

Συμβουλή: Τα σχόλια που προσημειώνονται με `#` μπορούν να χρησιμοποιηθούν και στα αρχεία μονάδων, αλλά μόνο σε νέα γραμμή. Μην χρησιμοποιείτε σχόλια τέλους-γραμμής μετά τις παραμέτρους του systemd, αλλιώς η μονάδα δεν θα ενεργοποιηθεί.

### Ο χειρισμός των εξαρτήσεων

Με το systemd οι εξαρτήσεις επιλύονται σχεδιάζοντας σωστά τα αρχεία των μονάδων. Η τυπικότερη περίπτωση είναι όταν μια μονάδα Ααπαιτεί να εκτελεστεί μια άλλη μονάδα Β πριν η εκκινηθεί η Α. Σε μια τέτοια περίπτωση προσθέστε `Requires=B` και `After=B` στην ενότητα `[Unit]` της A. Αν η εξάρτηση είναι προεραιτική προσθέστε, αντίστοιχα, `Wants=B` και `After=B`. Σημειώστε ότι, τα `Wants=` και `Requires=` δεν σημαίνουν `After=`, που σημαίνει ότι αν δεν προσδιοριστεί το `After=` οι δυο μονάδες θα εκκινήσουν παράλληλα.

Οι εξαρτήσεις συνήθως τίθενται για υπηρεσίες και όχι για #Στόχοι (Targets). Για παράδειγμα, το αρχείο `network.target` συλλαμβάνεται από οποιαδήποτε υπηρεσία ρυθμίζει τις διεπαφές του δικτύου σας, για τον λόγο αυτό η εκτέλεση της δικής σας προσαρμοσμένης μονάδας είναι αρκετή αφού το `network.target` θα ξεκινήσει όπως και να έχει.

### Τύποι υπηρεσιών

Υπάρχουν πολλοί διαφορετικοί τύποι εκκίνησης που πρέπει να λάβεται υπ' όψιν όταν γράφετε ένα δικό σας αρχείο υπηρεσίας. Αυτό ορίζεται με την παράμετρο `Type=` της ενότητας `[Service]`:

- `Type=simple` (default): το systemd τις θεωρεί ως υπηρεσίες που πρέπει να εκκινήσουν άμεσα. Η διαδικασία δεν πρέπει να διακλαδωθεί. Μην χρησιμοποιείτε αυτό τον τύπο αν άλλες υπηρεσίες αιτούνται την υπηρεσία αυτή, εκτός και αν ενεργοποιείται από κάποια υποδοχή.
- `Type=forking`: το systemd θεωρεί ότι η υπηρεσία έχει εκκινήσει όταν αυτή διακλαδίζεται και η γονική υπηρεσία έχει τερματίσει. Χρησιμοποιείστε αυτό τον τύπο για τους κλασικούς δαίμονες, εκτός και αν γνωρίζεται ότι δεν είναι αναγκαίος. Επίσης πρέπει να προσδιορίσεται και το `PIDFile=` ώστε το systemd να μπορεί να παρακολουθεί την κύρια διεργασία.
- `Type=oneshot`: αυτός ο τύπος είναι χρήσιμος για σενάρια τα οποία εκτελούν μια και μοναδική εργασία και μετά τερμτίζουν. Επίσης, ίσως πρέπει να ρυθμίσετε `RemainAfterExit=yes` ώστε το systemd να θεωρεί την υπηρεσία ως ενεργή μετά την έξοδο της διεργασίας.
- `Type=notify`: ταυτόσημος τύπος με τον `Type=simple`, αλλά υπό τον όρο ότι ο δαίμονας θα στείλει ένα σήμα προς το systemd όταν είναι έτοιμος. Το reference implementation αυτής της ειδοποίησης παρέχεται από το αρχείο libsystemd-daemon.so.
- `Type=dbus`: η υπηρεσία θεωρείται έτοιμη όταν στο σύστημα διαύλου του DBus εμφανίζεται το καθορισμένο `BusName`.
- `Type=idle`: το systemd θα καθυστερήσει την εκτέλεση του binary αρχείου της υπηρεσίας έως ότου αποσταλούν όλες οι εργασίες. Κατα τα λοιπά η υπηρεσία λειτουργεί εν πολλοίς όπως η `Type=simple`.

Για λεπτομερέστερη επεξήγηση των τιμών της παραμέτρου `Type` δείτε την σελίδα εγχειριδίου systemd.service(5).

### Επεξεργασία παρεχομένων μονάδων

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Should be renamed to more descriptive Modifying provided units. (Discuss in Talk:Edit#Deprecation)

Τα αρχεία μονάδων που παρέχουν τα πακέτα δεν πρέπει να επεξεργάζονται απ' ευθείας για να αποφευχθούν διενέξεις με το pacman. Υπάρχουν δυο ασφαλείς τρόποι για να τροποποιήσετε μια μονάδα χωρίς να πειράξετε το αρχικό αρχείο: δημιουργήστε το αρχείο για μια νέα υπηρεσία η οποία παρακάμπτει την αρχική μονάδα ή δημουργείστε ένα περιστασικά αποσπάσματα κώδικα (snippets) τα οποια εφαρμόζονται πριν την αρχική μονάδα. Σε αμφότερες τις μεθόδους πρέπει να επαναφορτώσετε την μονάδα ώστε να εφαρμοστούν οι αλαγές. Αυτό μπορεί να γίνει είτε με την επεξεργασία της μονάδας με `systemctl edit` (που επαναφορτώνει αυτόματα την μονάδα) είτε επαναφορτώνοντας όλες τις μονάδες με:

    # systemctl daemon-reload

Συμβουλή:

- Για να δείτε ποια αρχεία έχουν παρακαμφθεί ή επεκταθεί και ποιες ακριβώς είναι οι αλλαγές, μπορείτε να χρησιμοποιήσετε το systemd-delta.
- Χρησιμοποιείστε την εντολή `systemctl cat μονάδα` για να προβάλετε το περιεχόμενο ενός αρχείου μονάδας και όσα περιστασιακά αποσπάσματα κώδικα συνδέονται με αυτό.

#### Αντικαταστίσημα αρχεία μονάδων

Για να αντικαταστήσετε το αρχείο μονάδας `/usr/lib/systemd/system/μονάδα`, δημιουργείστε το αρχείο `/etc/systemd/system/μονάδα` και επανενεργοποιείστε την μονάδα ώστε να ενημερωθούν τα symlinks:

    # systemctl reenable μονάδα

Εναλλακτικά, εκτελέστε:

    # systemctl edit --full μονάδα

Η εντολή αυτή θα ανοίξει το αρχείο `/etc/systemd/system/μονάδα` στον επεξεργαστή κειμένου σας (αντιγράφοντας την εγκατεστημένη έκδοσή του αν αυτή δεν υπάρχει) και θα το επαναφορτώσει αυτόματα μόλις ολοκληρώσετε την επεξεργασία.

Σημείωση: Η μονάδα αντικατάστασης θα συνεχίσει να χρησιμοποιείται ακόμη κι αν το Pacman ενημερώσει στο μέλλον την αρχική μονάδα. Η μέθοδος καθιστά δυσχερέστερη την συντήρηση του συστήματος και για τον λόγο αυτό προτιμάται η προσέγγιση που ακολουθεί.

#### Περιστασιακά αρχεία

Για να δημιουργήσετε περιστασιακά αρχεία για το αρχείο μονάδας `/usr/lib/systemd/system/μονάδα`, δημιουργείστε τον κατάλογο `/etc/systemd/system/μονάδα.d/` και αποθηκεύστε εκεί αρχαία τύπου .conf ώστε οι επιλογές ρύθμισης να παρακαμφθούν ή να προστεθούν νέες. Το systemd θα επεξεργαστεί και θα εφαρμόσει τα αρχεία αυτά "πάνω" από την αρχική μονάδα.

Ο ευκολοτερος τρόπος για να το κάετε αυτό είναι να εκτελέσετε:

    # systemctl edit μονάδα

Η ενέργεια αυτή ανοίγει το αρχείο `/etc/systemd/system/μονάδα.d/override.conf` στον επεξεργαστή κειμένου (δημιουργώντας το, αν χρειάζεται) και επαναφορτώνει αυτόματα την μονάδα όταν ολοκληρώσετε την επεξεργασία.

Σημείωση: Δεν μπορούν να παρακαμφθούν όλες οι ρυθμίσεις μέσω περιστασιακών αρχείων. Για παράδειγμα, για να μεταβάλλετε την παράμετρο `Conflicts=` είναι απαραίτητο ένα αρχείο αντικατάστασης.

#### Επαναφορά στην έκδοση του προμηθευτή

Για να επαναφέρετε τις όποιες αλλαγές που εγιναν σε μια μονάδα μέσω του `systemctl edit`, εκτελέστε:

    # systemctl revert μονάδα

#### Παραδείγματα

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

    /etc/systemd/system/μονάδα.d/customdependency.conf

    [Unit]
    Requires=νέα εξάρτηση
    After=νέα εξάρτηση

Ένα άλλο παράδειγμα: για να αντικαταστήσετε την οδηγία `ExecStart` για κάποια μονάδα που δεν είναι του τύπου `oneshot`, δημιουργήστε το ακόλουθο αρχείο:

    /etc/systemd/system/μονάδα.d/customexec.conf

    [Service]
    ExecStart=
    ExecStart=νέα εντολή

Παρατηρείστε ότι η `ExecStart` πρέπει πρώτα να δωθεί χωρίς τιμή [1]. Το ίδιο ισχύει και για κάθε στοιχείο που μπορεί να καθοριστεί πολλές φορές, π.χ. `OnCalendar` για τους χρονοδιακόπτες.

Ένα ακόμη παράδειγμα αυτόματης επανεκκίνησης κάποιας υπηρεσίας:

    /etc/systemd/system/μονάδα.d/restart.conf

    [Service]
    Restart=always
    RestartSec=30

## Στόχοι (Targets)

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Ασφαφής περιγραφή, επικκολημένο περιεχόμενο (αναφέρεται αποκλειστικά σε "Fedora"). (Discuss in "Targets"_more_clearly Talk:Systemd (Ελληνικά)#Make section "Targets" more clearly)

Το systemd χρησιμοποιεί στόχους για να ομαδοποιεί τις μονάδες μέσω εξαρτήσεων και ως πρότυπα σηεία συγχρονισμού. Εξυπηρετούν παρόμοιους στόχους με τα runlevels αλλά λειτουργούν λίγο διαφορετικά. Κάθε στόχος παίρνει ένα όνομα αντί να αριθμείται και σκοπό έχει να υπηρετήσει ένα συγκεκριμένο σκοπό με δυνατότητα να έχουμε πολλαπλούς στόχους ενεργούς, ταυτόχρονα. Κάποιοι στόχοι εφαρμόζονται απορροφώντας όλες τις υπηρεσίας κάποιου άλλου στόχου και προσθέτοτας σε αυτόν επιπλέον υπηρεσίες. Υπάρχουν στόχοι του systemd που μιμούνται συνήθη runlevels του SystemVinit και έτσι μπορείτε να ελέγξετε τον στόχο χρησιμποιώντας την γνωστή εντολή `telinit RUNLEVEL`.

### Προβολή τρεχόντων στόχων

Πρέπει να εκτελείτε την παρακάτω γραμμή, αντί της `runlevel`:

    $ systemctl list-units --type=target

### Δημιουργία προσαρμοσμένων στόχων

Τα runlevels που εχουν καθορισμένη σημασία στο sysvinit (i.e., 0, 1, 3, 5, and 6) έχουν αντιστοίχιση 1:1 με συγκεκριμένο στόχο του systemd. Δυστυχώς, δεν υπάρχει κάποιος αξιόλογος τρόπος για να κάνουμε το ίδιο και στα runlevels του χρήστη, όπως τα 2 και 4. Αν χρησιμοποιήσετε τους τρόπους αυτούς, συνίσταται να δημιουργήσετε έναν νέο στόχο με `/etc/systemd/system/ο στόχος σας` που θα έχει ως βάση ένα από τα υπαρχοντα runlevels (σαν παράδειγμα, μπορείτε να ρίξετε μια ματιά στο αρχείο `/usr/lib/systemd/system/graphical.target`), να δημιουργήσετε ένα κατάλογο `/etc/systemd/system/your target.wants` και μετά να κάνετε symlink τις επιπρόσθετες υπηρεσίες που θέλετε να ενεργοποιήσετε από τον κατάλογο `/usr/lib/systemd/system/`.

### Αντιστοίχιση SysV runlevels και στόχων systemd

SysV Runlevel | systemd Target | Notes
--- | --- | ---
0 | runlevel0.target, poweroff.target | Ακινητοποίηση συστήματος.
1, s, single | runlevel1.target, rescue.target | Λειτουργία χρήστη.
2, 4 | runlevel2.target, runlevel4.target, multi-user.target | User-defined/Site-specific runlevels. Εξορισμού είναι ταυτόσημο με το 3.
3 | runlevel3.target, multi-user.target | Πολλαπλών χρηστών, μη γραφικό. Οι χρήστες συνήθως μπορούν να συνδεθούν μέσω πολλαπλών τερματικών ή μέσω δικτύου.
5 | runlevel5.target, graphical.target | Πολλαπλών χρηστών, γραφικό. Συνήθως διαθέτει όλες τις υπηρεσίες του runlevel 3 συν ένα γραφικό περιβάλλον σύνδεσης.
6 | runlevel6.target, reboot.target | Επανεκκίνηση.
emergency | emergency.target | Κέλυφος έκτακτης ανάγκης.

### Change current target

Στο systemd οι στόχοι εκτίθενται μέσω μονάδων-στόχων. Μπορείτε να τους αλλάξετε ως εξής:

    # systemctl isolate graphical.target

Η ενέργεια αυτή θα αλλάξει μόνον τον τρέχοντα στόχο και δεν έχει κανένα αποτέλεσμα στην επόμενη επανεκκίνηση. Είναι ισοδύναμη με εντολές όπως `telinit 3` ή `telinit 5` του Sysvinit.

### Αλλαγή του αρχικού στόχου εκκίνησης

Ο εξορισμού στόχος είναι ο `default.target` ο οποίος γίνεται symlink με τον `graphical.target`. Χονδρικά, αυτό αντιστοιχεί με το παλαιό runlevel 5.

Για να διαπιστώσετε τον τρέχοντα στόχο μέσω systemctl:

    $ systemctl get-default

Για να αλλάξετε τον εξορισμού στόχο εκκίνησης, αλλάξετε το symlink του `default.target` symlink. Μέσω systemctl:

    # systemctl set-default multi-user.target

    Removed /etc/systemd/system/default.target.
    Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target.

Εναλλακτικά, προσθέστε μια από τις ακόλουθες παραμέτρους kernel στον εκκινητή σας (bootloader):

- `systemd.unit=multi-user.target` (που χονδρικά αντιστοιχεί στο παλαιό runlevel 3),
- `systemd.unit=rescue.target` (που χονδρικά αντιστοιχει στο παλαιό runlevel 1).

### Η σειρά των εξορισμού στόχων

Το systemd επιλέγει τον `default.target` σύμφωνα με την ακόλουθη σειρά:

1. Kernel parameter shown above
2. Symlink of `/etc/systemd/system/default.target`
3. Symlink of `/usr/lib/systemd/system/default.target`

## Προσωρινά αρχεία

Η σουίτα "systemd-tmpfiles δημιουργεί, διαγράφει και εκκαθαρίζει ασαφή (volatile) και προσωρινά αρχεία και καταλόγους." Για να εντοπίσει τις ενέργειες που πρέπει να εκτελέσει, διαβάζει τα αρχεία ρυθμίσεων στους καταλόγους `/etc/tmpfiles.d/` και `/usr/lib/tmpfiles.d/`. Προηγούνται τα αρχεία ρυθμίσεων του πρώτου ως άνω καταλόγου έναντι εκείνων του δεύτερου.

Συνήθως τα αρχεία ρυθμίσεων παρέχονται μαζί με τα αρχεία υπηρεσιών και παίρνουν ονόματα του στυλ `/usr/lib/tmpfiles.d/πρόγραμμα.conf`. Το πρόγραμμα-δαίμονας Samba, για παράδειγμα, απαιτεί την ύπαρξη του καταλόγου `/run/samba` και σωστών αδειών. Για τον λόγο αυτό το πακέτο samba συνοδεύεται από την εξής ρύθμιση:

    /usr/lib/tmpfiles.d/samba.conf

    D /run/samba 0755 root root

Τα αρχεία ρυθμίσεων μπορούν επίσης να χρησιμοποιηθούν για να περάσουμε τιμές σε συγκεκριμένα αρχεία, κατά την εκκίνηση. Για παράδειγμα, αν χρησιμοποιήσατε το αρχείο `/etc/rc.local` για να απενεργοποιήσετε την αφύπνιση από συσκευές USB μέσω `echo USBE > /proc/acpi/wakeup`, μπορείτε να χρηιμοποιήσετε το ακόλουθο tmpfile αντ' αυτού:

    /etc/tmpfiles.d/disable-usb-wake.conf

    #    Path                  Mode UID  GID  Age Argument
    w    /proc/acpi/wakeup     -    -    -    -   USBE

Για περισσότερες λεπτομέρειες δείτε τις σελίδες εγχειριδιου systemd-tmpfiles(8) και tmpfiles.d(5).

Σημείωση: Η μέθοδος αυτής ίσως δεν λειτουργήσει για να ορίσετε επιλογές στον κατάλογο `/sys`, αφού η υπηρεσία systemd-tmpfiles-setup ίσως εκτελεστεί πριν την φόρτωση των κατάλληλων αρθρωμάτων (modules) συσκευής. Στην περίπτωση αυτή μπορείτε να ελέγξετε αν το άρθρωμα διαθέτει κάποια παράμετρο για την επιλογή που θέλετε να ορίσετε με την εντολή `modinfo module` και να ορίσετε την επιλογή αυτή με ένα αρχείο ρυθμίσεων στον κατάλογο /etc/modprobe.d. Αλλιώς θα πρέπει να γράψετε έναν κανόνα udev για να ορίσετε την κατάλληλη ιδιότητα για την συσκευή.

## Χρονοδιακόπτες

Χρονοδιακόπτης είναι ένα αρχείο ρύθμισης μονάδας του οποίου το όνομα τελειώνει σε .timer και περιέχει πληροφορίες για τον χρονοδιακόπτη που ελέγχεται και επιτηρείται από το systemd. Δείτε την σελίδα systemd/Timers (Αγγλικά).

Σημείωση: Σε μεγάλο βαθμό οι χρονοδιακόπτες μπορούν να αντικαταστήσουν την λειτουργία του cron. Δείτε την σελίδα Systemd/Timers#As a cron replacement.

## Προσάρτηση

Το systemd ευθύνεται για την προσάρτηση των κατατμήσεων και των συστημάτων αρχείων που προσδιορίζονται στο αρχείο `/etc/fstab`. Το πρόγραμμα systemd-fstab-generator(8) μεταφράζει όλες τις εγγραφές που υπάρχουν στο αρχείο `/etc/fstab` σε μονάδες systemd. Αυτό γίνεται την στιγμή της εκκίνησης και κάθε φορά που επαναφορτώνονται οι ρυθμίσεις του διαχειριστή συστήματος.

Το systemd επεκτείνει τις συνήθεις δυνατότητες του fstab και προσφέρει επιπλέον επιλογές προσάρτησης. Οι επιλογές αυτές επηρεάζουν τις εξαρτήσεις του σημείου προσάρτησης. Μπορούν, για παράδειγμα, να εξασφαλίσουν ότι η προσάρτηση θα εκτελεστεί μόνον όταν το δίκτυο είναι ενεργό ή μόνο όταν προσαρτηθεί μια άλλη κατάτμηση. Η πλήρης λίστα συγκεκριμένων επιλογών προσάρτησης του systemd, που συνηθως έχουν προθεμα `x-systemd.` αναλύεται στο εγχειρίδιο systemd.mount(5) § FSTAB.

Ένα παράδειγμα αυτών των επιλογών προσάρτησης όσον αφορά στο automounting, που σημαίνει προσάρτηση μόνον όταν ο πορος απαιτείται, παρά αυτόματα κατά την εκκίνηση, δίνεται στην σελίδα fstab#Automount with systemd.

### Αυτοπροσάρτηση κατατμήσεων GPT

Σε έναν δίσκο κατατμημένο κατά GPT το πρόγραμμα systemd-gpt-auto-generator(8) θα προσαρτήσει τις κατατμήσεις ακολουθώντας την Προδιαγραφή Εντοπίσημων Κατατμήσεων (Αγγλικά) και έτσι μπορούν να παραλειφθούν από το `fstab`.

Η αυτοπροσάρτηση κατάτμησης συστήματος τύπου EFI απαιτεί ότι ο εκκινητής θα ορίσει την EFI μεταβλητή LoaderDevicePartUUID. Μόνον το systemd-boot είναι γνωστό ότι κάνει κάτι τέτοιο.

Για να λειτουργήσει η αυτοπροσάρτηση των καταλότγων `/var` και `/var/tmp`, το PARTUUID πρέπει να ταιριάζει με τον κώδικα SHA256 HMAC του UUID της κατάτμησης και τον αριθμό ID της συσκευής. Το απαιτούμενο PARTUUID μπορεί να ανακτηθεί με την εντολή:

    $ systemd-id128 -u --app-specific=partition-tupe-UUID machine-id

Αντικαταστείστε το `partition-type-UUID` με την κατάλληλη τιμή του UUID για τον τύπο της κατάτμησης όπως δίνονται από την ιστοσελίδα Discoverable Partitions Specification.

Σημείωση: Η εντολήsystemd-id128(1) διαβάζει την ταυτότητα ID της συσκευής από το `/etc/machine-id`, που σημαίνει ότι είναι αδύνατον να γνωρίζουμε το απαραίτητο PARTUUID πριν την εγκατάσταση του συστήματος.

Η αυτοπροσάρτηση μιας κατάτμησης μπορεί να απενεργοποιηθεί αλλάζοντας τον τύπο GUID (Αγγλικά) ή θέτοντας το μπιτ ιδιοτήτων 63 της κατάτμησης στην τιμή "να μην γίνεται αυτοπροσάρτηση". Δείτε gdisk#Prevent GPT partition automounting.

## systemd-sysvcompat

Πρωταρχικός ρόλος της σουίτας systemd-sysvcompat (απαιτείται από το base) είναι να παρέχει το παραδοσιακό δυαδικό αρχείο του linux, init. Σε συστήματα που ελέγχονται από το systemd, το `init` είναι ο συμβολικός σύνδεσμος στο εκτελέσιμό του, `systemd`.

Επιπλέον παρέχει 6 συντομεύσεις ευκολίας στις οποίες οι χρήστες SysVinit ίσως είναι συνηθισμένοι. Οι συντομεύσεις ευκολίας είναι halt(8), poweroff(8), reboot(8), runlevel(8)[dead link 2020-09-13], shutdown(8), και telinit(8)[dead link 2020-09-13]. Κάθε μια από αυτές τις 6 εντολές είναι ένας συμβολικός σύνδεσμος προς το πρόγραμμα `systemctl`, και ελέγχεται από την συμπεριφορά του systemd. Για τον λόγο αυτό η συζήτηση στο #Διαχείριση ενέργειας αφορά στα `halt`, `poweroff`, `reboot` και `shutdown`. Η συζήτηση στο #Αντιστοίχιση SysV runlevels και στόχων systemd αφορά στα `runlevel` και `telinit`.

Σε συστήματα systemd, αυτές οι μέθοδοι συμβατότητας κατά System V μπορούν να παραλειφθούν με την χρήση παραμέτρων εκκίνησης (Αγγλικά) στο `init=` (δείτε, για παράδειγμα, [solved] /bin/init is in systemd-sysvcompat ?) και με καθαυτό παραμέτρους εντολών του `systemctl`.

## Συμβουλές και τεχνάσματα

### Εκτέλεση υπηρεσιών μετά την ενεργοποίηση του δικτύου

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

    /etc/systemd/system/foo.service

    [Unit]
    ...
    Wants=network-online.target
    After=network-online.target
    ...

Πρέπει επίσης να ενεργοποιηθεί και η υπηρεσία αναμονής δικτύου της συγκεκριμένης εφαρμογής που διαχειρίζεται το δίκτυο ώστε το αρχείο `network-online.target` να αντιστοιχεί ορθά στην κατάσταση του δικτύου.

- Αν χρησιμοποιείτε NetworkManager, η υπηρεσία `NetworkManager-wait-online.service` είναι ενεργοποιημένη μαζί με την `NetworkManager.service`. Ελέγξτε αν συμβαίνει το ίδιο με την υπηρεσία `systemctl is-enabled NetworkManager-wait-online.service`. Αν δεν είναι ενεργοποιημένη επανενεργοποιείστε (Αγγλικά) την υπηρεσία `NetworkManager.service`.
- Στην περίπτωση του netctl, ενεργοποιείστε (Αγγλικά) την `netctl-wait-online.service`.
- Αν χρησιμοποιείτε systemd-networkd, η υπηρεσία `systemd-networkd-wait-online.service` είναι ενεργοποιημένη μαζί με την `systemd-networkd.service`. Ελέγξτε με `systemctl is-enabled systemd-networkd-wait-online.service`.

Για περισσότερο λεπτομερείς εξηγήσεις, δείτε την σελίδα Running services after the network is up στο wiki του systemd.

### Εξορισμού ενεργοποίηση εγκατεστημένων μονάδων

This article or section needs expansion.

Reason: Πώς λειτουργεί αυτό με τις ενεργές μονάδες; (Discuss in Talk:Systemd (Ελληνικά)#)

Το Arch Linux συνοδεύεται από ένα αρχείο `/usr/lib/systemd/system-preset/99-default.preset` που περιέχει την οδηγία `disable *`. Αυτή λέει στην εντολή systemctl preset να απενεργοποιήσει εξ ορισμού όλες τις μονάδες ώστε, όταν εγκαθίσταται ένα νέο πακέτο, ο χρήστης να πρέπει να ενεργοποιήσει την μονάδα αυτόματα.

Αν δεν επιθυμείτε μια τέτοια συμπεριφορά, απλώς δημιουργείστε ένα symlink από το αρχείο `/etc/systemd/system-preset/99-default.preset` προς τον κατάλογο `/dev/null` ώστε να παρακαμφθεί το αρχείο ρυθμίσεων. Αυτό θα προκαλέσει στην εντολή systemctl preset να ενεργοποιήσει όλες τις μονάδες που εγκαταστάθηκαν-ασχέτως τύπου μονάδας-εκτός και αν καθορίζεται σε άλλο αρχείο κάποιου καταλόγου ρυθμίσεων του systemctl preset. Οι μονάδες χρήστη δεν επηρεάζονται. Για περισσότερες πληροφορίες, δείτε systemd.preset(5).

Σημείωση: Η εξορισμού ενεργοποίηση όλων των μονάδων ίσως δημιουργήσει προβλήματα με πακέτα που περιέχουν δύο ή περισσότερες αλληλοαποκλειόμενες μονάδες. Η εντολή systemctl preset είναι σχεδιασμένη να χρησιμοποιείται από διανομές και παράγοντά τους ή από διαχειριστές συστήματος. Σε περίπτωση ενεργοποίησης δυο αλληλοσυγκρουόμενων μονάδων, πρέπει να δηλώσετε ρητά μέσα σε ένα αρχείο προρυθμίσεων ποια από τις δυο θα απενεργοποιηθεί, όπως καθορίζεται στην σελίδα εγχειριδίου `systemd.preset`.

### Ασφάλιση τα περιβάλλοντα των εφαρμογών

Ένα αρχείο μονάδας μπορεί να δημιουργηθεί ως περιβάλλον ασφαλείας (sanbox) ώστε οι εφαρμογές και οι διεργασίες τους να απομονωθούν μέσα σε ένα στεγανό περιβάλλον. Το systemd αξιοποιεί τα namespaces (Αγγλικά), την μαύρη/λευκή λίστα Δυνατοτήτων (Αγγλικά), και τα control groups (Αγγλικά) για να ασφαλίσει τις διεργασίες μέσω μιας εκτεταμένης διαρυθμισης εκτελεστικού περιβάλλοντος (Αγγλικά).

Η ενίσχυση ενός υπαρχοντος αρχείου μονάδας systemd με ασφάλιση εφαρμογής sandboxing απαιτεί ελέγχους δοκιμής-σφάλματος, συνοδευόμενους από γενναία χρήση strace, stderr και καταγραφή σφαλμάτων και εργαλείων εξόδου journalctl. Μπορείτε να βασίσετε τις δοκιμές σας σε ήδη δημοσιευμένους ελέγχους που θα βρείτε σε ανάντη τεκμηρίωση.

Μερικά παραδείγματα εφαρμογής της μεθόδου sandboxing:

- Η παράμετρος `CapabilityBoundingSet` καθορίζει μια λίστα επιτρεπόμενων δυνατοτήτων, μπορεί όμως να χρησιμοποιηθεί και για την δημιουργία απαγορευμένων συγκεκριμένων δυνατοτήτων για μια μονάδα.
  - Για παράδειγμα η δυνατότητα `CAP_SYS_ADM`, η οποία πρέπε να ειναι ένας από τους which should be one of the στόχους για ασφαλές sandboxing: `CapabilityBoundingSet=~ CAP_SYS_ADM`

## Αντιμετώπιση προβλημάτων

### Έρευνα των σφαλμάτων systemd

This section is being considered for removal.

Reason: Υπερβολικά μακροσκελής ενότητα αναφορά προς το PEBKAC, πράγμα που δεν θα επανληφθεί ακόμη και από εκείνον που την συνέταξε. Αφήστε μόνον το `systemctl --state=failed` και μια αναφορά προς το systemd/Journal#Filtering output. (Discuss in Talk:Systemd (Ελληνικά)#)

Ως παράδειγμα, μπορούμε να ερευνήσουμε κάποιο σφάλμα μέσω της υπηρεσίας `systemd-modules-load`:

1. Ας εντοπίσουμε την υπηρεσία systemd η οποία απέτυχε να εκκινήσει κατά την επανεκκίνηση:

    $ systemctl --state=failed

    systemd-modules-load.service   loaded failed failed  Load Kernel Modules

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

    $ journalctl --follow --priority=err

2. Καλώς! Βρήκαμε το πρόβλημα με την βοήθεια της υπηρεσίας `systemd-modules-load`. Πρέπει να μάθουμε περισσότερα:

    $ systemctl status systemd-modules-load

    systemd-modules-load.service - Load Kernel Modules
       Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
       Active: failed (Result: exit-code) since So 2013-08-25 11:48:13 CEST; 32s ago
         Docs: man:systemd-modules-load.service(8).
               man:modules-load.d(5)
      Process: 15630 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)

Αν το If the `ID της διεργασίας` δεν υπάρχει στην λίστα, απλώς επανεκκινήστε την αποτυχημένη υπηρεσία με την εντολή `systemctl restart systemd-modules-load`

3. Έχουμε τώρα την ταυτότητα (ID) της διεργασίας ώστε να ερευνήσουμε σε βάθος το σφάλμα. Πληκτολογήστε την ακόλουθη εντολή με την τρέχουσα `ταυτότητα ID της διεργασίας` (εδώ: 15630):

    $ journalctl _PID=15630

    -- Logs begin at Sa 2013-05-25 10:31:12 CEST, end at So 2013-08-25 11:51:17 CEST. --
    Aug 25 11:48:13 mypc systemd-modules-load[15630]: Failed to find module 'blacklist usblp'
    Aug 25 11:48:13 mypc systemd-modules-load[15630]: Failed to find module 'install usblp /bin/true'

4. Βλέπουμε ότι ο πυρήνας έχει λανθασμένες ρυθμίσεις αρθρωμάτων. Για τον λόγο αυτό εξετάζουμε τις ρυθμίσεις αυτές που βρίσκονται στον κατάλογο `/etc/modules-load.d/`:

    $ ls -Al /etc/modules-load.d/

    ...
    -rw-r--r--   1 root root    79  1. Dez 2012  blacklist.conf
    -rw-r--r--   1 root root     1  2. Mär 14:30 encrypt.conf
    -rw-r--r--   1 root root     3  5. Dez 2012  printing.conf
    -rw-r--r--   1 root root     6 14. Jul 11:01 realtek.conf
    -rw-r--r--   1 root root    65  2. Jun 23:01 virtualbox.conf
    ...

5. Το μήνυμα σφάλματος The `Failed to find module '...'` ίσως σχετίζεται με λάθος ρυθμίσεις στο αρχείο `blacklist.conf`. Ας τις απενεργοποιήσουμε εισάγοντας μια # στην αρχη κάθε σειράς από τις επιλογές που εντοπίσαμε στο βήμα 3:

    /etc/modules-load.d/blacklist.conf

    #blacklist usblp
    #install usblp /bin/true

6. Προσπαθήστε, τώρα, να ξεκινήσετε την φόρτωση των αρθρωμάτων `systemd-modules-load`:

    # systemctl start systemd-modules-load

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

Αν όλα εξελιχθούν ομαλά, μπορείτε να επιβεβαιώσετε ότι η υπηρεσία εκκίνησε με επιτυχια χρησιμοποιώντας:

    $ systemctl status systemd-modules-load

    systemd-modules-load.service - Load Kernel Modules
       Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
       Active: active (exited) since So 2013-08-25 12:22:31 CEST; 34s ago
         Docs: man:systemd-modules-load.service(8)
               man:modules-load.d(5)
     Process: 19005 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)
    Aug 25 12:22:31 mypc systemd[1]: Started Load Kernel Modules.

Το πρόβλημα που υπογραμμίσαμε εδώ είναι η λανθασμένη θέση του αρχείου `blacklist.conf`. Δείτε modules-load.d(5) και kernel module#Blacklisting.

### Διάγνωση προβλημάτων εκκίνησης του συστήματος

Το systemd έχει πολλές επιλογές διάγνωσης προβλημάτων κατά την διαδικασια εκκίνησης. Για γενικότερες οδηγίες και επιλογές σύλληψης μηνυμάτων εκκίνησης πριν το systemd αναλάβει την διαδικασία εκκίνησης συστήματος (Αγγλικά), δείτε την σελίδα αποσφαλμάτωση εκκίνησης συστήματος (Αγγλικά). Επίσης, δείτε την τεκμηρίωση αποσφαλμάτωσης του systemd (Αγγλικά).

### Διάγνωση υπηρεσίας

Αν κάποια υπηρεσία systemd δεν λειτουργεί όπως πρέπει ή αν θέλετε περισσότερες πληροφορίες για ό,τι συμβαίνει, ορίστε στην μεταβλητή περιβάλλοντος (Αγγλικά) `SYSTEMD_LOG_LEVEL` την τιμή `debug`. Για παράδειγμα, για να εκτελέσετε την δαίμοναsystemd-networkd σε περιβάλλον αποσφαλμάτωσης:

Δημιουργείστε ένα περιστασιακό αρχείο για την υπηρεσία, προσθέτοντας δυο γραμμές:

    [Service]
    Environment=SYSTEMD_LOG_LEVEL=debug

Ή, ισοδύναμα, καθορίστε χειροκίνητα την μεταβλητή περιβάλλοντος:

    # SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd

Επανεκκινήστε (Αγγλικά) την υπηρεσία systemd-networkd και με την επιλογή `-f`/`--follow` παρακολουθήστε το journal της υπηρεσίας.

### Ο τερματισμός/επανεκκίνηση παίρνουν πάρα πολύ χρόνο

Αν η διαδικασία τερματισμού διαρκεί πάρα πολύ χρόνο (ή αν δείχνει να έχει «παγώσει») το πιθανότερο είναι να ευθύνεται κάποια υπηρεσία που δεν ολοκληρώθηκε. Το systed περιμένει για κάποιον χρόνο την έξοδο κάθε υπηρεσίας, πριν επιχειρήσει να την «σκοτώσει». Για να διαπιστώσετε αν επηρεάζεστε, δείτε αυτό το άρθρο (Αγγλικά).

### Οι βραχύβιες διεργασίες δεν δείχνουν να καταγράφουν οποιοδήποτε αποτέλεσμα εξόδου

Αν η εντολή `journalctl -u foounit` δεν εμφανίζει αποτέλεσμα για κάποια βραχύβια υπηρεσία, κοιτάξτε το PID της. Για παράδειγμα, αν αποτύχει η υπηρεσία`systemd-modules-load.service` και η εντολή `systemctl status systemd-modules-load` δείχνει ότι η υπηρεσία εκτελέστηκε με PID 123, τότε ίσως μπορείτε δείτε κάποιο αποτέλεσμα εξόδου στο journal για το PID αυτό, δηλαδή, `journalctl -b _PID=123`. Τα πεδία μεταδεδομένων για το journal, όπως `_SYSTEMD_UNIT` και `_COMM`, συμπληρώνονται ασύγχρονα και εξαρτώνται από τον κατάλογο `/proc` για την υπαρχουσα διεργσία. Η επιδιόρθωση αυτής της δυσλειτουργίας απαιτεί την προσαρμογή το πυρήνα ώστε να παρέχει τα δεδομένα αυτά μέσω μιας σύνδεσης υποδοχής socket, παρόμοιας με `SCM_CREDENTIALS`. Εν ολίγοις, πρόκειται για σφάλμα (Αγγλικά). Να ξέρετε ότι οι υπηρεσίες που αποτυγχάνουν άμεσα δεν εμφανίζουν τίποτα στο journal, σύμφωνα και με τον σχεδιασμό του systemd.

### Η διάρκεια εκκίνησης συστήματος αυξάνει με τον χρόνο

Χρησιμοποιώντας `systemd-analyze` μερικοί χρήστες έχουν παρατηρήσει ότι η διάρκεια του χρόνου εκκίνησης της συσκευής έχει αυξηθεί σημαντικά σε σχέση με πριν. Η εντολή `systemd-analyze blame` αναφέρει ότι ο NetworkManager παίρνει ασυνήθιστα αυξημένο χρόνο για να ξεκινήσει.

Για μερικούς χρήστες το πρόβλημα είναι ότι ο κατάλογος `/var/log/journal` γίνεται πολύ μεγάλος. Κάτι τέτοιο μπορεί να έχει συνέπειες για την απόδοση του συστήματος, όπως και για το `systemctl status` ή το `journalctl`. Η λύση είναι να διαγραφούν όλα τα αρχεία του καταλόγου (δημιουργώντας αντίγραφο ασφαλείας, έστω και προσωρινό) και έπειτα ορίζοντας ένα όριο για το αρχείο του journal, όπως περιγράφεται στην σελίδα Systemd/Journal#Journal size limit.

### Η υπηρεσια systemd-tmpfiles-setup.service αποτυγχάει να ξεκινήσει κατά την εκκινηση

Ξεκινώντας από το systemd 219, το αρχείο `/usr/lib/tmpfiles.d/systemd.conf` καθορίζει τις ιδιότητες ACL για τους καταλόγους που βρίσκονται κάτω από τον `/var/log/journal` και, γι' αυτό, απαιτείται ενεργοποίηση της υποστηριξης ACL για το σύστημα αρχείου στο οποιο θα εγκατασταθεί το journal.

Για οδηγίες ενεργοποίησης του ACL σε σύστημα αρχείων που φιλοξενήσει τον κατάλογο `/var/log/journal`, δείτε την σελίδα Access Control Lists#Enable ACL.

### Απενεργοποίηση της λειτουργίας έκτακτης ανάγκης σε απομακρυσμένες συσκευές

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

    # systemctl mask emergency.service
    # systemctl mask emergency.target

## Δείτε επίσης

- Wikipedia:systemd
- systemd Official web site
  - systemd optimizations
  - systemd FAQ
  - systemd Tips and tricks
- Manual pages
- Άλλες διανοές linux
  - Gentoo:Systemd
  - Fedora:Systemd
  - Fedora:How to debug Systemd problems
  - Fedora:SysVinit to Systemd Cheatsheet
  - Debian:systemd
- Lennart's blog story, update 1, update 2, update 3, summary
- systemd for Administrators (PDF)
- How To Use Systemctl to Manage Systemd Services and Units
- Session management with systemd-logind
- Emacs Syntax highlighting for Systemd files
- Two part εισαγωγικο άρθρο του περιοδικού The H Open.

Category:

- Init (Ελληνικά)

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages with dead links
- Pages or sections flagged with Template:Expansion
- Sections flagged with Template:Remove