Постоянно отключить службу инициализации

10

Я только что подготовил новый VPS под управлением CentOS 6, и он поставляется с Apache.

Я хочу отключить Apache, потому что вместо этого я буду использовать Nginx.

Я знаю, что могу просто удалить скрипт в /etc/init.d/, но я не хочу этого делать, потому что это стандартная штука, поставляемая с системой. Я бы предпочел изящный способ отключения сервиса.

Я думал, что смогу поместить что-то в / etc / inittab, но inittab содержит:

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

Это наводит меня на мысль, что система работает на старте. Ну, я посмотрел, и правильный способ отключить службу в upstart - добавить файл переопределения. Итак, я бегу:

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

И перезагрузите мой сервер. Но httpd все еще работает! Смущенный этим, я решаю проверить, что выскочка является службой инициализации, запустив

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

Ну, это не то, что я ожидал увидеть. Может быть, я не выскочил в конце концов. Есть ли определенный способ проверить? И если я запускаю init, каков рекомендуемый способ навсегда отключить службу? Я новичок во всем этом, и, похоже, существует много противоречивых мнений.

Спасибо за вашу помощь.

Макс Бакнелл
источник
Почему бы просто не удалить Apache, если вы не собираетесь его использовать?
Фредерик Нильсен
Потому что я мог бы захотеть использовать его в будущем для прокси-приложений Python с mod_wsgi или для запуска PHP. Пока я не хочу этим пользоваться. И это похоже на проблему, которая может возникнуть у меня в будущем, с другими службами.
Макс Бакнелл

Ответы:

16

Вы отключаете службу практически для любого дистрибутива, производного от RedHat, с помощью chkconfigкоманды:

# chkconfig httpd off

И чтобы остановить работающий сервис:

# service httpd stop

Эти команды будут делать правильные вещи , независимо от того, работает ли система systemd, upstartили ванили SysVInit.

Что бы это ни стоило, несмотря на то, что upstartбольшинство служб в CentOS 6 работают, на самом деле используются устаревшие init.dсценарии, расположенные в /etc/rc.d/rc<RUNLEVEL>.d. Для этих сервисов chkconfigуправляет символическими ссылками в /etc/rc.d/init.d.

larsks
источник
Я выяснил это, ища что-то эквивалентное update-rc.d из ответа Триллана. Собирался ответить на мой собственный вопрос, но вы меня опередили. Большое спасибо, жаворонки.
Макс Бакнелл
4

Отключите службу, которую вы не хотите запускать во время загрузки системы, используя chkconfig .

Перечислите доступные сервисы с указанием их состояний

chkconfig --list

Отключить службу htttpd на уровне запуска 2345

chkconfig --level 2345 httpd off

милостивый
источник