Systemd Service File

Systemd Service File



Στο Linux, η έξοδος κατάστασης systemctl δείχνει ότι η υπηρεσία φορτώνεται μέσω ενός αρχείου που ονομάζεται αρχείο υπηρεσίας. Αυτά τα αρχεία είναι προσβάσιμα στο /lib/systemd/system ή /etc/systemd/system καταλόγους.

Τα αρχεία υπηρεσίας έχουν .υπηρεσία επεκτάσεις και περιέχουν τις οδηγίες που απαιτούνται από systemd για τη διαχείριση μιας υπηρεσίας.







ο systemd Το σύστημα init διαχειρίζεται την προετοιμασία του συστήματος χρησιμοποιώντας το Μονάδα . Μια μονάδα είναι ένα αντικείμενο που εκτελεί μια εργασία ή μια ενέργεια, όπως η διαχείριση μιας υπηρεσίας, η οποία περιλαμβάνει τον έλεγχο και την παρακολούθησή της. Αυτές οι μονάδες είναι ουσιαστικά αρχεία που ονομάζονται αρχεία υπηρεσιών και περιλαμβάνουν εξαρτήσεις και εντολές μονάδων. Αυτά τα αρχεία είναι ζωτικής σημασίας για τον αποτελεσματικό έλεγχο των διαδικασιών παρασκηνίου και τη διαχείριση των πόρων.



Στον οδηγό, θα εξερευνήσω το αρχείο υπηρεσίας systemd, τη δομή του και τις κύριες οδηγίες που ελέγχουν την υπηρεσία.



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





Τι είναι το Systemd Service File

Στο Linux, το systemd διαχειρίζεται τις υπηρεσίες χρησιμοποιώντας τα αρχεία υπηρεσίας που περιέχουν τις οδηγίες διαμόρφωσης, ώστε το systemd να μπορεί να κατανοήσει και να εκτελέσει.

Για να απαριθμήσετε τις μονάδες, χρησιμοποιήστε το systemctl με το –λίστα-μονάδες εντολή.



systemctl --λίστα-μονάδες

Για να διαβάσετε το αρχείο υπηρεσίας οποιασδήποτε υπηρεσίας, χρησιμοποιήστε το Γάτα εντολή με τη διαδρομή του αρχείου.

Γάτα [ / υπηρεσία-αρχείο-διαδρομή ]

Για παράδειγμα, για να δείτε το αρχείο υπηρεσίας του ssh.service χρησιμοποιήστε τη δεδομένη εντολή.

Γάτα / lib / systemd / Σύστημα / ssh.service

Αρχείο Anatomy of Systemd Service

Γενικά, τα αρχεία της μονάδας υπηρεσιών systemd περιέχουν τρεις ενότητες.

  • Μονάδα
  • Υπηρεσία
  • Εγκαθιστώ

Ένα αρχείο μονάδας για συγκεκριμένη υπηρεσία θα έχει μια συγκεκριμένη ενότητα που ονομάζεται Υπηρεσία Ενότητα.

Σημειώστε ότι η υπηρεσία είναι απλώς ένας τύπος μονάδας. Μια μονάδα μπορεί να έχει διαφορετικούς τύπους, όπως πρίζα, συσκευή, βάση, αυτόματη προσάρτηση, εναλλαγή, στόχο, χρονόμετρο, φέτα και εμβέλεια. Αυτά τα τμήματα τοποθετούνται μεταξύ των ενοτήτων Unit και Install. Η επέκταση αρχείου θα αντικατασταθεί επίσης με τον αντίστοιχο τύπο μονάδας, για παράδειγμα, ένας τύπος μονάδας υποδοχής θα έχει α .πρίζα επέκταση αρχείου.

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

Αυτά τα τμήματα περικλείονται στις αγκύλες ([]). Κάθε ενότητα περιέχει ένα σχετικό σύνολο οδηγιών. Μια γενική δομή ενός αρχείου υπηρεσίας δίνεται παρακάτω.

[ Μονάδα ]

Οδηγία 1 =Οδηγία 1

Οδηγία 2 =Οδηγία 2

[ Υπηρεσία ]

Οδηγία 1 =Οδηγία 1

Οδηγία 2 =Οδηγία 2

[ Εγκαθιστώ ]

Οδηγία 1 =Οδηγία 1

Οδηγία 2 =Οδηγία 2

Η σειρά των ενοτήτων μπορεί να αλλάξει. Ωστόσο, γενικά τηρείται η προαναφερθείσα σειρά.

