service vs. skrypty systemctl - których użyć

24

W Fedorze mamy skrypty „systemctl” i „service”. Wygląda na to, że usługa dzwoni wewnętrznie systemctl. Więc jaki jest właściwy / właściwy sposób na Fedorze do uruchamiania lub zatrzymywania usług - za pośrednictwem systemctllub usługi service? Czy mogą być jakieś niuanse, o których należy pamiętać?

znak
źródło
3
Użytkownik Debiana, więc nie może na pewno odpowiedzieć, ale service foo startw Debianie działa niezależnie od tego, czy twój system init jest systemd, sysvinit czy upstart; systemctlprawdopodobnie nie działałby, jeśli systemd nie jest PID1.
Shadur

Odpowiedzi:

14

Wykorzystywany jest sposób zatrzymywania / uruchamiania usług w Fedorze (nowsze wersje) systemctl.

Może jednak pozostać kilka usług, w /etc/init.d/których można kontrolować za pomocą servicepolecenia. Nadal można kontrolować je systemctljako systemdautomatycznie mapuje je do plików jednostkowych dla Ciebie.

Na przykład na moim CentOS 7 (Fedora 19 lub nowszym) jest /etc/rc.d/init.d/networkskrypt, który mógłbym kontrolować za pomocą servicepolecenia. Jeśli użyję systemctlzamiast tego, nadal działa:

# 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

Jak widać, został on zmapowany /etc/rc.d/init.d/networkprzez systemdi systemctlsteruje nim polecenie.

Mógłbym być tak „w zeszłym roku” i servicezamiast tego użyć :

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

Oba działają, ale zauważ, że dają różne wyniki w swoich statuspoleceniach.

garethTheRed
źródło
10

Zazwyczaj serviceskrypty są przekierowywane na skrypty systemctl (Systemd), więc chcesz użyć swoich preferencji.

Przykład

Z mojego systemu Fedora 20.

$ 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.

Generalnie używam obu metod, ponieważ stare nawyki umierają ciężko. Ale jeśli próbujesz przystosować się do świata Systemd, nadal zmuszam się do robienia rzeczy przy użyciu, systemctljeśli to możliwe.

Również Systemd zawiera wszystko, co robiłeś za pomocą jednego polecenia chkconfigi servicepod jednym poleceniem systemctl, więc na ogół łatwiej mi sobie z tym poradzić na dłuższą metę.

Ten ściąg na stronie projektu Fedora jest pomocny w dokonaniu zmiany.

   ss1

Nawiasem mówiąc, odpowiedź na twoje pierwotne pytanie znajduje się w przypisie na tej stronie:

Zauważ, że wszystkie wyżej wymienione linie / sbin / service i / sbin / chkconfig nadal działają na systemd i w razie potrzeby zostaną przetłumaczone na natywne odpowiedniki. Jedynym wyjątkiem jest chkconfig --list.

Referencje

slm
źródło