GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit systemctl

Die Verwaltung von Diensten ist eine Schlüsselverantwortung für Systemadministratoren. Es besteht kein Zweifel, dass der Übergang zwischen dem älteren SysV-Verfahren (unter Verwendung des service und chkconfig Befehle) und das neuere systemd -basierte Befehle (wie systemctl ) war umstritten. Tatsächlich haben viele Systemadministratoren immer noch sehr starke Gefühle auf die eine oder andere Weise.

Die Realität ist, dass viele Distributionen, einschließlich Red Hat Enterprise Linux (RHEL), damit begonnen haben, Dienste mit systemd zu verwalten . Daher müssen Sie und ich wissen, wie man mit systemctl arbeitet Verwaltungsbefehl.

Ich bin kein Autor/Trainer/Administrator, der davon ausgeht, dass jeder fortgeschritten ist. Vor diesem Hintergrund werde ich diesen Artikel an die Leute richten, die eine grundlegende und einfache Erklärung benötigen, wie und wann das häufigere systemctl verwendet wird Unterbefehle. Am Ende liefere ich noch einen tollen Trick, um schnell alle systemctl anzuzeigen Unterbefehle.

Hinweis:Die Systemctl-Manpage bezeichnet das zweite Wort in der Zeichenfolge als „Befehl“, was etwas verwirrend erscheint. Ich werde auf systemctl verweisen selbst als Befehl , dann die darauf folgende Zeichenfolge als Unterbefehl . Das Argument ist der Name des Dienstes und nimmt die dritte Position in der Syntax ein.

Hier ist ein Syntaxbeispiel:

systemctl subcommand argument
# systemctl status sshd

Ich werde demonstrieren, wie und wann systemctl verwendet wird . Die meisten meiner Beispiele verwenden den gemeinsamen sshd Dienst.

[ Den Lesern gefiel auch: Wie ich lernte, mir keine Sorgen mehr zu machen und systemd zu lieben]

Dienststatus

Der beste Ausgangspunkt ist, die aktuelle Funktionalität des Dienstes zu verstehen. Ich beginne mit dem einfachsten Ansatz, der Verwendung des status Unterbefehl:

# systemctl status sshd

Die Idee ist natürlich, dass Sie sich gerade an einen unbekannten Linux-Server gesetzt haben und den aktuellen Status von sshd kennen müssen Service. Beachten Sie, dass viele andere Informationen bereitgestellt werden, einschließlich einer Zusammenfassung des Dienstes, woher er geladen wurde, Status, Prozess-ID (PID) und kürzliche Änderungen.

Der systemctl status Der Befehl ist auch bei der Fehlerbehebung hilfreich. Wenn ich eine Konfiguration behebe, überprüfe ich fast sofort ihren Status, indem ich systemctl verwende . Warum sich mit Firewalls, SELinux und Konfigurationsdateien herumschlagen, wenn der Dienst nicht einmal läuft?

Jetzt wissen Sie also, wie Sie den Status von Diensten wie SSH überprüfen. Wie manipuliert man diesen Status?

Dienste starten und stoppen

Wenn Sie eine Konfigurationsdatei für einen laufenden Dienst ändern, müssen Sie entweder neu starten oder neu laden der Service. Dadurch liest der Dienst die Datei erneut und implementiert daher die Änderungen. Früher haben Sie den service verwendet Befehl, wie in den folgenden Beispielen:

# service sshd restart

Dienste unter systemd werden über das systemctl verwaltet Befehl. So starten Sie den SSH-Dienst mit systemctl neu , geben Sie ein:

# systemctl restart sshd

Ich persönlich finde diese Syntax etwas einfacher. Es liest sich fast wie ein Satz:"Systemctl, please restart sshd."

Die Syntax ist ähnlich, wenn Sie einen Dienst entweder stoppen oder starten möchten:

# systemctl stop sshd

# systemctl start sshd

Dienste, die sich weigern, ordnungsgemäß zu stoppen, können mit systemctl beendet werden , zu. Zum Beispiel, um sshd zu beenden Geben Sie Folgendes ein:

# systemctl kill sshd

Nachladedienste sind etwas anders. Das reload Unterbefehl bewirkt nur, dass der Dienst die Konfigurationsdatei erneut liest, während der restart Unterbefehl beendet alle aktuellen Verbindungen und liest die Konfigurationsdatei neu ein.

Wenn Sie beispielsweise systemctl restart sshd eingeben , werden alle aktuellen SSH-Verbindungen getrennt. Wenn Sie es jedoch neu laden, bleiben bestehende Verbindungen erhalten. In beiden Fällen wird die Konfigurationsdatei neu eingelesen und eventuelle Änderungen implementiert.

Das Neuladen verursacht weniger Ausfallzeiten, wird aber nicht von allen Diensten unterstützt.

Der start , stop , restart, und reload Unterbefehle wirken sich nur auf die aktuelle Laufzeit aus.

Dienste aktivieren und deaktivieren

Viele Linux-Neulinge sind verwirrt über den Unterschied zwischen start /stop und enable /disable . Ich habe bereits start besprochen , stop , und restart im vorherigen Abschnitt. Start und stop werden verwendet, um den aktuellen Status des Dienstes zu ändern. Wenn der Server jedoch neu gestartet wird, wird der Status des Dienstes auf die standardmäßige Starteinstellung zurückgesetzt. Mit anderen Worten, wenn ich sshd stoppe service ausführen und dann meinen Server neu starten, wird der Boot-Vorgang die Konfigurationsdatei untersuchen und sshd entweder starten oder nicht starten , je nachdem, was angegeben ist. Wenn ich den Dienst stoppe und dann neu starte und die Konfigurationsdatei sagt, dass der Dienst beim Booten gestartet werden soll, wird er wieder ausgeführt.

