Ubuntu, контролируйте запуск init

5149
Xolve

Ubuntu использует upstart вместо sysvinit. Однако все еще есть уровни выполнения и ссылки в них.

Я установил Tor, и он добавил себя к запуску ОС. Теперь я хочу удалить его, и популярными вариантами являются удаление ссылок на запуск и остановку службы с уровней запуска или отключение сценария /etc/init.d/. Это нормально, но это будет проблематично, если я захочу снова включить tor в список автозагрузки. Как бы я знал, чтобы поместить правильные последовательности в соответствующие каталоги уровня запуска.

Дано ли полное руководство? Каковы правила для этого? Какие-нибудь инструменты для управления init?

Расскажите пожалуйста

3
Почему бы просто не удалить сам тор? Bobby 14 лет назад 0

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

8
quack quixote

SysVinit работает так. Сценарии инициализации для каждого пакета находятся в /etc/init.d . Ссылки на эти скрипты находятся в /etc/rcS.d и /etc/rc[0-6].d . Эти ссылки начинаются либо с S (начало), либо с K (убить) и двухзначным числом.

  • Когда система загружается и запускается процесс SysVinit, он просматривает /etc/rcS.d и выполняет сценарии, начиная с S, упорядоченные по номеру. (Я полагаю, что он передает аргумент «start» сценариям, но я не уверен.)

  • После обработки всех сценариев /etc/rcS.d система начинает переходить на определенный уровень выполнения. В Ubuntu при загрузке с обычного рабочего стола уровень запуска по умолчанию равен 2 . Так что SysVinit выглядит в /etc/rc2.d и

    1. останавливает все сервисы со ссылками, начинающимися с K, упорядоченными по номеру; а также
    2. запускает все сервисы со ссылками, начинающимися с S, упорядоченными по номеру.

    Если вы вместо этого загрузились в режиме восстановления Ubuntu, вы загрузитесь до уровня запуска 1 . После запуска всех служб уровень запуска системы официально устанавливается.

  • Наконец, система запускает скрипт /etc/rc.local .

Если вы переключите уровни выполнения позже, SysVinit запустит тот же базовый процесс: он не проверяет /etc/rcS.d, но переходит непосредственно к обработке ссылок в /etc/rcN.d (где N - это тот, который вводится на уровне запуска).


Вы также можете написать сценарий Upstart. Я писал об Upstart ранее, так что проверьте там для более подробной информации. Upstart-скрипты хранятся в / etc / init ; чтобы написать их, просмотрите существующие сценарии, чтобы понять, как они работают, и прочитайте справочную страницу init (5) .

1
Shiki

Я знаю только update-rc.dкак инструмент. Страница руководства дает хорошее объяснение, как использовать это, и это не слишком трудно изучить.


Спасибо Кряку, который рассказал мне о chkconfig. Проверьте его пост здесь .

это «правильный инструмент» для автоматического управления ссылками * / etc / rc \ *. d *. quack quixote 14 лет назад 0
см. [мой ответ здесь] (http://superuser.com/questions/59410/change-cpufreq-in-runlevel-1/59459#59459) для ознакомления с кратким руководством по использованию-update-rc.d. quack quixote 14 лет назад 0
О, почему бы тебе просто не отредактировать мой ответ? Не стесняйтесь, чтобы улучшить его, если вы можете (или написать новый, если он полностью fubar .. :)) Shiki 14 лет назад 0
потому что для расширения вашего ответа на вопрос "как пользоваться обновлением rc.d" я бы вырезал и вставил ответ, с которым я связан. Вот почему я разместил ссылку на комментарий. (Я писал отдельный курс и наткнулся на эту ссылку.) quack quixote 14 лет назад 0
Ну ладно ... посмотри на твой ответ. Я думаю, скоро удаляю мою. :) Shiki 14 лет назад 0
0
Tobu

Вот справочная страница update-rc.d . По сути, удаление ссылок rc.d не будет работать, так как они будут восстановлены при обновлении. Правильный путь:

sudo update-rc.d tor disable 

Который переименовывает ссылки S (начало) в /etc/rc?.d в ссылки K (остановка). Это также будет работать:

sudo rename 's:/S:/K:g' /etc/rc?.d/S*tor 

Похожие вопросы