Как предотвратить автоматический запуск служб Linux?

11

Я недавно мигрировал с Windows на Linux (xubuntu)

Я разработчик и установил все, что мне нужно, LAMP. В Windows я обычно отключал все ненужные сервисы - мне не нужно, чтобы сервис Apache или MySQL работал постоянно. Всякий раз, когда мне понадобился MySQL, я использовал:

net start mysql

Как мне сделать то же самое в Linux?

  1. Отключить ненужные демоны от автозапуска?
  2. Начинать их только тогда, когда они мне нужны?
Авив
источник
3
Я думаю, что вы должны включить точную версию Ubuntu, которую вы используете. Новые версии Ubuntu используют Upstart, который имеет свои собственные ошибки.
тест
Изменить: Я использую Xubuntu последней версии 10.04, но идентификатор не хочет использовать и графический интерфейс для этого, только из терминала. Похоже, @prhq что-то получил в своем ответе. Что такое выскочка?
Авив
Принадлежит в другом месте, либо на сервере Fault или Unix. Тем не менее, полезно.
ripper234

Ответы:

10

В большинстве дистрибутивов Linux вы можете вручную запускать / останавливать сервисы (от имени root или с помощью sudo), выполняя следующие команды:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Какие службы, которые запускаются автоматически, контролируются ссылками на файлы в /etc/rc[runlevel].d/. Найдите текущий уровень запуска, используя команду «runlevel» от имени пользователя root

# runlevel
N 2

Что здесь означает уровень запуска 2 Теперь вам просто нужно удалить те файлы в /etc/rc2.d/, которые вы не хотите запускать.

Удаление apache и Mysql на рабочем столе обычно нормально, но помните об удалении других сервисов.

hultqvist
источник
3
Это вводит в заблуждение, даже если вы сказали «большинство дистрибутивов». Я бы назвал ваш рецепт специфичным для дистрибутива.
тест
Что вы имели в виду? Я могу думать только об ArchLinux (но эти пользователи уже должны знать, что они делают). Конечно, в некоторых дистрибутивах есть специальные инструменты, но вышеупомянутая техника работает и на них.
hultqvist
Довольно странно, я вижу файл с именем S91apache2 в каталоге /etc/rc2.d, я думаю, он запускает apache2 ... но я не могу найти файл, касающийся MySQL. Где я могу узнать об этих автозапускающихся демонах?
Авив
Тогда сервер MySQL может не быть настроен для автоматического запуска. Этот сайт выглядит как хорошее объяснение: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist,
Обратите внимание, что под * BSD и деревом Slackware каталог находится /etc/rc.d/.
new123456
14

Для версий Ubuntu, использующих systemd (15.04 и выше), используйте:

systemctl disable service

Это сделает работу. Он отключит службу и не будет перезагружен после перезагрузки. Для временного включения просто запустите сервис. Не включить .

Чтобы найти название сервиса используйте

service --status-all

Другие команды:

systemctl start service- Используйте его для запуска службы. Не сохраняется после перезагрузки

systemctl stop service- Используйте его, чтобы остановить службу. Не сохраняется после перезагрузки

systemctl restart service - Используйте его для перезапуска службы

systemctl status service- Показывает статус службы. Сообщает, работает ли служба в данный момент.

systemctl enable service- Включает службу, при следующей перезагрузке или при следующем событии запуска. Это сохраняется после перезагрузки.

systemctl disable service- Служба отключается при следующей перезагрузке или при следующем событии остановки. Это сохраняется после перезагрузки.

Nandesh
источник
2
Жаль, что это не принятый ответ :). Спасибо, я полностью забыл об этой команде.
Nordés
8

Ubuntu 10.04 находится в середине перехода между двумя системами управления сервисами: SysVinit (традиционная система, используемая в большинстве дистрибутивов Linux) и Upstart (более новая система, выпущенная Ubuntu и доступная во все большем количестве дистрибутивов).

Сценарии управления сервисом SysVinit находятся в /etc/init.d. Вы можете запустить сервис с помощью /etc/init.d/SERVICENAME startи остановить его /etc/init.d/SERVICENAME stop. Будет ли служба запускаться автоматически при загрузке, зависит от наличия символических ссылок, в /etc/rc?.dкоторых ?находится цифра от 2до 5(уровень запуска ). Самый простой способ предотвратить автоматический запуск службы при загрузке - это использовать update-rc.d SERVICENAME disable.

Файлы конфигурации управления сервисом Upstart находятся в /etc/init. Вы можете запустить сервис с помощью start SERVICENAMEи остановить его stop SERVICENAME. Файл конфигурации /etc/init/SERVICENAME.confсодержит строку , указывающую , когда для запуска службы: start on …. Простой способ отключить эти службы - изменить эту строку на start on never and (…). Если вы не хотите редактировать файл, вы также можете полностью отключить службу, не путая систему упаковки, переименовав ее, чтобы она не заканчивалась .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

Начиная с Ubuntu 10.04, Apache поставляется со скриптом SysVinit, а Mysql - со скриптом Upstart.

Жиль "ТАК - перестань быть злым"
источник
Является ли редактирование servicename.conf действительно предпочтительным способом? Особенно, когда обновления теоретически могут обновлять эти файлы конфигурации и отменять ваши изменения
Masse
@Masse: Это не всегда предпочтительный способ, но он всегда работает. Некоторые службы читают файл /etc/defaultи имеют START_FOOвозможность отключить его, но многие ожидают запуска, если они установлены. Обновления не будут перезаписывать ваши изменения без запроса, так как все они являются conffiles.
Жиль "ТАК - перестань быть злым"
Ух ты. Это кажется большим шагом назад.
Масса
@Masse: Conffiles предназначены для редактирования администратором. Но если вы не хотите этого делать, вы также можете использовать dpkg-divertдля переименования служебный файл. Однако, если вы сделаете это, вы не сможете запустить службу явно.
Жиль "ТАК - перестань быть злым"