Vielleicht ist das eine triviale Frage, aber mir ist das nicht ganz klar. Auf einem unserer Server laufen einige Hintergrundprozesse, mit denen begonnen wurde, service
und einige andere, mit denen begonnen systemctl
wurde:
$ 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?
Antworten:
service
ist ein "High-Level" -Befehl zum Starten und Beenden von Diensten unter verschiedenen Unixen und Linuxen. Leitet abhängig vom "untergeordneten" Service-Managerservice
auf verschiedene Binärdateien um.Beispielsweise wird unter CentOS 7 eine Weiterleitung zu ausgeführt
systemctl
, während unter CentOS 6 das entsprechende/etc/init.d
Skript direkt aufgerufen wird. Auf der anderen Seite leitet Ubuntu in älteren Releases auf weiterupstart
service
ist für das grundlegende Servicemanagement ausreichend, während ein direkter Anrufsystemctl
größere Steuerungsmöglichkeiten bietet.quelle
systemctl
ist im Grunde eine leistungsfähigere Version vonservice
.Mit
service
können Sie nur Befehle mit dem Dienst tun (dhstatus
,reload
,restart
) , während mitsystemctl
anspruchsvolleres 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.
quelle
systemctl
ist das Hauptdienstprogramm zur Steuerung von Daemons / Dienstensystemd
,während der
service
Befehl das traditionelle Dienstprogramm derSysVinit
Welt ist.Eine der Funktionen von systemd besteht darin, mit SysVinit / Legacy-Befehlen kompatibel zu sein.
Wenn Sie also den
systemctl
Befehl haben,service foo start
ist dies ein Wrappersystemctl start foo
.Gleiche Geschichte für
chkconfig
.quelle