Bisher haben Sie die chkconfig verwendet Befehl, um die Starteinstellung des Dienstes für jeden Runlevel zu definieren. Hier ist ein Beispiel:

# chkconfig --level 35 sshd on

Dieser Befehl aktiviert sshd in Runlevel 3 und 5 zu starten.

Mit systemctl , das Konfigurieren der Standardstarteinstellung ist die Arbeit von enable und disable Unterbefehle. Die Syntax ist dieselbe wie beim start , stop , und restart Unterbefehle. Um beispielsweise festzulegen, dass SSH beim Booten des Servers gestartet wird, geben Sie Folgendes ein:

# systemctl enable sshd

Ebenso, um SSH nicht zu konfigurieren um während des Systemstarts zu starten, geben Sie ein:

# systemctl disable sshd

Das Konfigurieren der standardmäßigen Startkonfiguration für Dienste ist einfach, ebenso wie das Starten und Stoppen von Diensten. Es scheint jedoch einige Verwirrung darüber zu geben, die beiden zusammen zu verwenden.

Benutze start und enable zusammen

Einige finden es seltsam, dass das Aktivieren eines Dienstes ihn nicht startet. Wenn Sie beispielsweise gerade ein neues Programm heruntergeladen haben und es starten möchten, um seine Funktionalität zu testen, und Sie es so konfigurieren möchten, dass es beim Booten des Servers gestartet wird, müssen Sie zwei Befehle eingeben:

# systemctl start sshd

# systemctl enable sshd

Das Deaktivieren eines Dienstes erfolgt auf die gleiche Weise. Geben Sie systemctl disable sshd ein um zu verhindern, dass SSH beim Booten des Servers gestartet wird. Wenn SSH jedoch in der aktuellen Laufzeit ausgeführt wird, bleibt es aktiv, auch wenn es deaktiviert ist. Sie müssen stop SSH, um es in der aktuellen Laufzeit auszuschalten.

Um beispielsweise SSH sowohl zu stoppen als auch zu verhindern, dass es beim Systemstart gestartet wird, geben Sie Folgendes ein:

# systemctl stop sshd

# systemctl disable sshd

Denken Sie daran, den status des Dienstes zu überprüfen Wenn Sie sich nicht sicher sind, geben Sie Folgendes ein:

# systemctl status sshd

Sie können überprüfen, ob ein Dienst so konfiguriert ist, dass er automatisch startet, indem Sie ein anderes systemctl verwenden Unterbefehl:is-enabled . Um beispielsweise anzuzeigen, ob SSH aktiviert ist, geben Sie Folgendes ein:

# systemctl is-enabled sshd

Viele Unterbefehle - der Trick

Ich habe einige systemctl behandelt Unterbefehle, einschließlich start , stop , restart , enable , disable , status , und andere. Das ist viel zu merken! Hier kommt Ihr alter Freund Tab-Vervollständigung ins Spiel. Probieren Sie die folgende Technik auf Ihrem System aus:Geben Sie systemctl ein und fügen Sie dann ein einzelnes Leerzeichen hinzu. Drücken Sie die Tabulatortaste zweimal drücken, und bash zeigt alle verfügbaren systemctl an Unterbefehle! Dieser Tab-Vervollständigungs-Trick ist einer, den meiner Meinung nach nur wenige Systemadministratoren genug nutzen.

[ Möchten Sie Ihre Fähigkeiten als Systemadministrator testen? Machen Sie noch heute einen Kompetenztest. ] 

Abschluss

Wie Sie sehen können, verwalten Sie Dienste über systemctl Befehl ist wirklich nicht so schwierig. Ich finde es einfacher und logischer als den älteren service und chkconfig Befehle, persönlich. Es ist auch praktisch, nur einen Befehl zu haben, um die Dienste zu verwalten, anstatt zwei.

Hier sind die wichtigsten Punkte, die Sie sich merken sollten:

  • Verwenden Sie start/stop/restart, um die aktuelle Laufzeit zu verwalten.
  • Verwenden Sie start/stop/restart/reload nach dem Bearbeiten von Konfigurationsdateien.
  • Verwenden Sie aktivieren/deaktivieren, um die standardmäßige Startaktion zu verwalten.
  • Verwenden Sie den Status sehr früh im Fehlerbehebungsprozess.

Schließlich müssen Sie sich nicht alle verfügbaren systemctl merken Unterbefehle. Geben Sie einfach den systemctl ein Befehl und folgen Sie ihm mit einem Leerzeichen, und drücken Sie dann Tab zweimal. Die in Bash integrierte Funktion zum Vervollständigen von Tabs erledigt den Rest!

Sysadmins manipulieren regelmäßig Dienste, und hoffentlich sind Sie ein wenig vertrauter mit der Verwendung des häufigeren systemctl Unterbefehle.


Linux
  1. Verwalten Sie mehrere Dienstinstanzen mit systemctl

  2. Erste Schritte mit Zsh

  3. Erste Schritte mit ls

  4. Erste Schritte mit PostgreSQL unter Linux

  5. Erste Schritte mit SSH unter Linux

Erste Schritte mit dem Linux-Betriebssystem

Erste Schritte mit GitHub

Erste Schritte mit Nix Package Manager

Erste Schritte mit cPanel

Erste Schritte mit SiteApps

Centos 7:Erste Schritte