Я изучаю командную строку из книги под названием « Командная строка Linux и Shell Scripting Bible, Second Edition ». Книга утверждает это:
Некоторые реализации Linux содержат таблицу процессов, которые запускаются автоматически при загрузке. В системах Linux эта таблица обычно находится в специальном файле / etc / inittabs.
Другие системы (такие как популярный дистрибутив Ubuntu Linux) используют папку /etc/init.d, которая содержит скрипты для запуска и остановки отдельных приложений во время загрузки. Сценарии запускаются через записи в папках /etc/rcX.d, где X - уровень выполнения.
Вероятно, потому, что я новичок в Linux, я не понимал, что означает второй процитированный параграф. Может кто-нибудь объяснить то же самое на более простом языке?
источник
Ответы:
Давайте забудем
init.d
или сделаемrcx.d
все очень просто. Представьте, что вы программируете программу, единственной обязанностью которой является запуск или уничтожение других сценариев один за другим.Однако ваша следующая проблема - убедиться, что они работают по порядку. Как бы вы это сделали?
И давайте представим, что эта программа заглянула внутрь
scripts
папки для запуска скриптов. Чтобы упорядочить приоритет скриптов, вы должны указать их, скажем, в числовом порядке. Этот порядок , что диктует соотношение междуinit.d
иrc
Другими словами,
init.d
содержит сценарии для запуска иrcX.d
порядок их выполнения.X
ЗначениеrcX.d
является уровень выполнения. Это может быть свободно переведено в текущее состояние ОС.Если вы покопаетесь в
rcX.d
скриптах, вы найдете это форматирование:X
заменяется наK
илиS
, что означает, должен ли скрипт бытьkilled
илиstarted
в текущем уровне выполненияxx
номер заказаabcd
это имя скрипта (имя не имеет значения, однако, куда оно указывает, тот скрипт, который будет запущен)источник
Существует несколько разных систем инициализации для Linux. Основными из них являются SysVinit (традиционный), Upstart (замена Ubuntu) и SystemD (выдвинутые Fedora и Gnome). Каталоги
/etc/init.d
и/etc/rc?.d
используются SysVinit. Книга может упоминать их относительно Ubuntu, потому что информация немного устарела (Ubuntu раньше использовала SysVinit, как и все остальные) или потому что эти каталоги все еще существуют для совместимости./etc/init.d
содержит набор сценариев, каждый из которых содержит инструкции для запуска и остановки службы. Некоторые из этих служб должны быть запущены во время загрузки; другие должны запускаться в многопользовательском режиме, но не в однопользовательском режиме обслуживания; и возможно определить различные режимы с различными наборами желаемых услуг. SysVinit управляет этим через уровни запуска . В каталоге/etc/rc$N.d
содержатся сценарии, запускаемые при вводе уровня запуска N (/etc/rc$N.d/S*
), и сценарии, запускаемые при выходе из уровня запуска N (/etc/rc$N.d/K*
). Поскольку многие уровни выполнения имеют общие сценарии, а не хранят копии сценариев для каждого уровня выполнения, все сценарии хранятся в одном месте/etc/init.d
, а специфичные для уровня запуска каталоги/etc/rc?.d
содержат символические ссылки. Кроме того, имена символических ссылок указывают, должен ли сервис запускаться (S*
) или останавливаться (убиватьсяK*
) на этом уровне выполнения, а числовой префикс используется для управления порядком выполнения сценариев.Сценарий, отвечающий за обход
/etc/rc$N.d
:/etc/init.d/rc
(в Ubuntu до запуска и в Debian; расположение может отличаться в других дистрибутивах Linux).источник
/etc/init.d
и/etc/rc?.d
больше, и вместо этого есть Upstart?/etc/init.d
(вместо.conf
файлов Upstart в/etc/init
), поэтому Upstart все еще поддерживает/etc/init.d
и/etc/rc?.d
для совместимости./etc/init.d
каталог, в котором находятся скрипты инициализации.Здесь
etc/rcX.d
ссылки, управляющие тем, какие службы убиты или запущены при входе на уровень выполненияX
. Файлы,rcX.d
начинающиеся с K, выполняются с параметромstop
, а файлы, начинающиеся сS
, исполняются с параметромstart
. Обычно последовательность запуска и остановки заказа состоит из двух цифр послеK
илиS
. Для обеспечения правильного начала и окончания порядка обычно две последовательности добавляют до 100.Программы можно отключить на уровне выполнения, удалив ссылки или изменив регистр
K
илиS
наk
илиs
.РЕДАКТИРОВАТЬ: администраторы обычно запускают сценарии, из
/etc/init.d
которых может быть символическая ссылка на другой каталог, в зависимости от распространения. (Разные дистрибутивы имеют разные стандарты.)rcX.d
Используется в коде инициализации изменить уровни выполнения.источник
/etc/init.d
есть символическая ссылка на каталог под/etc/rc.d/init.d
/etc/init.d
бесполезно без/etc/rcX.d
? И поскольку/etc/rcX.d
контроллер программ, запускаемых при запуске, работает аналогично функции/etc/init.d
, верно?Хотя @BillThor ответил очень хорошо, вот мое понимание
/etc/rcX.d
и/etc/init.d
:/etc/init.d
содержит скрипты для запуска и остановки отдельных приложений во время загрузки./etc/rc?.d
каталоги представляют различные уровни выполнения, а содержащиеся в них сценарии являются не чем иным, как символическими ссылками на фактические сценарии в/etc/init.d
каталоге. Изменение уровней выполнения изменяет режим системы, например, базовый однопользовательский режим, режим «только консоль», расширенный графический интерфейс.Таким образом,
/etc/rc?.d
каталоги не используются без самого/etc/init.d
себя (и, конечно, наоборот).источник