Désactiver définitivement le service Init

10

Je viens de provisionner un nouveau VPS exécutant CentOS 6, et il est livré avec Apache.

Je veux désactiver Apache, car j'utiliserai Nginx à la place.

Je sais que je peux simplement supprimer le script dans /etc/init.d/, mais je ne veux pas le faire, car c'est une chose courante fournie avec le système. Je préfère avoir une manière gracieuse de désactiver le service.

J'ai pensé que je pourrais mettre quelque chose dans / etc / inittab, mais inittab contient:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

Cela m'amène à croire que le système est en cours d'exécution. Eh bien, j'ai regardé, et la bonne façon de désactiver un service dans upstart est d'ajouter un fichier de remplacement. Je lance donc:

% 'manual' > /etc/init/httpd.override

Et redémarrez mon serveur. Mais httpd fonctionne toujours! Confus par cela, je décide de vérifier que upstart est le service init, en exécutant

% readlink /proc/1/exe
/sbin/init

Eh bien, ce n'est pas ce à quoi je m'attendais. Peut-être que je ne suis pas parvenu par la suite. Existe-t-il un moyen précis de vérifier? Et si j'utilise init, quelle est la méthode recommandée pour désactiver définitivement un service? Je suis nouveau dans tout cela et il semble y avoir de nombreuses opinions contradictoires.

Merci à tous pour votre aide.

Max Bucknell
la source
Pourquoi ne pas simplement supprimer apache si vous ne comptez pas l'utiliser?
Frederik Nielsen
Parce que je pourrais vouloir l'utiliser à l'avenir, pour le proxy d'applications Python avec mod_wsgi, ou pour exécuter PHP. Pour l'instant, je ne veux pas l'utiliser. Et cela semble être un problème que je pourrais avoir à nouveau à l'avenir, avec différents services également.
Max Bucknell

Réponses:

16

La façon dont vous désactivez un service sous à peu près n'importe quelle distribution dérivée de RedHat est avec la chkconfigcommande:

# chkconfig httpd off

Et pour arrêter un service en cours d'exécution:

# service httpd stop

Ces commandes faire la bonne chose indépendamment du fait que votre système est en cours d' exécution systemd, upstartou la vanille SysVInit.

Pour ce que cela vaut, malgré l'exécution de la upstartplupart des services dans CentOS 6, utilisez en fait des init.dscripts hérités , situés dans /etc/rc.d/rc<RUNLEVEL>.d. Pour ces services, chkconfiggère les liens symboliques dans /etc/rc.d/init.d.

larsks
la source
J'ai découvert cela en recherchant quelque chose d'équivalent à update-rc.d de la réponse de trillan. J'étais sur le point de répondre à ma propre question, mais vous m'avez battu. Merci beaucoup, larsks.
Max Bucknell
4

Désactivez le service que vous ne souhaitez pas démarrer lors du démarrage du système à l'aide de chkconfig .

Liste des services disponibles avec leurs états

chkconfig --list

Désactiver le service htttpd au niveau d'exécution 2345

chkconfig --level 2345 httpd off

clément
la source