/etc/rc.d vs /etc/init.d

15

/etc/init.dКаталог ubuntu в точности (функционально) эквивалентен тому, что я предполагаю, чтобы быть более стандартным /etc/rc.d/(по крайней мере, для arch)? Есть ли какая-то особая причина, по которой канонически использовался init.d вместо rc.d для сценариев запуска?

Falmarri
источник
1
на самом деле arch linux - единственный дистрибутив, который использует, /etc/rc.dкоторый я видел ... Я подозреваю, что он может быть использован в BSD.
ксенотеррацид
1
это используется в freebsd
wlraider70

Ответы:

16

Ubuntu использует /etc/init.dдля хранения скриптов SysVinit, потому что Ubuntu основан на Debian, и именно это использует Debian. Red Hat использует /etc/rc.d/init.d. Я забыл, что использует Slackware. Там просто нет стандартного местоположения.

Ubuntu находится в процессе переключения с SysVinit на Upstart , который использует файлы конфигурации в /etc/init.

Жиль "ТАК - прекрати быть злым"
источник
2
Извините, но /etc/init.d является стандартом, как часть стандарта SVR4, скопированного стартовыми скриптами Linux.
Rich Homolka
Сайт Upstart утверждает, что Ubuntu использует его с версии 6.10
badp
@badp: Хотя 6.10, все еще использовал сценарии инициализации в стиле SysV в /etc/init.d. Переход /etc/init/*.confначался позже (8.04 все еще был в стиле SysV, 10.04 уже переходил).
Жиль "ТАК - перестань быть злым"
2
Ubuntu переключился с Upstart на systemd с 15.04.
PetroCliff
7

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

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

Были некоторые действительно старые дистрибутивы Linux, которые копировали BSD с /etc/rc.local, но почти никто не использует это больше.

Рич Гомолка
источник
5

Исторически /etc/rc.dдерево каталогов обозначает систему Init, которая следует традиции BSD 4.4 инициализации системы, которую обычно называют системой rcinit. Все современные системы (Free / Open / Net) BSD и Slackware Linux следуют этой традиции.

/etc/init.dДерево каталогов обозначает систему инициализации System V (SysV) , который следует за AT & T UNIX, SunOS, Solaris традиции инициализации системы. Обычно это называется системой SysV Init. Собственно Debian продолжает эту традицию в серии Wheezy, но планирует использовать SystemD в серии Jessie. Исторически RedHat и его производные использовали SysV Init, но больше этого не делают.

Кроме того, со временем особенности обеих схем инициализации были приняты дистрибутивами.

λ Йонас Гораускас
источник
И затем есть AIX с "/etc/rc.d/init.d/". Немного столбца A и немного столбца B.
DarkHeart
0

На самом деле, по крайней мере, в CentOS 6,8 Сантьяго, /etc/init.dэто просто ссылка на /etc/rc.d.

chromechris
источник
Это именно то, что я имел в виду, хаха. Извините за неправильное написание, я отредактировал свой ответ сейчас.
Chromechris
Почему люди понижают голос без объяснения причин? Утверждение, если оно намеренно не имеет значения, все еще может иметь значение или значение для начинающего читателя. Объясните, когда вы отрицаете. Я +1, чтобы отменить эффект -1
Асад Икбал
0

В PuppyLinux есть и /etc/rc.d, и /etc/init.d , которые не являются символической ссылкой. Символьная ссылка - /etc/rc.d/init.d , которая связывает уровень с /etc/init.d (я смотрю на щенка на основе Slackware - есть также на основе Ubuntu и других разновидностей) .) В каждом файле README.txt объясняется их подход.

Марк А. Уильямс
источник
0

Итак, /etc/init.dэто место, где вы можете быстро развернуть скрипт инициализации. Второй шаг к активации этого скрипта - запустить на нем chkconfigкоманду. Скажем, вы запускаете chkconfig --add <yourscript>, символические ссылки будут созданы между /etc/init.d/<yourscript>и/etc/rc.d/rcX.d/S50<script>например. X в rcX.d представляет номер уровня выполнения сценария, а S50 представляет тип сценария (существует два из этих типов: S & K, S указывает системе запустить сценарий при загрузке, а K указывает системе: после завершения работы корректно выйдите из сценария. Число после S / K представляет порядок, в котором это происходит, если у вас есть несколько сценариев, которые зависят от того, будут ли другие активны в первую очередь). По умолчанию, если в сценарии не указан уровень запуска или когда вы вводите команду уровня запуска, CentOS6 создает сценарии S50 для уровней запуска 2,3,4,5 и K50 для уровней выполнения 0,1,6.

chromechris
источник