68 votes

Désactiver le démarrage d'un service à tous les niveaux d'exécution ?

J'ai un service foo qui démarre actuellement au niveau d'exécution 3 et plus. Comment puis-je l'empêcher de le faire, sans utiliser la fonction update-rc.d foo stop 3 . qui (si je comprends bien) arrêterait le service à chaque changement de niveau d'exécution.

(c'est-à-dire, si j'étais au niveau d'exécution 1 et activé foo puis quand j'ai changé de niveau d'exécution 3 il serait désactivé, non ?)

Exécution de Debian GNU/Linux Lenny.

64voto

liangzan Points 1733

Le terme "stop" n'empêche pas le démon de démarrer mais l'arrête plutôt en entrant dans le niveau d'exécution spécifié.

Si vous souhaitez simplement supprimer un service/daemon d'un seul niveau d'exécution, update-rc.d comme le souligne bei freiheit o supprimez simplement le lien symbolique de /etc/rcX.d/ où X est votre niveau d'exécution. Si vous ne voulez pas que le service démarre automatiquement, update-rc.d -f foo remove fera l'affaire.

2 votes

Une idée pour le faire sur Debian 8 ? sudo update-rc.d -f sunrpc remove ne fonctionne pas ; il est toujours présent après un redémarrage.

0 votes

Debian 9 Cela ne fonctionnait pas pour moi, et puis j'ai réalisé, oh derp, j'ai besoin de sudo. update-rc.d ne donne aucun retour si vous oubliez de sudo. J'ai confirmé que les liens avaient disparu avec ls /etc/rc*.d

0 votes

La commande a échoué sur Ubuntu 16.04

60voto

Not Now Points 3522

Configurer les applications de démarrage de Linux avec sysv-rc-conf :

apt-get install sysv-rc-conf

Comme d'autres l'ont souligné, voici aussi update-rc.d pour la ligne cmd.

Par exemple, exécutez

update-rc.d apache2 disable

pour désactiver apache2 à tous les niveaux d'exécution.

0 votes

Excellent outil - je ne le connaissais pas. Merci.

2 votes

Notez que cela n'arrêtera pas le service en cours, pour cela vous devez ajouter ceci : service foo stop ou redémarrer le serveur

16voto

Rado Points 1999

Court :

Il n'existe aucun moyen fiable de le faire rapidement.

Long :

La version actuelle de Debian (Debian instable à partir du 2012-06-01) n'a actuellement aucun moyen court et fiable de désactiver un service ou un démon de manière cohérente. - Parce que la mise à jour d'un paquet démon exécute inconditionnellement "/etc/init.d/package restart", qu'il soit ou non désactivé pour ce niveau d'exécution.

Pour s'assurer qu'un démon ne démarre pas, vous pouvez :

  • le désinstaller
  • faites un détournement local du /etc/init.d/xyz script (de cette façon, aucun outil ne le trouvera)
  • utiliser/abuser d'un fichier de configuration du paquet correspondant pour provoquer une sortie précoce de ce script (par exemple, mettre un "exit" précoce dans /etc/default/xyz dans le cas où il est sourcé depuis le script d'init).
  • regardez dans cet init-script pour les moyens "officiels" prédéfinis pour ne pas démarrer ce démon.

Il y a/avait( ?) une étape init-policy-quelque chose pour init scripts dans Debian, qui était supposée combler cette fonctionnalité manquante. - J'ai essayé de l'utiliser, je l'ai trouvé compliqué, j'ai trouvé un bogue et je n'y ai plus jamais touché.

Mise à jour :

Passez à "systemd", une alternative à "initd". Un paquet debian existe, et vous pouvez désactiver un service avec quelque chose comme ceci :

cd /etc/systemd/system
ln -s /dev/null xyz.service

1 votes

+1 C'est une réponse tellement utile - et si je ne l'avais pas trouvée, j'aurais été piqué plus tard - merci !

0 votes

Pouvez-vous juste unlink xyz.service également ?

0 votes

@NextLocal, j'ai oublié pourquoi j'ai écrit cela, mais je crois que si un service a System V init scripts, systemd les utiliseront. - Le lien lui dit donc de ne pas les chercher.

6voto

Mark Levinsky Points 61

Exécutez cette commande

apt-get install rcconf

Une fois installé, exécutez rcconf en SSH et vous recevrez une boîte de dialogue affichant tous les services définis pour être exécutés au démarrage. Sélectionnez ceux qui vous intéressent en appuyant sur Espace pour désactiver/activer le service en question et vous avez terminé, cliquez simplement sur Ok et ce service ne se donnera pas la peine de redémarrer au prochain démarrage. Je l'utilise depuis des années. Un outil très pratique pour les utilisateurs de Debian/Ubuntu comme moi.

0 votes

Aussi simple que 1,2,3 ! Merci pour ce petit outil en ligne de commande.

3voto

freiheit Points 14144

Je ne comprends pas ce que vous essayez d'accomplir.

Dans quels niveaux de course voulez-vous que foo coure ?

Si vous voulez qu'il fonctionne toujours, utilisez update-rc.d foo defaults qui l'arrêtera en 0, 1 et 6, tout en le laissant fonctionner en 2, 3, 4 et 5 (1 ne devrait rien exécuter d'autre qu'un Shell, 0 et 6 sont des arrêts et des redémarrages).

Si vous voulez spécifier exactement les niveaux d'exécution à exécuter :

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .

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