Επανεκκινήστε μια Υπηρεσία χρησιμοποιώντας την εντολή επανεκκίνησης systemctl

Epanekkineste Mia Yperesia Chresimopoiontas Ten Entole Epanekkineses Systemctl



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

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

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







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



Η εντολή systemctl επανεκκίνηση

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



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





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

Πώς να επανεκκινήσετε μια υπηρεσία

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



sudo systemctl επανεκκίνηση [ Όνομα Υπηρεσίας ]

Θα χρειαστείτε sudo προνόμια επανεκκίνησης μιας υπηρεσίας.

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

sudo systemctl επανεκκίνηση του ssh.service

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

sudo systemctl επανεκκίνηση ssh.service smbd.service

Άλλες εντολές επανεκκίνησης δίνονται στον παρακάτω πίνακα:

δοκιμάστε-επανεκκίνηση Διακόπτει ή ξεκινά την καθορισμένη υπηρεσία ή υπηρεσίες και εάν η υπηρεσία δεν εκτελείται, δεν την εκκινεί
επαναφόρτωση ή επανεκκίνηση Φορτώστε ξανά την υποστηριζόμενη υπηρεσία ή υπηρεσίες και εάν η υπηρεσία δεν υποστηρίζεται, κάντε επανεκκίνηση και ενεργοποιήστε την
δοκιμάστε-reload-or-try-restart Επαναλάβετε τη φόρτωση της υποστηριζόμενης υπηρεσίας ή υπηρεσιών και εάν η υπηρεσία δεν υποστηρίζεται, κάντε επανεκκίνηση χωρίς να την ενεργοποιήσετε

Στις παραπάνω εντολές, το .υπηρεσία η επέκταση είναι προαιρετική.

Πώς να κάνετε αυτόματη επανεκκίνηση μιας υπηρεσίας

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

Τα αρχεία της μονάδας systemd ή τα αρχεία υπηρεσίας βρίσκονται στο /etc/systemd/system ή /lib/systemd/system κυρίως ανάλογα με το πώς δημιουργείται η υπηρεσία. Για να παραθέσετε τα αρχεία μονάδας στο Linux, χρησιμοποιήστε την ακόλουθη εντολή:

ls / lib / systemd / Σύστημα

Μπορείτε να δείτε τα αρχεία διαμόρφωσης διαφορετικών υπηρεσιών. Ας ανοίξουμε το ssh.service αρχείο χρησιμοποιώντας το νανο συντάκτης.

sudo νανο / lib / systemd / Σύστημα / ssh.service

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

  • Οχι
  • πάντα
  • επί επιτυχίας
  • σε αποτυχία
  • επί-μη φυσιολογική
  • κατά την αποβολή
  • επί φύλακα

Μια άλλη επιλογή στο αρχείο σέρβις μονάδας είναι RestartSec που χρησιμοποιείται για τον καθορισμό του αριθμού των δευτερολέπτων μετά από τα οποία η υπηρεσία θα επανεκκινηθεί.

[ Υπηρεσία ]

Επανεκκίνηση =πάντα

RestartSec = 5

Αυτές οι οδηγίες σημαίνουν ότι η υπηρεσία θα επανεκκινηθεί κατά την εκκίνηση και, εάν διακοπεί, θα επανεκκινηθεί μετά από 5 δευτερόλεπτα.

Αφού τροποποιήσετε τη ρύθμιση, εκτελέστε την ακόλουθη εντολή για να εφαρμόσετε τις αλλαγές.

sudo systemctl reload-daemon

Άλλες σημαντικές ρυθμίσεις που πρέπει να ληφθούν υπόψη είναι StartLimitIntervalSec και StartLimitBurst . Αυτές οι επιλογές είναι χρήσιμες για να ορίσετε τον μέγιστο χρόνο και τις μέγιστες επαναλήψεις για επανεκκίνηση μιας υπηρεσίας.

[ Μονάδα ]

StartLimitIntervalSec = 300

StartLimitBurst = 4

Η παραπάνω οδηγία υποδεικνύει ότι το systemd θα σταματήσει αυτόματα την προσπάθεια επανεκκίνησης μιας υπηρεσίας εάν δεν ξεκινήσει μετά από 300 δευτερόλεπτα και 4 επαναλήψεις.

Για να επαληθεύσετε εάν η υπηρεσία επανεκκινείται μετά από 5 δευτερόλεπτα ή όχι, σκοτώστε την υπηρεσία χρησιμοποιώντας το PID της υπηρεσίας και το σκοτώνω εντολή.

sudo σκοτώνω -9 [ PID ]

Μετά από 5 δευτερόλεπτα, η υπηρεσία θα επανεκκινηθεί. Χρησιμοποιήστε το journalctl εντολή για να ελέγξετε την κατάσταση του ssh.service .

journalctl -σε ssh.service

Τρόπος επανεκκίνησης μιας υπηρεσίας κατά την επανεκκίνηση της εξαρτημένης υπηρεσίας

Στο Linux, πολλές υπηρεσίες είναι αλληλεξαρτώμενες και, ομοίως, απαιτείται επανεκκίνηση κατά την επανεκκίνηση μιας εξαρτημένης υπηρεσίας.

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

  • Μέρος του
  • BindsTo
  • Απαιτεί

Όλες αυτές οι επιλογές εκτελούν την ίδια εργασία.

Ας πάρουμε ένα παράδειγμα του ssh.service που εξαρτάται από το apparmor.service. μια μονάδα ασφαλείας Linux για την παροχή της απαραίτητης πρόσβασης. Για να απαριθμήσετε τις εξαρτήσεις μιας υπηρεσίας σε χρήση Linux systemctl με λίστα-εξαρτήσεις όνομα εντολής και υπηρεσίας.

systemctl list-dependencies ssh.service

Επομένως, εάν θέλετε να κάνετε επανεκκίνηση του ssh.service κατά την επανεκκίνηση του apparmor.service, τότε πρέπει να συμπεριλάβετε την επιλογή PartOf, BindsTo ή Requires μαζί με το όνομα της υπηρεσίας στην ενότητα [Unit] του αρχείου apparmor.service.

Ανοίξτε το αρχείο apparmor.service.

sudo νανο / lib / systemd / Σύστημα / apparmor.service

Προσθέστε την ακόλουθη γραμμή στην ενότητα [Μονάδα].

Μέρος του =ssh.service

Αποθηκεύστε το αρχείο και εκτελέστε την εντολή daemon-reload.

sudo systemctl daemon-reload

Τώρα, επανεκκινήστε το ssh.service και μετά ελέγξτε το apparmor.service κούτσουρο.

Θα παρατηρήσετε το apparmor.service επανεκκινήθηκε ταυτόχρονα το ssh.service επανεκκίνηση.

συμπέρασμα

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