web-dev-qa-db-fra.com

Désactiver un service à partir de tous les niveaux d'exécution?

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

(c.-à-d., si j'étais au niveau d'exécution 1 et activé foo, alors lorsque je passerais au niveau d'exécution , il serait désactivé, non?)

Exécuter Debian GNU/Linux Lenny.

61
lfaraone

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

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

58
PEra

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

apt-get install sysv-rc-conf

Comme d'autres l'ont souligné, voici également pdate-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.

56
Not Now

Court:

Il n'y a aucun moyen fiable de le faire rapidement.

Longue:

Debian actuelle (Debian instable depuis le 01/06/2012) n'a actuellement aucun moyen fiable et rapide de désactiver systématiquement un service/démon. - Parce qu'une mise à niveau d'un paquet démon exécute inconditionnellement "/etc/init.d/package restart", en le désactivant pour ce niveau d'exécution ou non.

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

  • le désinstaller
  • faire un détournement local du script /etc/init.d/xyz (de cette façon, aucun outil ne le trouvera)
  • utiliser/abuser d'un fichier de configuration du package correspondant pour provoquer une sortie anticipée de ce script (par exemple, mettre une "sortie" au début dans/etc/default/xyz au cas où il proviendrait du script init)
  • recherchez dans ce script init les moyens prédéfinis "officiels" de ne pas démarrer ce démon

Il y a/était (?) Une étape init-policy-something pour les scripts init dans Debian, qui était censée combler cette fonctionnalité manquante. - J'ai essayé de l'utiliser, je l'ai trouvé compliqué, j'ai trouvé un bug et je ne l'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
15
Robert Siemer

Exécutez cette commande

apt-get install rcconf

Une fois installé, exécutez rcconf dans SSH et vous recevrez une boîte de dialogue affichant tous les services définis pour s'exécuter au démarrage. Sélectionnez ceux en appuyant sur Espace pour désactiver/activer le particulier et vous avez terminé, cliquez simplement sur Ok et ce service ne prendra pas la peine de recommencer au prochain démarrage. L'utiliser depuis des années. Très outil pratique pour les utilisateurs Debian/Ubuntu comme moi.

5
Mark Levinsky

Je pense que cela ferait le travail: insserv -r foo

3
user38551

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

À quels niveaux d'exécution voulez-vous que foo fonctionne?

Si vous voulez toujours qu'il fonctionne, utilisez update-rc.d foo defaults; qui l'arrêtera en 0, 1 et 6, tout en le laissant tourner en 2, 3, 4 et 5. (1 ne devrait rien faire d'autre qu'un Shell, 0 et 6 sont arrêtés et redémarrés)

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

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

Commencez à utiliser insserv depuis Debian7

Afficher tous les services et les informations de niveau d'exécution

insserv --showall

Supprimer les scripts répertoriés de tous les niveaux d'exécution

insserv --remove [specify_script]
1
cocoa

Pourquoi ne sauvegardez-vous pas le script de démarrage ailleurs et ne le supprimez-vous pas dans /etc/init.d/? Si la mise à jour-rc.d ne fonctionne pas.

0
Kosaka Honoka

Le gestionnaire de démarrage d'Ubuntu est une sorte de lumière sysv-rc-conf , une version GUI plus conviviale, et beaucoup de gens lisant ce fil l'apprécieront.

http://www.marzocca.net/linux/bum.html

0
the_guv

Sur un système basé sur Red Hat, vous pouvez utiliser

chkconfig httpd off
chkconfig httpd --del

supprimer le serveur des niveaux d'exécution

sur un système basé sur Debian, tous les services sont supposés être démarrés par les fichiers trouvés dans les répertoires /etc/rc?.d/ ces fichiers ont alors un lien symbolique vers les fichiers correspondants dans le répertoire /etc/init.d/. Si vous souhaitez qu'un service ne démarre pas par défaut, vous pouvez le renommer/supprimer du répertoire /etc/rc?.d et votre modification sera conservée lors de la mise à niveau du package tant qu'un des liens de démarrage apparaît toujours dans l'un des les autres répertoires (3,4 et 5). Ou vous pouvez utiliser la commande update-rc.d pour modifier le (s) lien (s) et si vous souhaitez démarrer le service après, vous pouvez utiliser /etc/init.d/service_name start si vous laissez le début à la fin, il le fera vous donne les options qui peuvent être utilisées comme arrêter, redémarrer, recharger ...

Je pense que vous pouvez cependant utiliser sysv-rc-conf pour le désactiver.

0
Rodent43
Sudo update-rc.d SERVICE disable

Si vous souhaitez spécifier des niveaux d'exécution.

Sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

N'oubliez pas de remplacer service par le nom du programme.

Sudo service SERVICE restart
0
Eddie