Wie man Dienste in Linux startet, stoppt und neu startet

Wie man Dienste in Linux stoppt und startet

Als Systemadministrator haben Sie eine ganze Menge zu tun. Und diese Liste wird jeden Tag länger und komplizierter. Zu allem Überfluss ändern sich die Dinge auch noch. Ich erinnere mich, dass ich früher, um einen Linux-Dienst zu starten oder zu stoppen, ein Terminalfenster öffnen musste, in die /etc/rc.d/ (oder /etc/init.d, je nachdem, welche Distribution ich benutzte) wechseln musste, den Dienst suchen und den Befehl /etc/rc.d/SERVICE start|stop|restart eingeben musste (wobei SERVICE der Name des Dienstes ist, der gestartet, gestoppt oder neu gestartet werden sollte). Bei der Arbeit zwischen Redhat- und Debian-Distributionen war das oft verwirrend; ich versuchte, /etc/rc.d/service start bei einer Distribution einzugeben, nur um herauszufinden, dass es /etc/init.d/service start hätte sein müssen.

Das hat sich geändert. Wie ein Dienst gestoppt, gestartet und neu gestartet wird, macht jetzt absolut Sinn. Noch besser, es ist (größtenteils) universell geworden.

Sozusagen.

Wie Sie einen Dienst starten|stoppen|neustarten, hängt davon ab, ob Ihre Distribution systemd oder init verwendet. Selbst dann können Sie diese Dienste möglicherweise über mehrere Wege steuern. Lassen Sie mich das erklären.

systemctl vs. service

Das ist der Knackpunkt des Problems. Es gibt zwei offiziell anerkannte Methoden zur Steuerung von Diensten:

  • systemctl
  • service

Welche Sie verwenden, hängt davon ab, ob Ihre Distribution systemd oder init verwendet. Die meisten modernen Distributionen haben den Wechsel zu systemd vollzogen, so dass systemctl der Dienstmanager der Wahl ist. Alte Gewohnheiten lassen sich jedoch nur schwer ablegen, so dass viele Administratoren immer noch an dem veralteten Dienstbefehl festhalten. Glücklicherweise haben die Entwickler von systemd darauf geachtet, service beizubehalten und es auf systemctl umzuleiten. Um die Sache noch komplizierter zu machen, könnten Sie einen zufälligen Dienst finden, den Sie installiert haben, der weder mit den service- noch mit den systemctl-Tools aktualisiert wurde, und müssen ihn manuell mit /etc/rc.d (oder /etc/init.d) starten.

Es kann also immer noch ein bisschen verwirrend sein.

Aber wir sind hier auf der Suche nach Best Practices; und für das Starten|Stoppen|Neustarten von Anwendungen unter Linux beginnen und enden die Best Practices mit systemctl.

Systemctl-Nutzung

Die Komplikation endet hier. In der Tat ist das Stoppen|Starten|Neustarten von Diensten unter Linux nun recht einfach. Nehmen wir an, wir sind auf CentOS und wollen den Apache-Server stoppen. Dazu öffnen wir ein Terminal-Fenster und geben den Befehl:

 sudo systemctl stop httpd 

Der Apache-Server wird gestoppt und Sie gelangen zurück zum Bash-Prompt. Um denselben Dienst zu starten, geben wir den Befehl:

 sudo systemctl start httpd 

Der Dienst wird gestartet und Sie kehren zum Bash-Prompt zurück.

Um denselben Dienst neu zu starten, geben wir den Befehl:

 sudo systemctl restart httpd 

Der Dienst wird neu gestartet und Sie kehren zum Bash-Prompt zurück.

Die obigen Befehle können unter CentOS, Ubuntu, Redhat, Fedora, Debian und vielen anderen ausgeführt werden.

Service-Nutzung

Um die Sache interessant zu machen, funktioniert der Service-Befehl immer noch – sogar bei den Distributionen, die auf systemd und systemctl umgestiegen sind. Das bedeutet, dass diejenigen, die instinktiv service eintippen, wenn sie einen Dienst unter Linux neu starten müssen, nicht die Fehlermeldung „Unbekannter Befehl“ erhalten. Im Fall von service wird der Befehl auf systemctl umgeleitet. Wenn Sie den Befehl service auf einer systemctl-fähigen Distribution ausführen, sehen Sie deutlich die Umleitungsinformationen (Abbildung A).

Abbildung A

Abbildung A

Der Befehl service wird zu systemctl umgeleitet.

Die Verwendung des Service-Befehls unterscheidet sich ein wenig von systemctl. Der Name des Dienstes und die Optionen für Start|Stop|Restart sind vertauscht:

 sudo service httpd startsudo service httpd stopsudo service httpd restart 

In jedem Fall werden Sie sehen, dass service auf systemctl umgeleitet wird, aber der Dienst, den Sie versuchen zu starten|stoppen|neustarten, wird erfolgreich sein.

So kompliziert ist es nicht

Ich habe das Thema verkompliziert, indem ich die alten Methoden zum Starten, Stoppen und Neustarten von Diensten in Linux erwähnt habe. Um ehrlich zu sein, ist die Steuerung von Diensten in Linux gar nicht so kompliziert; man muss nur den richtigen Befehl kennen.

Um mehr darüber zu erfahren, was systemctl alles kann, sollten Sie den Befehl man systemctl aufrufen und die Manpage durchlesen.

Sonstiges

  • Wie Sie Ihre Linux-Server mit nmon überwachen (TechRepublic)
  • Wie Sie Stacer für eine schnelle Linux-Systemoptimierung installieren (TechRepublic)
  • Wie Sie wget verwenden, um Dateien auf Ihren GUI-losen Linux-Server herunterzuladen (TechRepublic)
  • Wie Sie verhindern, dass Ubuntu /etc/resolv.conf (TechRepublic)
  • Neuer und verbesserter Samba-Dateiserver veröffentlicht (ZDNET)
sysctlhero.jpg
Bild: Jack Wallen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.