Deaktivieren Sie den Init-Dienst dauerhaft

10

Ich habe gerade einen neuen VPS mit CentOS 6 bereitgestellt, der mit Apache geliefert wird.

Ich möchte Apache deaktivieren, da ich stattdessen Nginx verwenden werde.

Ich weiß, dass ich das Skript in /etc/init.d/ einfach löschen kann, aber ich möchte das nicht tun, da es eine Standard-Sache ist, die mit dem System geliefert wurde. Ich hätte lieber eine elegante Möglichkeit, den Dienst zu deaktivieren.

Ich dachte, ich könnte etwas in / etc / inittab einfügen, aber inittab enthält:

# 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:

Dies lässt mich glauben, dass das System hochgefahren ist. Nun, ich habe nachgesehen, und der richtige Weg, einen Dienst beim Start zu deaktivieren, besteht darin, eine Überschreibungsdatei hinzuzufügen. Also renne ich:

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

Und starte meinen Server neu. Aber httpd läuft noch! Verwirrt entscheide ich mich, durch Ausführen zu überprüfen, ob Upstart der Init-Dienst ist

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

Nun, das hatte ich nicht erwartet. Vielleicht bin ich doch nicht empört. Gibt es eine bestimmte Möglichkeit zu überprüfen? Und wenn ich init ausführe, wie kann ich einen Dienst dauerhaft deaktivieren? Ich bin neu in all dem und es scheint viele widersprüchliche Meinungen zu geben.

Vielen Dank für Ihre Hilfe.

Max Bucknell
quelle
Warum nicht einfach Apache entfernen, wenn Sie es nicht verwenden wollen?
Frederik Nielsen
Weil ich es vielleicht in Zukunft verwenden möchte, um Python-Anwendungen mit mod_wsgi zu vertreten oder PHP auszuführen. Im Moment möchte ich es nicht benutzen. Und dies scheint ein Problem zu sein, das ich in Zukunft möglicherweise auch bei verschiedenen Diensten haben werde.
Max Bucknell

Antworten:

16

Die Art und Weise, wie Sie einen Dienst unter nahezu jeder von RedHat abgeleiteten Distribution deaktivieren, erfolgt mit dem folgenden chkconfigBefehl:

# chkconfig httpd off

Und um einen laufenden Dienst zu stoppen:

# service httpd stop

Diese Befehle werden das Richtige tun , unabhängig davon , ob das System ausgeführt wird systemd, upstartoder Vanille SysVInit.

Für das, was es wert ist, verwenden die upstartmeisten Dienste in CentOS 6 tatsächlich ältere init.dSkripte, die sich in befinden /etc/rc.d/rc<RUNLEVEL>.d. chkconfigVerwaltet für diese Dienste die Symlinks in /etc/rc.d/init.d.

Larsks
quelle
Ich fand dies heraus, indem ich nach etwas suchte, das update-rc.d aus Trillans Antwort entspricht. Ich wollte gerade meine eigene Frage beantworten, aber du hast mich geschlagen. Vielen Dank, Larsks.
Max Bucknell
4

Deaktivieren Sie den Dienst, den Sie während des Systemstarts nicht starten möchten, mit chkconfig .

Liste der verfügbaren Dienste mit ihren Staaten

chkconfig --list

Deaktivieren Sie den Dienst htttpd in Runlevel 2345

chkconfig --level 2345 httpd off

clement
quelle