C'est peut-être une question banale, 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é démarrés 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?
Réponses:
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 service "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/etc/init.d
script relatif . D'un autre côté, dans les anciennes versions d'Ubuntu, il redirige versupstart
service
convient à la gestion des services de base, tandis que les appels directssystemctl
offrent de meilleures options de contrôle.la source
systemctl
est fondamentalement une version plus puissante deservice
.Avec
service
vous ne pouvez faire des commandes liées au service (c. -àstatus
,reload
,restart
) alors qu'avecsystemctl
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.
la source
systemctl
est l'utilitaire principal pour contrôler les démons / servicessystemd
,tandis que la
service
commande est l'utilitaire traditionnel dansSysVinit
monde.L'une des fonctionnalités de systemd est d'être compatible avec les commandes SysVinit / legacy,
donc, si vous avez la
systemctl
commande,service foo start
sera un wrapper autoursystemctl start foo
.Même histoire pour
chkconfig
.la source