Was ist der Unterschied zwischen service und systemctl?


33

Vielleicht ist das eine triviale Frage, aber mir ist das nicht ganz klar. Auf einem unserer Server laufen einige Hintergrundprozesse, mit denen begonnen wurde, serviceund einige andere, mit denen begonnen systemctlwurde:

$ service nginx start
$ systemctl start gunicorn

Was ist der Unterschied zwischen den beiden Befehlen? Welches ist die bevorzugte Art, mit Hintergrunddiensten umzugehen? Wie konfiguriere ich den bevorzugten Befehl?


3
gibt es eine sehr gute Erklärung gibt
Félix Brunet

Der schmerzhafte Teil davon ist, dass manche sagen, Service sei "nicht mehr verfügbar" und wenn nicht, warum ändern sie dann die Reihenfolge der Argumente wie bei "find / grep / locate" etc ... keine Konsistenz innerhalb von Linux-Releases :(
killjoy

Antworten:


37

serviceist ein "High-Level" -Befehl zum Starten und Beenden von Diensten unter verschiedenen Unixen und Linuxen. Leitet abhängig vom "untergeordneten" Service-Manager serviceauf verschiedene Binärdateien um.

Beispielsweise wird unter CentOS 7 eine Weiterleitung zu ausgeführt systemctl, während unter CentOS 6 das entsprechende /etc/init.dSkript direkt aufgerufen wird. Auf der anderen Seite leitet Ubuntu in älteren Releases auf weiterupstart

serviceist für das grundlegende Servicemanagement ausreichend, während ein direkter Anruf systemctlgrößere Steuerungsmöglichkeiten bietet.


9

systemctlist im Grunde eine leistungsfähigere Version von service.

Mit servicekönnen Sie nur Befehle mit dem Dienst tun (dh status, reload, restart) , während mit systemctlanspruchsvolleres Befehlen wie verwenden kann:

systemctl is-failed name.service # check if service failed to load

Oder Maskierungsdienste:

systemctl mask name.service

Auf dieser Seite gibt es viele gute Informationen von Ask Ubuntu.


1

systemctlist das Hauptdienstprogramm zur Steuerung von Daemons / Diensten systemd,
während der serviceBefehl das traditionelle Dienstprogramm der SysVinitWelt ist.

Eine der Funktionen von systemd besteht darin, mit SysVinit / Legacy-Befehlen kompatibel zu sein.
Wenn Sie also den systemctlBefehl haben,
service foo startist dies ein Wrapper systemctl start foo.

Gleiche Geschichte für chkconfig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.