Ενότητα [Μονάδα]

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

Διευθυντικός Περιγραφή
Περιγραφή Αυτή η οδηγία χρησιμοποιείται για την αναφορά του ονόματος της υπηρεσίας. Το μήκος της περιγραφής δεν πρέπει να υπερβαίνει τους 80 χαρακτήρες.
Τεκμηρίωση Αυτή η οδηγία περιέχει τη σελίδα man ή τη διεύθυνση URL της υπηρεσίας.
Απαιτεί Αυτή η οδηγία χρησιμοποιείται για να αναφέρει την εξάρτηση από την τρέχουσα υπηρεσία. Εάν δεν πραγματοποιηθεί η ενεργοποίηση αυτής της υπηρεσίας εξάρτησης, η τρέχουσα υπηρεσία δεν θα εκκινηθεί.
Θέλει Αυτή η οδηγία χρησιμοποιείται για να αναφέρει την εξάρτηση από την τρέχουσα υπηρεσία. Ωστόσο, αυτή η υπηρεσία εξάρτησης δεν απαιτείται να ενεργοποιηθεί για την εκτέλεση της τρέχουσας υπηρεσίας.
Πριν Αφού ενεργοποιηθεί η τρέχουσα μονάδα, θα ξεκινήσει η υπηρεσία που αναφέρεται στην παρούσα οδηγία.
Μετά Πριν ενεργοποιηθεί η τρέχουσα μονάδα, θα ξεκινήσει η υπηρεσία που αναφέρεται στην παρούσα οδηγία.
BindsTo Αυτή η οδηγία συνδέει την τρέχουσα υπηρεσία με την αναφερόμενη υπηρεσία. Εάν η συνδεδεμένη υπηρεσία επανεκκινηθεί, οι τρέχουσες υπηρεσίες θα επανεκκινηθούν επίσης.

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

Ενότητα [Εγκατάσταση]

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

Διευθυντικός Περιγραφή
WantedBy Αυτή η οδηγία ορίζει το επίπεδο εκτέλεσης * στόχο της υπηρεσίας. Εάν έχει τεθεί στόχος σε πολλαπλών χρηστών.στόχος τότε η υπηρεσία θα ενεργοποιηθεί σε αυτό το επίπεδο εκτέλεσης.
Απαιτούνται από Αυτή η οδηγία μοιάζει με το WantedBy, ωστόσο, ακόμη και χωρίς την εξάρτηση που αναφέρεται στην οδηγία, η υπηρεσία θα είναι ενεργοποιημένη.
Ψευδώνυμο Αυτή η οδηγία χρησιμοποιείται για την ενεργοποίηση της υπηρεσίας με άλλο όνομα. Ένας συμβολικός σύνδεσμος δημιουργείται με αυτό το όνομα όταν η υπηρεσία είναι ενεργοποιημένη.

Κυρίως, το πολλαπλών χρηστών.στόχος χρησιμοποιείται ως WantedBy παράμετρος. Τι είναι όμως το multi-user.target;

Το multi-user.target αντιπροσωπεύει την κατάσταση του συστήματος που είναι έτοιμη να δεχτεί μη γραφικές περιόδους σύνδεσης πολλών χρηστών. Είναι η κατάσταση πριν από την εκκίνηση του GUI.

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

Στο systemd, οι υπηρεσίες ομαδοποιούνται με βάση τα επίπεδα εκτέλεσης, τα οποία καλούνται στόχους . Κάθε επίπεδο εκτέλεσης έχει ένα αρχείο με .στόχος επέκταση στο /etc/systemd/system Ευρετήριο. Μια υπηρεσία θα εκτελείται με βάση την κατάσταση του επιπέδου εκτέλεσης.

Επίπεδο εκτέλεσης Στόχοι κατάσταση Αρχεία
0 απενεργοποίηση Κλείστε και απενεργοποιήστε poweroff.στόχος
1 διάσωση Ξεκινά το κέλυφος διάσωσης διάσωση.στόχος
2,3,4 πολλαπλών χρηστών Ξεκινά το κέλυφος πολλών χρηστών που δεν είναι GUI πολλαπλών χρηστών.στόχος
5 γραφικός Δημιουργεί κέλυφος GUI πολλών χρηστών γραφικός.στόχος
6 επανεκκίνηση Τερματισμός και επανεκκίνηση reboot.target

Ενότητα [Υπηρεσία]

