112 votes

Quelle est la différence entre service et systemctl ?

Il s'agit peut-être d'une question triviale, mais elle n'est pas totalement claire pour moi. Sur l'un de nos serveurs, nous avons des processus d'arrière-plan en cours d'exécution qui ont été lancés avec la commande service et d'autres qui ont été lancés avec systemctl comme ceci :

$ service nginx start
$ systemctl start gunicorn

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

4 votes

Il y a une très bonne explication

0 votes

Le plus pénible dans tout ça, c'est que certains disent que le service est 'défunt' et si ce n'est pas le cas, pourquoi diable changent-ils l'ordre des arguments comme avec 'find/grep/locate' etc... aucune cohérence dans les versions de linux :(

112voto

shodanshok Points 42743

service est une commande de "haut niveau" utilisée pour démarrer et arrêter des services dans différents unix et linux. Elle dépend du gestionnaire de services de "bas niveau", service redirections sur des binaires différents.

Par exemple, sous CentOS 7, il redirige vers systemctl alors que sous CentOS 6, il appelle directement la commande relative /etc/init.d script. D'autre part, dans les anciennes versions d'Ubuntu, il redirige vers upstart

service est suffisant pour la gestion de base du service, tandis que l'appel direct à systemctl offrent de plus grandes possibilités de contrôle.

26voto

VukBG Points 193

systemctl est essentiellement une version plus puissante de service .

Avec service vous pouvez uniquement effectuer des commandes liées au service (c'est-à-dire 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.

4 votes

Esprit qui bien que plus puissant, systemctl n'est pas une nouvelle version de service . Il n'est pas conçu pour remplacer service . Plutôt, service est conçu comme une enveloppe de haut niveau pour "abstraire" les différents gestionnaires de services tels que init.d , initctl et (bien sûr) systemctl .

0 votes

Je suppose service était essentiellement une enveloppe pour démarrer /etc/init.d scripts et ils l'ont gardé autour pour la "compatibilité rétroactive" avec systemctl ou quelque chose comme ça...

11voto

maioman Points 209

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

Une des caractéristiques de systemd est d'être compatible avec les commandes de SysVinit/legacy,
donc, si vous avez le systemctl commandement,
service foo start sera une enveloppe autour de systemctl start foo .

Même histoire pour chkconfig .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X