Starten Sie einen Dienst mit dem Befehl systemctl restart neu

Starten Sie Einen Dienst Mit Dem Befehl Systemctl Restart Neu



Der systemd ist ein Systemdienstmanager, der unter Linux weit verbreitet ist. Managen systemd Dienstleistungen, die systemctl Es wird ein Befehlszeilenprogramm verwendet. Dieses Tool wird auch verwendet, um jeden Systemd-Dienst neu zu starten.

Dienste unter Linux werden über ihre Konfigurationsdatei verwaltet. Wenn Änderungen an der Konfigurationsdatei eines Dienstes vorgenommen werden, muss ein Neustart des Dienstes eingeleitet werden, um die Änderungen zu übernehmen. Beim Neustart des Dienstes wertet der Systemd die Konfigurationsdatei erneut aus und übernimmt die Änderungen.

In diesem Handbuch werde ich erläutern, wie Sie mit systemctl einen Dienst unter Linux neu starten.







Notiz: Dieses Handbuch enthält Befehle und Anweisungen, die unter Ubuntu 22.04 ausgeführt werden. Der Befehl funktioniert ohne Probleme auf Distributionen, die mit dem systemd-Dienstmanager geliefert werden.



Der Befehl systemctl restart

Der Neustart Der Befehl stoppt im Wesentlichen einen Dienst und startet ihn erneut. Wenn der Dienst oder die Einheit nicht betriebsbereit ist, leitet der Neustartbefehl den Betrieb ein.



Der Neustartbefehl entfernt nicht die Prozesse, die mit dem Dienst verknüpft sind. Nehmen Sie das Beispiel von Dateideskriptoren, bei denen es sich um nicht negative Kennungen handelt, die das Betriebssystem den von einem Dienst geöffneten Dateien zuweist. Wenn Sie einen Dienst neu starten, bleibt der mit diesem Dienst verknüpfte Dateideskriptor während des Neustartvorgangs dort.





Wenn Sie alle mit dem Dienst verknüpften Prozesse löschen möchten, müssen Sie dies explizit tun stoppen der Service und Start es wieder.

So starten Sie einen Dienst neu

Unter Linux können Sie einen Dienst mithilfe von neu starten sudo systemctl Befehlszeilentool mit dem Neustart Option und Angabe ihres Namens. Die allgemeine Syntax ist unten angegeben:



Sudo systemctl neu starten [ Dienstname ]

Du wirst brauchen Sudo Berechtigungen zum Neustarten eines Dienstes.

Starten wir zum Beispiel das neu ssh Service.

Sudo systemctl startet ssh.service neu

Um mehrere Dienste neu zu starten, hängen Sie jeden Dienstnamen nach dem an Neustart Befehl mit einem Leerzeichen.

Sudo systemctl startet ssh.service smbd.service neu

Weitere Neustartbefehle finden Sie in der folgenden Tabelle:

Versuchen Sie es neu Es stoppt oder startet den oder die angegebenen Dienste. Wenn der Dienst nicht ausgeführt wird, wird er nicht gestartet
Neu laden oder neu starten Laden Sie den oder die unterstützten Dienste neu. Wenn der Dienst nicht unterstützt wird, starten Sie ihn neu und aktivieren Sie ihn
Versuchen Sie es neu zu laden oder versuchen Sie es neu Laden Sie den oder die unterstützten Dienste neu. Wenn der Dienst nicht unterstützt wird, starten Sie ihn neu, ohne ihn zu aktivieren

In den obigen Befehlen ist die .Service Die Erweiterung ist optional.

So starten Sie einen Dienst automatisch neu

Wenn unter Linux ein Dienst ausfällt, dann systemd habe es standardmäßig neu gestartet. Dennoch kann es in vielen Fällen erforderlich sein, die Art und Weise zu ändern, in der ein Dienst neu gestartet wird. Beispielsweise kann es sein, dass während des Debugging-Prozesses des maßgeschneiderten Dienstes manuelle Maßnahmen erforderlich sind.

Die Systemd-Unit-Dateien oder Service-Dateien befinden sich auf /etc/systemd/system oder /lib/systemd/system hängt hauptsächlich davon ab, wie der Dienst erstellt wird. Um die Unit-Dateien unter Linux aufzulisten, verwenden Sie den folgenden Befehl:

ls / lib / systemd / System

Sie können die Konfigurationsdateien verschiedener Dienste sehen. Öffnen wir das ssh.service Datei mit der Nano Editor.

