systemd
gibt uns die systemctl
Befehlssuite, die hauptsächlich verwendet wird, um den Start von Diensten zum Startzeitpunkt zu ermöglichen. Wir können mit Hilfe von auch Dienste starten, stoppen, neu laden, neu starten und deren Status überprüfen systemctl
.
Dies können wir zum Beispiel tun sudo systemctl enable service_name
und service_name
werden beim Booten automatisch starten. Wir können auch Dienste deaktivieren, die nicht zum Startzeitpunkt gestartet werden.
Ist der einzige Unterschied zwischen den Befehlen service
und systemctl
, systemctl
der zum Aktivieren des Starts von Diensten zur Laufzeit verwendet werden kann? Können wir systemctl
für jeden Dienst verwenden? Welche weiteren signifikanten Unterschiede gibt es?
command-line
services
systemd
luv.preet
quelle
quelle
Antworten:
Der
service
Befehl ist ein Wrapper-Skript, mit dem Systemadministratoren den Status von Diensten starten, stoppen und überprüfen können, ohne sich über das tatsächlich verwendete Init-System Gedanken machen zu müssen. Vor systemd der Einführung war es ein Wrapper für/etc/init.d
Skripte und die Upstart -initctl
Befehl, und jetzt ist es ein Wrapper für diese beiden undsystemctl
auch.Benutze die Quelle, Luke!
Es wird nach Upstart gesucht:
Wenn das nicht funktioniert, sucht es nach systemd:
Wenn dies ebenfalls fehlschlägt, wird auf System V-
/etc/init.d
Skripte zurückgegriffen:Da der
service
Befehl ein relativ einfacher Wrapper ist, unterstützt er nur eine begrenzte Teilmenge von Aktionen im Vergleich zu dem, was das eigentliche Init-System möglicherweise bietet.Für die Portabilität über verschiedene Versionen von Ubuntu können Benutzer den
service
Befehl zuverlässig zum Starten, Stoppen, Neustarten oder Überprüfen des Status eines Dienstes verwenden. Bei komplexeren Aufgaben muss der tatsächlich verwendete Befehl entwederinitctl
odersystemctl
oder das/etc/init.d
Skript direkt verwendet werden.Da das
service
Skript ein Wrapper ist, kann es in einigen Fällen auch mehr als der direkte äquivalente Befehl. Zum Beispiel:/etc/init.d
Skripte werden immer in einer sauberen Umgebung ausgeführt. (Beachten Sie den langenenv
Befehlsaufruf in derrun_via_sysvinit
obigen Funktion.)restart
auf Upstart-Systemen eine Kombination ausstop
/ zustart
, da eine einfacheinitctl restart
Fehlermeldung ausgegeben wird, wenn der Dienst nicht bereits ausgeführt wird.Es stoppt Sockets, wenn systemd-Dienste gestoppt werden, denen Sockets zugeordnet sind:
Upstart-Dienste wurden direkt in der Dienstkonfigurationsdatei aktiviert (oder über Überschreibungen deaktiviert), und System V-Skripts wurden mit dem
update-rc.d
Befehl (der Symlinks in den/etc/rc*
Verzeichnissen verwaltete)service
aktiviert oder deaktiviert , sodass der Befehl nie zum Aktivieren oder Deaktivieren von Diensten beim Start verwendet wurde .quelle
Es gibt viel mehr als das, was Sie erwähnt haben
systemctl
.systemd
arbeitet mit Einheiten, es gibt verschiedene Arten von Einheiten: Ziele, Dienste, Sockets usw. Ziele sind dasselbe Konzept wie Runlevel, sie sind eine Menge von Einheiten zusammen.Mit können Sie
systemctl
das Standardsystemziel festlegen oder abrufen.Sie können in andere Ziele gehen:
Andere Ziele sind: Mehrbenutzer, Grafik, Empfang, Notfall, Neustart, Ausschalten.
Wie Sie sagten, können Sie
systemctl
Dienste verwalten. Einige andere Befehle im Zusammenhang mit der Dienstverwaltung, die mir bekannt sind, sind:Sie können es verwenden, um einen Servicestatus zu ermitteln:
Sie können einen Dienst maskieren oder demaskieren:
Wenn Sie einen Dienst maskieren, mit dem er verknüpft ist
/dev/null
, können andere Dienste ihn manuell oder automatisch nicht aktivieren. (Sie sollten es zuerst demaskieren).Eine andere Verwendung von systemctl ist das Auflisten von Einheiten:
Welche Liste aller Arten von Einheiten, geladen und aktiv.
Serviceeinheiten auflisten:
Oder um alle verfügbaren Einheiten aufzulisten, die nicht nur geladen und aktiviert sind:
Sie können Aliase erstellen oder sogar entfernte Maschinen steuern
Auf der anderen Seite
service
erledigt es, was es zu tun hat, verwaltet Dienste und hat nichts mit dem Geschäft anderer Leute zu tun;)quelle
service
man tun kann, aber nichtsystemctl
?service start
Versuchen versteckt . Pre-systemd,service start
würde mich sofort sehen lassen, warum mein Dienst nicht starten würde. Nach dem System muss ich mir vier oder fünf verschiedene Protokolle ansehen, bevor ich sie finden kann. Trotzdem ist mein Kommentar zweifellos vom Thema abgefallen und wird wahrscheinlich gelöscht.service
Befehl zu sagen , war das nicht Teil der Frage?