service vs scripts systemctl - à utiliser

24

Dans Fedora, nous avons des scripts «systemctl» et «service». Il semble que le service appelle en interne systemctl. Alors, quel est le bon / bon moyen sur Fedora pour démarrer ou arrêter des services - via systemctlou serviceinstallation? Peut-être y a-t-il des nuances à garder à l'esprit?

marque
la source
3
Utilisateur Debian, donc je ne peux pas répondre avec certitude, mais service foo startdans debian fonctionne si votre système init est systemd ou sysvinit ou upstart; systemctlne fonctionnerait probablement pas si systemd n'est pas PID1.
Shadur

Réponses:

14

La façon d'arrêter / démarrer les services dans Fedora (versions ultérieures) est d'utiliser systemctl.

Cependant, il peut rester quelques services dans /etc/init.d/lesquels vous pouvez contrôler avec la servicecommande. Vous pouvez les contrôler toujours avec systemctlcomme systemdles cartes automatiquement des fichiers de l' unité pour vous.

Par exemple, sur mon CentOS 7 (Fedora 19 ou environ), il y a un /etc/rc.d/init.d/networkscript que je pourrais contrôler avec la servicecommande. Si j'utilise à la systemctlplace, cela fonctionne toujours:

# 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

Comme vous pouvez le voir, il a été mappé /etc/rc.d/init.d/networkpar systemdet la systemctlcommande le contrôle.

Je pourrais être si «l'année dernière» et utiliser à la serviceplace:

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

Les deux fonctionnent, mais notez qu'ils donnent des résultats différents dans leurs statuscommandes.

garethTheRed
la source
10

C'est généralement le cas que les servicescripts sont redirigés vers des scripts systemctl (Systemd), c'est donc essentiellement votre préférence que vous souhaitez utiliser.

Exemple

Depuis mon système 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.

J'utilise généralement les deux méthodes, car les vieilles habitudes ont la vie dure. Mais si vous essayez de vous adapter au monde Systemd, je continuerais à me forcer à faire des choses en utilisant systemctlsi possible.

Systemd apporte également tout ce que vous faisiez avec chkconfiget servicesous une seule commande systemctl, donc je trouve généralement cela plus facile à gérer à long terme.

Cette feuille de sécurité sur le site Web du projet Fedora est utile pour effectuer le changement.

   ss1

Soit dit en passant, la réponse à votre question d'origine est traitée dans une note de bas de page sur cette page:

Notez que toutes les lignes / sbin / service et / sbin / chkconfig répertoriées ci-dessus continuent de fonctionner sur systemd et seront traduites en équivalents natifs si nécessaire. La seule exception est chkconfig --list.

Les références

slm
la source