Arrêter le programme en cours d'exécution au démarrage sous Linux

29

Comment arrêter un programme en cours d'exécution au démarrage sous Linux. Je souhaite supprimer certaines applications du démarrage pour leur permettre d'être gérées par supervisordexemple par apache2

Frozenskys
la source
C'est exactement pourquoi je ne l'ai pas tagué ... Je recherche toutes les variations car je travaille avec pas mal de distributions différentes.
Frozenskys

Réponses:

29

Selon votre distribution, utilisez l'outil chkconfig ou update-rc.d pour activer / désactiver les services système.

Sur un système de style redhat / suse / mandrake:

sudo chkconfig apache2 off 

Sur Debian:

sudo update-rc.d -f apache2 remove

Consultez leurs pages de manuel pour plus d'informations.

jacksonh
la source
Pourquoi avez-vous besoin de -f (je suppose que c'est force) sur les distributions basées sur Debian?
Frozenskys
2
Il y a deux ensembles de fichiers en jeu ici. Vous avez le script init réel dans /etc/init.d/ et vous avez les liens vers celui-ci dans votre répertoire runlevel /etc/rcrunlevel.d/. Ces types pointent vers le script dans /etc/init.d/ Si vous n'utilisez pas -f update-rd.d échouera SAUF si le script dans /etc/init.d/ est déjà supprimé. Si vous utilisez -f update-rc.d supprimera correctement les fichiers de liens, que le script /etc/init.d/ soit supprimé ou non.
jacksonh
Ah, cela a beaucoup de sens, j'avais oublié que les scripts de niveau d'exécution n'étaient que des liens vers les scripts d'initialisation. Merci pour l'explication supplémentaire.
Frozenskys
6

Si vous avez affaire à un système Ubuntu moderne et à quelques autres distributions, vous devrez peut-être composer avec une combinaison de scripts init traditionnels et de scripts upstart. La gestion des scripts d'initialisation est couverte par d'autres réponses. Voici une façon d'empêcher un service parvenu à démarrer au démarrage:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

Le problème avec cette méthode est qu'elle ne vous permet pas de démarrer le service en utilisant:

# service start servicename

Une alternative à cela est d'ouvrir le servicename.conffichier dans votre éditeur préféré et de commenter toutes les lignes commençant par:

start on

Autrement dit, changez cela en

#start on ...

où le "..." est ce qui était après "démarrer" précédemment. De cette façon, lorsque vous souhaitez le réactiver, vous n'avez pas à vous rappeler quels étaient les paramètres de "démarrage".

Enfin, si vous avez une nouvelle version de upstart, vous pouvez simplement ajouter le mot "manuel" à la fin du fichier de configuration. Vous pouvez le faire directement depuis le shell:

# echo "manual" >> /etc/init/servicename.conf

Cela amènera upstart à ignorer toutes les phrases "start on" plus tôt dans le fichier.

Steven D
la source
2

Sur les systèmes Fedora et Future RHEL récents

systemctl disable httpd.service

désactivera le service httpd

Alastair
la source
Merci! J'avais essayé de nombreuses méthodes, mais cette systmctlcommande fonctionnait bien.
loves.by.Jesus
1

Pour répertorier tous les services de démarrage

    systemctl

Pour arrêter l'exécution d'un service au démarrage

    sudo systemctl disable servicename

Par exemple, si nous devons arrêter d'exécuter le serveur ssh au démarrage

    sudo systemctl disable sshd.service

Nous pouvons réactiver ceci en utilisant

    sudo systemctl enable sshd.service

Presque toutes les distributions Linux utilisent systemd pour démarrer les services de démarrage. Les commandes ci-dessus fonctionnent donc pour la plupart des distributions.

Prince
la source
Bienvenue chez U&L, et merci pour votre contribution! Je voudrais souligner que cette question a environ huit ans maintenant, donc la réponse acceptée était correcte pour l'époque. L'utilisation de systemctl peut être correcte maintenant , mais elle est correcte pour une question différente .
Jeff Schaller
@Prince merci pour les explications détaillées. Cela m'a aidé à comprendre comment fonctionne le démarrage de démarrage dans mon Xubuntu.
loves.by.Jesus
0

Slackware et Arch linux ont des méthodes similaires pour arrêter / démarrer les processus au démarrage, différentes des exemples de style Ubuntu et Redhat donnés ci-dessus.

Dans les linux Slackware et Arch, les scripts sh existent dans le répertoire /etc/rc.d, généralement un script par démon ou un script par sous-système.

Par exemple, Slackware démarre le serveur Web Apache avec un script /etc/rc.d/rc.httpd, appelé au moment approprié lors du démarrage du système avec un argument "start". Arch linux a des scripts nommés différemment, mais le même genre de chose continue.

Pour empêcher certains processus de démarrer pendant le démarrage du système, sur Slackware, il vous suffit de rendre le script approprié dans /etc/rc.d non exécutable. Pour empêcher Apache de démarrer au prochain démarrage:

chmod -x /etc/rc.d/rc.httpd

Pour arrêter un Apache démarré au démarrage: /etc/rc.d/rc.httpd stop vous devez être root.

Arch est un peu plus complexe. Le fichier /etc/rc.conf, un script shell, a un tableau DAEMONS. Pour empêcher Apache de démarrer au démarrage, vous devez modifier cette ligne dans /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

À cette ligne:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Pour arrêter un apache déjà en cours d'exécution, vous devez exécuter en /etc/rc.d/httpd stoptant que root.

Bruce Ediger
la source
0

Sur Ubuntu 10.04, vous pouvez contrôler certains programmes de démarrage à partir de l'interface graphique.

SystemPreferencesStartup Applications

Préférences des applications de démarrage

jjclarkson
la source
1
L'image d'origine n'est plus là.
tshepang
-1

1) appuyez sur la super-touche de votre clavier 2) recherchez «Applications de démarrage» 3) choisissez le programme que vous souhaitez désactiver 4) cliquez sur comme pour cette réponse si vous travaillez.

Bhasha Bhavanishankar
la source