Sudo Nano / lib / systemd / System / ssh.service

Hier können Sie die ändern Neu starten Einstellung. Standardmäßig ist es auf eingestellt bei Ausfall . Weitere Optionen zum Neustarten eines Dienstes sind unten aufgeführt:

  • NEIN
  • stets
  • auf Erfolg
  • bei Ausfall
  • an-anormal
  • Ein-Abbruch
  • auf Wachhund

Eine weitere Option in der Unit-Service-Datei ist RestartSec Hiermit wird die Anzahl der Sekunden angegeben, nach denen der Dienst neu gestartet wird.

[ Service ]

Neu starten =immer

RestartSec = 5

Diese Anweisungen bedeuten, dass der Dienst beim Booten neu gestartet wird und bei einer Unterbrechung nach 5 Sekunden neu gestartet wird.

Führen Sie nach dem Ändern der Einstellung den folgenden Befehl aus, um die Änderungen zu übernehmen.

Sudo systemctl reload-daemon

Weitere wichtige Einstellungen, die berücksichtigt werden müssen, sind: StartLimitIntervalSec Und StartLimitBurst . Diese Optionen sind nützlich, um die maximale Zeit und die maximalen Wiederholungsversuche für den Neustart eines Dienstes festzulegen.

[ Einheit ]

StartLimitIntervalSec = 300

StartLimitBurst = 4

Die obige Anweisung gibt an, dass der Systemd den Versuch, einen Dienst neu zu starten, automatisch beendet, wenn er nach 300 Sekunden und 4 Wiederholungsversuchen nicht startet.

Um zu überprüfen, ob der Dienst nach 5 Sekunden neu startet oder nicht, beenden Sie den Dienst mithilfe der PID des Dienstes und des töten Befehl.

Sudo töten -9 [ PID ]

Nach 5 Sekunden wird der Dienst neu gestartet; Benutze die Journalctl Befehl zum Überprüfen des Status des ssh.service .

Journalctl -In ssh.service

So starten Sie einen Dienst neu, wenn ein abhängiger Dienst neu gestartet wird

Unter Linux sind viele Dienste voneinander abhängig und müssen daher neu gestartet werden, wenn ein abhängiger Dienst neu gestartet wird.

In der Unit-Dienstdatei gibt es drei verschiedene Optionen zum Neustarten eines Dienstes, wobei ein abhängiger Dienst neu gestartet wird.

  • Teil von
  • Bindet an
  • Erfordert

Alle diese Optionen erfüllen die gleiche Aufgabe.

Nehmen wir ein Beispiel für ssh.service, das von apparmor.service abhängt. ein Linux-Sicherheitsmodul, um den erforderlichen Zugriff bereitzustellen. Um die Abhängigkeiten eines Dienstes unter Linux aufzulisten, verwenden Sie systemctl mit Listenabhängigkeiten Befehls- und Dienstname.

systemctl list-dependencies ssh.service

Wenn Sie also den ssh.service neu starten möchten, wenn Sie den apparmor.service neu starten, müssen Sie die Option PartOf, BindsTo oder Requires zusammen mit dem Dienstnamen in den Abschnitt [Unit] der Datei apparmor.service aufnehmen.

Öffnen Sie die Datei apparmor.service.

Sudo Nano / lib / systemd / System / apparmor.service

Fügen Sie die folgende Zeile im Abschnitt [Einheit] hinzu.

Teil von =ssh.service

Speichern Sie die Datei und führen Sie den Befehl daemon-reload aus.

Sudo systemctl daemon-reload

Starten Sie nun das neu ssh.service und dann überprüfen Sie die apparmor.service Protokoll.

Sie werden es bemerken apparmor.service gleichzeitig neu gestartet ssh.service neu gestartet.

Abschluss

Um einen oder mehrere Dienste unter Linux neu zu starten, müssen Sie Folgendes tun: systemctl Der Befehl wird mit dem verwendet Neustart Möglichkeit. Der systemctl ist ein Befehlszeilendienstprogramm zur Verwaltung von Systemd-Diensten. Der Neustart Diese Option startet einen Dienst und stoppt ihn dann, wodurch ein inaktiver Dienst aktiviert wird. Sie können einen Dienst jedoch neu starten, ohne ihn zu aktivieren, indem Sie die verwenden Versuchen Sie es neu Möglichkeit.