Trwale wyłącz usługę początkową

10

Właśnie dostarczyłem nowy VPS z systemem CentOS 6 i jest on dostarczany z Apache.

Chcę wyłączyć Apache, ponieważ zamiast tego będę używać Nginx.

Wiem, że mogę po prostu usunąć skrypt w /etc/init.d/, ale nie chcę tego robić, ponieważ jest to zwykłe narzędzie dostarczane z systemem. Wolałbym w sposób wdzięczny wyłączyć usługę.

Pomyślałem, że będę w stanie umieścić coś w / etc / inittab, ale inittab zawiera:

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

To prowadzi mnie do przekonania, że ​​system działa poprawnie. Cóż, spojrzałem, a poprawnym sposobem wyłączenia usługi na początku jest dodanie pliku zastępowania. Więc biegam:

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

I uruchom ponownie mój serwer. Ale httpd wciąż działa! Zdezorientowany tym postanawiam sprawdzić, czy uruchomienie to usługa inicjująca, uruchamiając

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

Cóż, nie tego się spodziewałem. Może mimo wszystko nie biegnę na wyższy poziom. Czy istnieje określony sposób sprawdzenia? A jeśli uruchamiam init, jaki jest zalecany sposób na trwałe wyłączenie usługi? Jestem nowy w tym wszystkim i wydaje się, że istnieje wiele sprzecznych opinii.

Dziękuję wszystkim za pomoc.

Max Bucknell
źródło
Dlaczego nie usunąć apache, jeśli nie zamierzasz go używać?
Frederik Nielsen,
Ponieważ mógłbym chcieć go użyć w przyszłości, do proxy aplikacji Pythona za pomocą mod_wsgi lub uruchamiania PHP. Na razie nie chcę tego używać. I to wydaje się być problemem, który mogę mieć ponownie w przyszłości, również z różnymi usługami.
Max Bucknell,

Odpowiedzi:

16

Sposób, w jaki wyłączasz usługę w ramach dowolnej dystrybucji pochodzącej z RedHat, to chkconfigpolecenie:

# chkconfig httpd off

Aby zatrzymać działającą usługę:

# service httpd stop

Polecenia te będą Rób, co niezależnie od tego, czy system jest uruchomiony systemd, upstartlub wanilii SysVInit.

Za to, co jest warte, mimo że upstartwiększość usług w CentOS 6 faktycznie używa starszych init.dskryptów, zlokalizowanych w /etc/rc.d/rc<RUNLEVEL>.d. W przypadku tych usług chkconfigzarządza dowiązaniami symbolicznymi w /etc/rc.d/init.d.

Larsks
źródło
Dowiedziałem się tego, szukając czegoś równoważnego update-rc.d z odpowiedzi Trillana. Właśnie miałem odpowiedzieć na moje pytanie, ale pobiłeś mnie. Wielkie dzięki, Larki.
Max Bucknell,
4

Wyłącz usługę, której nie chcesz uruchamiać podczas uruchamiania systemu, używając komendy chkconfig .

Wyświetl listę dostępnych usług wraz z ich stanami

chkconfig --list

Wyłącz usługę htttpd na poziomie działania 2345

chkconfig --level 2345 httpd off

łaskawy
źródło