web-dev-qa-db-fra.com

Existe-t-il un moyen standard de démarrer et d'arrêter les services sur Linux?

Jusqu'à récemment, il y avait un moyen simple et efficace de démarrer/arrêter/redémarrer des services:

service nginx start|stop|restart

Cela a parfaitement fonctionné pendant tant d'années, ... jusqu'à ce que certains pantalons intelligents ont décidé de les améliorer et maintenant, je suis confronté à des systèmes Debian/Ubuntu où le script service ne fait rien (comme je suis censé utiliser les choses Comme systemctl start nginx.service (beaucoup plus longtemps, pas de travail automatique, ...)

Ma question se réfère spécialement à Debian et Ubuntu, mais il serait également utile de couvrir également des distributeurs Centos/Redhat.

Alors, y a-t-il quelque chose qui peut me sauver de ces changements condamnés?

Au cas où il n'était pas clair, je cherche un moyen cohérent de traiter ceux qui travailleraient sur Debian 7.x, 8.x, les plus récents Ubuntu LTS et les non-LTS.

Ps. En dehors de la portée de cette question spécifique, mais des félicitations supplémentaires accordaient si la solution couvrirait également la partie active et désactivée pour les services.

15
sorin

Il y a eu un certain nombre de systèmes de démarrage et de contrôle de service variés sur des plates-formes UNIX sur l'histoire intacte.

Les service\chkconfig Système basé sur vous avez trouvé simple et efficace est généralement appelé style sysvinit et était une étape majeure en fonction d'une sorte de normalisation . Vous trouverez ce style de démarrage sur Rhel/Centos (EL) à travers la version 6, Fedora à 14 ans et sur les distributions basées sur Debian/Ubuntu jusqu'à 2015. Ce n'est pas le seul système de démarrage, le style BSD (plus simple). Le système init a toujours de nombreux fans.

Sysvinit n'était pas une solution parfaite (qu'est-ce que c'est?) Et Systemd a été conçu pour surmonter de nombreux problèmes; C'est le système basé sur la commande systemctl que vous rencontrez maintenant. Bien que cela ne soit pas universellement aimé (les gens détestent le changement, le blagot, etc.), il ne fait aucun doute que cela devient rapidement la norme DEFACTO dans la majorité des distributions.

Par conséquent, cherchez immédiatement la réponse à votre question initiale est simplement la suivante:
[.____] the standard façon de contrôler les services sur la plupart Distributions Linux est maintenant systemctl !
[.____] Combien de temps cela va être vrai est que quelqu'un devinait; Probablement juste jusqu'à ce que quelque chose vient tout cela est mieux et devient largement adopté.

Je suis sûr qu'il y aura des emballages disponibles pour permettre, votre favori actuel, le service/chkconfig Commandes de continuer à faire principalement des choses saines, mais avec cette courbe d'apprentissage particulière, il est probablement préférable de ne pas le combattre. Peut-être qu'ils attendent avec impatience, il y aura aussi des wrappers systemctl pour les systèmes plus anciens, afin de les gérer à des fins plus nouvelles de la douleur;)

6
DanSut

N'a-t-il pas de sens pour remplacer l'ancienne commande service avec une enveloppe qui appelle servicectl [sic] à la place?

Oui, mais une [...] wrapper pourrait le gérer, en faisant la transition vers SystemD plus lisse pour les utilisateurs.

... ce qui est, comme d'autres d'autres ont dit dans des commentaires ce qui a été fait longtemps depuis .

Les /usr/sbin/service Commande sur Debian 8 fait partie du package Sysvinit-Utils. Il y a été là depuis 2009. Il s'agit d'un ajout de RedHat-crédiré à l'origine du package source Sysvinit d'origine et, comme on peut le voir à la lecture du script, il reconnaît à la fois SystemD en cours d'exécution et la présence d'emplois à la hausse, de l'exploitation des commandes de l'exploitation de l'agriculture à systemctl et initctl (via ses alias) respectivement. Cela a fait depuis 2013.

service nameaction est assez largement disponible, même sur des systèmes d'exploitation non linux. Il travaillera même sur la plupart des BSD, car ils ont aussi leurs propres commandes service. Il y a aussi une commande de shim service dans le package NOSH qui se traduit par system-control actionname. Mais …

  • ... Allez au-delà de ce sous-ensemble commun, et il y a beaucoup moins de compatibilité tout autour.
  • ... OpenBSD n'a pas de commandement service.
  • ... Les commandes BSD service ont des problèmes bien connus de longue date que les administrateurs système racontent des histoires de guerre pendant des décennies.

L'activation et la désactivation des services sont une situation similaire. Bien que le programme SUSE chkconfig (Disponible emballé pour Debian et Ubuntu) soit très différent de la Fedora One (ils sont écrits dans des langages de programmation entièrement différents, même - une compilée, une interprétée), il y a un minimum commun chkconfig nameaction Syntaxe, avec Action Être on ou off. Mais …

  • ... encore une fois, au-delà de ce sous-ensemble commun, il y a moins de compatibilité.
  • ... il n'y a pas chkconfig sur les BSDS, car les outils conventionnels pour cela sont soit sysrc ou plus openbsd rcctl enable et rcctl disable. Il y a chkconfig et rcctl cales dans le forfait NOSH qui se traduisent par system-control enable name et system-control disable name.
  • ... Seul la Fedora chkconfig sait sur SystemD et agit comme une cale pour systemctl enable et systemctl disable. Le SUSE chkconfig n'a aucune connaissance de SystemD.

En plus de lecture

5
JdeBP

Il n'y a pas de moyen standard de démarrer et d'arrêter les services sur Linux.

y a-t-il quelque chose qui peut me sauver de ces changements condamnés?

Essayez l'outil de gestion/orchestration de la configuration: ansible , Chef , Saltstack , marionnette ou autre.

Vous pouvez commencer et activer un service avec une annulation:

ansible all -i inv -m service -a 'name=service-name state=started enabled=true'

Jetez un coup d'œil à la Classe Linuxservice dans le - service module:

Il s'agit de la classe de manipulation de service Linux - Il prend actuellement en charge un mélange de binaires et de scripts initiaux pour la commande de services commencés au démarrage, ainsi que pour contrôler l'état actuel.

2