service vs. systemctl-Skripte - welche zu verwenden sind

24

In Fedora haben wir 'systemctl' und 'service' Skripte. Es scheint, dass der Dienst intern anruft systemctl. Also, wie kann Fedora die Dienste starten oder stoppen - via systemctloder serviceFacility? Gibt es vielleicht Nuancen zu beachten?

Kennzeichen
quelle
3
Debian-Benutzer können also nicht sicher antworten, aber service foo startin Debian funktioniert es, ob Ihr Init-System systemd oder sysvinit oder upstart ist; systemctlwürde wahrscheinlich nicht funktionieren, wenn systemd nicht PID1 ist.
Shadur

Antworten:

14

Die Möglichkeit, Dienste in Fedora (neuere Versionen) zu stoppen / starten, wird verwendet systemctl.

Möglicherweise sind jedoch noch einige Dienste verfügbar, /etc/init.d/die Sie mit dem serviceBefehl steuern können . Sie können sie weiterhin steuern, systemctlindem Sie sie systemdautomatisch Unit-Dateien zuordnen.

Auf meinem CentOS 7 (Fedora 19 oder so) gibt es beispielsweise ein /etc/rc.d/init.d/networkSkript, das ich mit dem serviceBefehl steuern könnte . Wenn ich systemctlstattdessen benutze , funktioniert es immer noch:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

Wie Sie sehen, wurde es /etc/rc.d/init.d/networkvon zugeordnet, systemdund der systemctlBefehl steuert es.

Ich könnte so "letztes Jahr" sein und servicestattdessen verwenden:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

Beide funktionieren, beachten Sie jedoch, dass ihre statusBefehle unterschiedliche Ergebnisse liefern .

garethTheRed
quelle
10

In der Regel werden die serviceSkripte zu systemctl-Skripten (Systemd) umgeleitet, sodass Sie im Grunde genommen die gewünschten Einstellungen vornehmen möchten.

Beispiel

Aus meinem Fedora 20-System.

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

Ich benutze in der Regel beide Methoden, da alte Gewohnheiten schwer sterben. Aber wenn Sie versuchen, sich an die Systemd-Welt anzupassen, würde ich mich weiterhin dazu zwingen, Dinge zu tun, systemctlwenn es möglich ist.

Außerdem bringt Systemd alles, was Sie bisher mit chkconfigund serviceunter einem Befehl getan haben systemctl, so dass ich es auf lange Sicht im Allgemeinen einfacher finde, damit umzugehen.

Dieses Cheatsheet auf der Website des Fedora-Projekts ist hilfreich für den Wechsel.

   ss1

Die Antwort auf Ihre ursprüngliche Frage finden Sie übrigens in einer Fußnote auf dieser Seite:

Beachten Sie, dass alle oben aufgeführten Zeilen / sbin / service und / sbin / chkconfig weiterhin auf systemd funktionieren und bei Bedarf in native Entsprechungen übersetzt werden. Die einzige Ausnahme ist chkconfig --list.

Verweise

slm
quelle