Πώς να δημιουργήσετε ένα αρχείο υπηρεσίας στο Linux

Pos Na Demiourgesete Ena Archeio Yperesias Sto Linux



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

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







Τι είναι ένα αρχείο υπηρεσίας

Πριν προχωρήσουμε περαιτέρω, ας καταλάβουμε τι είναι ένα αρχείο υπηρεσίας systemd και πώς δημιουργείται στο Linux.



Ένα αρχείο υπηρεσίας systemd περιέχει οδηγίες που έχουν οριστεί για το systemd για τη διαχείριση της υπηρεσίας. Συνήθως περιλαμβάνει τρεις ενότητες:



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

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





ο Υπηρεσία Το τμήμα συνήθως τοποθετείται μεταξύ του τμήματος Unit και Install. Περιλαμβάνει κυρίως τον τύπο της υπηρεσίας και τη διαδρομή των εκτελέσιμων που ουσιαστικά είναι εντολές που πρέπει να εκτελεστούν κατά την κλήση της υπηρεσίας από το systemd.

Εδώ είναι πώς μοιάζει μια τυπική δομή αρχείου υπηρεσίας.



[ Μονάδα ]

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

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



[ Υπηρεσία ]

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

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



[ Εγκαθιστώ ]

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

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

Εδώ, οι οδηγίες είναι παράμετροι που λαμβάνουν την αντίστοιχη εισαγωγή τους. Για παράδειγμα, το Περιγραφή οδηγία παίρνει μια συμβολοσειρά του ονόματος της υπηρεσίας. Με παρόμοιο τρόπο, ExecStart λαμβάνει υπόψη την πλήρη διαδρομή του εκτελέσιμου.

Ένα τυπικό αρχείο υπηρεσίας του ssh.service δίνεται παρακάτω.

Πώς να δημιουργήσετε ένα αρχείο υπηρεσίας

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

Η δημιουργία ενός αρχείου υπηρεσίας περιλαμβάνει πολλά βήματα, ας ξεκινήσουμε με τη δημιουργία του αρχείου σεναρίου.

Σημείωση: Για να συνεχίσετε με τη μέθοδο που αναφέρεται παρακάτω, πρέπει να έχετε δικαιώματα root.

1. Δημιουργία σεναρίου

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

Ας δημιουργήσουμε ένα σενάριο στον τρέχοντα κατάλογο με το όνομα του myscript.sh χρησιμοποιώντας nano editor.

sudo νανο myscript.sh

Τώρα, προσθέστε το σενάριο που δίνεται παρακάτω στο αρχείο και αποθηκεύστε το πατώντας ctrl+x και μετά και .

#!/bin/bash

ηχώ '>>Εδώ είναι ο χρόνος λειτουργίας του συστήματός σας<<' > Σπίτι / ο ίδιος / myfile.txt

χρόνο λειτουργίας >> Σπίτι / ο ίδιος / myfile.txt

ηχώ '>>Εδώ είναι η χρήση της μνήμης του συστήματός σας<<' >> / Σπίτι / ο ίδιος / myfile.txt

Ελεύθερος >> Σπίτι / ο ίδιος / myfile.txt

ύπνος 60

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

ο χρόνο λειτουργίας Η εντολή στο Linux χρησιμοποιείται για να εκτυπώσει πόσο καιρό λειτουργεί ένα σύστημα και πόσοι χρήστες είναι συνδεδεμένοι με μέσο φόρτο συστήματος 1, 5 και 15 λεπτών.

ο Ελεύθερος Η εντολή χρησιμοποιείται για την εκτύπωση της χρήσης μνήμης του συστήματος, ενώ το Η σημαία χρησιμοποιείται για την εκτύπωση της εξόδου MBs .

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

Τώρα, κάντε το σενάριο εκτελέσιμο παραχωρώντας τα απαραίτητα δικαιώματα.

sudo chmod +x myscript.sh

Το σενάριο έχει τώρα την άδεια εκτέλεσης, ας προχωρήσουμε στην επόμενη ενότητα.

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

2. Δημιουργία αρχείου .service

Στη συνέχεια, δημιουργήστε ένα αρχείο υπηρεσίας με το .υπηρεσία επέκταση. Το αρχείο υπηρεσίας πρέπει να δημιουργηθεί στο /etc/systemd/system Ευρετήριο. Αρχικά, πλοηγηθείτε σε αυτόν τον κατάλογο χρησιμοποιώντας το CD εντολή.

CD / και τα λοιπά / systemd / Σύστημα

Ωστόσο, μπορείτε να δημιουργήσετε το αρχείο υπηρεσίας σε οποιονδήποτε κατάλογο και αργότερα να μετακινήσετε αυτό το αρχείο σε αυτόν τον κατάλογο.

Δημιουργώ ένα αρχείο υπηρεσίας με υπηρεσία μου.υπηρεσία όνομα.

sudo νανο υπηρεσία μου.υπηρεσία

Τώρα, προσθέστε τις ακόλουθες γραμμές στο αρχείο.

[ Μονάδα ]

Περιγραφή =Η υπηρεσία μου

[ Υπηρεσία ]

Τύπος =απλό

ExecStart = / αποθήκη / βίαιο χτύπημα / Σπίτι / ο ίδιος / σενάριο.sh

