Jusqu'à récemment, il existait un moyen simple et efficace de démarrer / arrêter / redémarrer les services:
service nginx start|stop|restart
Cela a fonctionné parfaitement pendant tant d'années, ... jusqu'à ce que certains pantalons intelligents décident de les améliorer et maintenant je suis confronté à des systèmes Debian / Ubuntu où le service
script ne fait rien (car 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 les distributions CentOS / RedHat.
Alors, y a-t-il quelque chose qui peut me sauver de ces changements condamnés?
Au cas où ce ne serait pas clair, je cherche un moyen cohérent de les gérer, celui qui fonctionnerait sur Debian 7.x, 8.x, les derniers Ubuntu LTS et non-LTS.
PS. En dehors de la portée de cette question spécifique, mais des félicitations supplémentaires accordées si la solution couvrait également la partie d'activation et de désactivation des services.
service
commande par un wrapper qui appelle à la place servicectl?service
vraiment rien pour vous? Cela fonctionne comme prévu sur mon LMDE (qui est essentiellement un test Debian), je ne pensais pas que c'était une chose spécifique à LMDE. Cela fonctionne également comme prévu dans ma machine virtuelle Ubuntu.Réponses:
Il y a eu un certain nombre de systèmes de contrôle de démarrage et de service variés sur les plates-formes Unix au cours de son histoire enchevêtrée.
Le
service\chkconfig
système basé que vous avez trouvé simple et efficace est généralement appelé style SysVinit et a été une étape majeure sur la voie d'une sorte de normalisation. Vous trouverez ce style de démarrage sur RHEL / CentOS (EL) à travers la version 6, Fedora à 14 et sur les distributions basées sur Debian / Ubuntu jusqu'en 2015. Ce n'était pas le seul système de démarrage, cependant, le style BSD (plus simple) le système init a encore 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
systemctl
système basé sur les commandes que vous utilisez actuellement. Bien qu'il ne soit pas universellement apprécié (les gens détestent le changement, les ballonnements, etc.), il ne fait aucun doute qu'il devient rapidement la norme de facto dans la majorité des distributions.Par conséquent, en regardant immédiatement vers l'avant, la réponse à votre question initiale est simplement:
La façon standard de contrôler les services dans la plupart des distributions Linux est maintenant
systemctl
!Combien de temps cela restera vrai est la supposition de personne; probablement jusqu'à ce que quelque chose arrive, c'est mieux et est largement adopté.
Je suis sûr qu'il y aura des wrappers disponibles pour permettre, votre favori actuel, aux
service/chkconfig
commandes de continuer à faire des choses principalement saines, mais avec cette courbe d'apprentissage particulière, il est probablement préférable de ne pas la combattre. Peut-être qu'à l'avenir, pendant un certain temps, il y aura aussi dessystemctl
wrappers pour les anciens systèmes, pour rendre leur gestion aux côtés des plus actuels moins pénible;)la source
… Qui est, comme d'autres l'ont dit dans les commentaires, ce qui a été fait depuis longtemps .
La
/usr/sbin/service
commande sur Debian 8 fait partie du paquet sysvinit-utils. Il existe depuis 2009. Il s'agit d'un ajout d'origine Debian spécifique à Debian au paquet source sysvinit d'origine, et comme on peut le voir à la lecture du script, il reconnaît à la fois l'exécution de systemd et la présence de travaux parvenus, utilisant des commandes verssystemctl
etinitctl
( via ses alias) respectivement. C'est ce qu'il fait depuis 2013.service name action
est assez largement disponible même sur les systèmes d'exploitation non Linux. Il fonctionnera même sur la plupart des BSD, car eux aussi ont leurs propresservice
commandes. Il y a aussi uneservice
commande shim dans le paquet nosh qui se traduit par . Mais …system-control action name
service
commande.service
commandes BSD ont des problèmes bien connus de longue date que les administrateurs système racontent depuis des décennies.L'activation et la désactivation des services est une situation similaire. Bien que le
chkconfig
programme SuSE (disponible pour Debian et Ubuntu) soit très différent de celui de Fedora (ils sont écrits dans des langages de programmation entièrement différents, même - un compilé, un interprété), il existe une syntaxe minimale commune , l' action étant ou . Mais …chkconfig name action
on
off
chkconfig
sur les BSD, car les outils conventionnels pour cela sont soitsysrc
les plus récents OpenBSDrcctl enable
etrcctl disable
. Il y achkconfig
et desrcctl
cales dans le package nosh qui se traduisent par et .system-control enable name
system-control disable name
chkconfig
connaît systemd et agit comme une cale poursystemctl enable
etsystemctl disable
. Le SuSEchkconfig
n'a aucune connaissance de systemd.Lectures complémentaires
script/service
. init-system-helpers. Archive source Debian.telinit
. Guide de nosh . 1.20. Logiciels JdeBP.service
commande . nosh pages. Logiciels JdeBP.service
. §8. Pages de manuel FreeBSD.la source
Il n'existe aucun moyen standard de démarrer et d'arrêter des services sous Linux.
Essayez l'outil de gestion / orchestration de la configuration: Ansible , Chef , Saltstack , Puppet ou autre.
Vous pouvez démarrer et activer un service avec Ansible:
Jetez un œil à la classe LinuxService dans le
service
module d'Ansible :la source
Votre problème est que Debian / Ubuntu sont passés au nouveau
systemd
en remplacement de l'anciensysvinit
. Demandez quel est le meilleur et vous allez commencer une guerre de flamme, mais vous pourrez toujours revenir à l'anciensysvinit
, vérifiez ce si vous voulez revenir en arrière.la source