Αυτή η ενότητα περιλαμβάνει τις ρυθμίσεις διαμόρφωσης για την υπηρεσία. Η κύρια διαμόρφωση αυτής της ενότητας είναι ο καθορισμός του τύπου και των εντολών που θα εκτελεστούν κατά την έναρξη της υπηρεσίας. Τύπος και ExecStart είναι οι κύριες οδηγίες που χρησιμοποιούνται για τη δημιουργία μιας υπηρεσίας.

Διαφορετικοί τύποι υπηρεσίας παρατίθενται στον παρακάτω πίνακα.

Τύπος υπηρεσίας Περιγραφή
απλός Είναι ο προεπιλεγμένος τύπος όταν δεν αναφέρεται ο τύπος ή το Busname και αναφέρεται μόνο το ExecStart. Το systemd εκτελεί πρώτα την κύρια διαδικασία και μετά τις μονάδες παρακολούθησης.
διχάλωση Αυτός ο τύπος χρησιμοποιείται για τη διατήρηση της λειτουργίας της υπηρεσίας ακόμη και αν η γονική υπηρεσία είναι κλειστή. Διοργανώνει μια θυγατρική διαδικασία μετά το κλείσιμο της γονικής διαδικασίας.
μια βολή Το systemd εκτελεί πρώτα την κύρια διεργασία και όταν φύγει η κύρια διεργασία θα ξεκινήσουν οι μονάδες παρακολούθησης.
dbus Η υπηρεσία με dbus χρησιμοποιείται για την επικοινωνία με μια άλλη διεργασία στο δίαυλο. Εάν αναφέρεται το όνομα του διαύλου, τότε η διαδικασία θα ενεργοποιηθεί μετά την απόκτηση του ονόματος του διαύλου.
κοινοποιώ Η υπηρεσία θα ειδοποιήσει κατά την έναρξη της διαδικασίας. Το systemd θα προχωρήσει στις μονάδες παρακολούθησης μετά την έκδοση της ειδοποίησης.
αδρανής Διατηρεί την υπηρεσία μέχρι να αποσταλούν όλες οι ενεργές εργασίες. είναι κυρίως χρήσιμο για τη βελτίωση της εξόδου της κονσόλας.

Οι οδηγίες που χρησιμοποιούνται συνήθως στην ενότητα Service αναφέρονται παρακάτω:

Διευθυντικός Περιγραφή
ExecStart Διατηρεί την πλήρη διαδρομή της εντολής που πρέπει να εκτελεστεί για να ξεκινήσει η διαδικασία.
ExecStartPre Διατηρεί τις εντολές που πρέπει να εκτελεστούν πριν ξεκινήσει η κύρια διαδικασία.
ExecStartPost Διατηρεί τις εντολές που πρέπει να εκτελεστούν μετά την έναρξη της κύριας διαδικασίας.
ExecReload Διατηρεί την εντολή για επαναφόρτωση της διαμόρφωσης της υπηρεσίας.
Επανεκκίνηση Για αυτόματη επανεκκίνηση της υπηρεσίας σε περιπτώσεις όπως η αποτυχία, η επιτυχία, η μη κανονική λειτουργία, η ματαίωση και η λειτουργία παρακολούθησης.
RestartSec Για να διατηρήσετε τον αριθμό των δευτερολέπτων μετά από τα οποία η υπηρεσία θα επανεκκινήσει αυτόματα.

ο ExecStart είναι μία από τις κρίσιμες οδηγίες που χρησιμοποιούνται στην ενότητα Service. Περιέχει το πλήρη διαδρομή του εκτελέσιμου ότι η υπηρεσία θα εκτελεστεί κατά την επίκληση.

συμπέρασμα

Ένα αρχείο υπηρεσίας systemd είναι ένα αρχείο διαμόρφωσης που είναι δομημένο με οδηγίες και εντολές ώστε να μπορεί να διαχειρίζεται το systemd. Αυτά τα αρχεία περιέχουν οδηγίες που υποδεικνύουν τον τρόπο διαχείρισης μιας υπηρεσίας από το systemd. Σε αυτόν τον οδηγό, κάλυψα τον τρόπο πρόσβασης σε ένα αρχείο υπηρεσίας systemd, τις ενότητες του και τις οδηγίες που διαχειρίζονται τις υπηρεσίες. Για να μάθετε περισσότερα σχετικά με τις οδηγίες για το αρχείο σέρβις, διαβάστε τον επίσημο οδηγό τεκμηρίωσης που βρέθηκε εδώ .