Επανεκκίνηση =σε αποτυχία

[ Εγκαθιστώ ]

WantedBy =multi-user.target

Σημειώστε ότι [Μονάδα], [Υπηρεσία], και [Εγκαθιστώ] είναι διάκριση πεζών-κεφαλαίων . Το αρχείο σέρβις δεν θα λειτουργήσει εάν κάποιο από αυτά αναφέρεται λανθασμένα, όπως [UNIT] ή [SERVICE].

Το όνομα της υπηρεσίας καθορίζεται ως Η υπηρεσία μου στο Περιγραφή οδηγία του [Μονάδα] Ενότητα.

ο Τύπος της υπηρεσίας είναι απλός στο [Υπηρεσία] ενότητα, που είναι ο προεπιλεγμένος τύπος. Διακλάδωση , μια βολή , κοινοποιώ , dbus , και το ρελαντί είναι μερικοί από τους άλλους τύπους.

Εάν θέλετε να κάνετε την υπηρεσία συγκεκριμένη για τον χρήστη, τότε το Χρήστης οδηγία μπορεί επίσης να χρησιμοποιηθεί με το όνομα χρήστη του χρήστη. Η χρήση αυτής της οδηγίας θα εξαρτήσει την άδεια χρήστη της υπηρεσίας.

Ενώ το ExecStart η οδηγία περιέχει την πλήρη διαδρομή του εκτελέσιμου αρχείου. Στο παραπάνω παράδειγμα, το αρχείο σεναρίου myscript.sh αποθηκεύεται στο /home/sam/ Ευρετήριο. Αυτή η οδηγία στην πραγματικότητα διαχειρίζεται τι πρέπει να εκτελεστεί όταν μια υπηρεσία καλείται από το systemd. Εάν η πλήρης διαδρομή της εντολής δεν έχει καθοριστεί, θα επιλυθεί αυτόματα για να διορθωθούν απόλυτες διαδρομές όπως π.χ /usr/local/bin , /usr/bin/, και /αποθήκη . Είναι πολύ καλό να χρησιμοποιείτε το εκτελέσιμο όνομα εφόσον βρίσκονται στους τυπικούς καταλόγους εντολών, ωστόσο, αναφέρετε την απόλυτη διαδρομή διαφορετικά. Σημειώστε ότι μπορούν επίσης να χρησιμοποιηθούν πολλαπλές εντολές που χωρίζονται με ερωτηματικό (;).

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

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

3. Ενεργοποίηση της Υπηρεσίας

Για να ενεργοποιήσετε την υπηρεσία, πρώτα φορτώστε ξανά τις διαμορφώσεις systemd χρησιμοποιώντας systemctl χρησιμότητα.

sudo systemctl daemon-reload

Στη συνέχεια, ενεργοποιήστε ξανά την υπηρεσία χρησιμοποιώντας systemctl εντολή με επιτρέπω .

sudo systemctl επιτρέπω υπηρεσία μου.υπηρεσία

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

Η υπηρεσία εκτελείται με επιτυχία.

Τώρα, ας διαβάσουμε το αρχείο κειμένου myfile.txt η υπηρεσία που δημιουργήθηκε στο /Σπίτι Ευρετήριο.

Πώς να δημιουργήσετε ένα αρχείο υπηρεσίας Systemd για κανονικό χρήστη

Η διαδικασία δημιουργίας του αρχείου υπηρεσίας για έναν κανονικό χρήστη είναι παρόμοια με τη μέθοδο δημιουργίας ενός αρχείου υπηρεσίας από τον διαχειριστή. Ωστόσο, ο κατάλογος για την αποθήκευση του αρχείου υπηρεσίας για κανονικούς χρήστες είναι διαφορετικός. Οι κανονικοί χρήστες πρέπει να τοποθετούν τα αρχεία υπηρεσιών τους στο ~/.config/systemd/user . Αυτός ο κατάλογος πρέπει να δημιουργηθεί χρησιμοποιώντας το mkdir εντολή.

mkdir ~ / .config / systemd / χρήστης

Για να ενεργοποιήσετε την υπηρεσία από έναν κανονικό χρήστη -χρήστης η εντολή εισάγεται με systemctl αντί sudo .

systemctl --χρήστης daemon-reload

systemctl --χρήστης επιτρέπω SERVICE-NAME.service

systemctl --χρήστης κατάσταση SERVICE-NAME.service

ο -χρήστης Η επιλογή χρησιμοποιείται για τη διαχείριση των αρχείων υπηρεσίας systemd του χρήστη.

Πώς να αφαιρέσετε το αρχείο υπηρεσίας

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

sudo systemctl διακοπή SERVICE-NAME.service

Ελέγξτε την κατάσταση χρησιμοποιώντας κατάσταση systemctl εντολή για να μάθετε εάν η υπηρεσία έχει διακοπεί ή όχι. Στη συνέχεια, αφαιρέστε το αρχείο υπηρεσίας χρησιμοποιώντας το rm εντολή.

sudo rm / και τα λοιπά / systemd / Σύστημα / SERVICE-NAME.service

Τώρα, φορτώστε ξανά το systemd διαμόρφωση.

sudo systemctl daemon-reload

συμπέρασμα

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