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

19858
Aviv

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

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

net start mysql 

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

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

3 ответа на вопрос

8
hultqvist

В большинстве дистрибутивов 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 на рабочем столе обычно нормально, но помните об удалении других сервисов.

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

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 13 лет назад 0
@Masse: это не всегда предпочтительный способ, но он всегда работает. Некоторые сервисы читают файл в `/ etc / default` и имеют параметр` START_FOO`, который вы можете отключить, но многие ожидают запуска, если они установлены. Обновления не будут перезаписывать ваши изменения без запроса, так как все они являются conffiles. Gilles 13 лет назад 0
Вот это да. Это кажется серьезным шагом назад. Masse 13 лет назад 0
@Masse: Conffiles предназначены для редактирования администратором. Но если вы не хотите этого делать, вы также можете использовать `dpkg-divert` для переименования файла службы. Однако, если вы сделаете это, вы не сможете запустить службу явно. Gilles 13 лет назад 0
1
Nandesh

Для версий 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- Служба отключается при следующей перезагрузке или при следующем событии остановки. Это сохраняется после перезагрузки.