web-dev-qa-db-fra.com

Quelle est la difference entre service et systemctl?

C'est peut-être une question banale, mais ce n'est pas totalement clair pour moi. Sur l'un de nos serveurs, nous avons certains processus d'arrière-plan en cours d'exécution qui ont été démarrés avec service et d'autres qui ont été démarrés avec systemctl, comme ceci:

$ service nginx start
$ systemctl start gunicorn

Quelle est la différence entre les deux commandes? Laquelle est la meilleure façon de gérer les services d'arrière-plan? Comment configurer la commande préférée?

41
Aidas Bendoraitis

service est une commande "de haut niveau" utilisée pour démarrer et arrêter des services dans différents unix et linux. Selon le gestionnaire de services "de niveau inférieur", service redirige sur différents binaires.

Par exemple, sur CentOS 7, il redirige vers systemctl, tandis que sur CentOS 6, il appelle directement le script relatif /etc/init.d. D'un autre côté, dans les anciennes versions d'Ubuntu, il redirige vers upstart

service est adéquat pour la gestion des services de base, tandis que l'appel direct systemctl donne de meilleures options de contrôle.

45
shodanshok

systemctl est fondamentalement une version plus puissante de service.

Avec service vous ne pouvez faire que des commandes liées au service (ie status, reload, restart) alors qu'avec systemctl vous pouvez utiliser des commandes plus avancées telles que:

systemctl is-failed name.service # check if service failed to load

Ou des services de masquage:

systemctl mask name.service

Il y a beaucoup de bonnes informations sur cette page de Ask Ubuntu.

11
SamCyanide

systemctl est le principal utilitaire pour contrôler les démons/services dans systemd,
tandis que la commande service est l'utilitaire traditionnel dans le monde SysVinit.

L'une des fonctionnalités de systemd est d'être compatible avec les commandes SysVinit/legacy,
donc, si vous avez la commande systemctl,
service foo start sera un wrapper autour de systemctl start foo.

Même histoire pour chkconfig.

1
maioman