Почему скрипты init.d находятся в etc?


16

Я продолжаю читать / слышать, что /etcдля системных файлов конфигурации. Может кто-нибудь объяснить / дать мне некоторую интуицию, почему эти сценарии, которые запускают / останавливают / перезапускают различные программы, обычно используются /etcвместо /varили, /usrили что-то подобное?


Хотя вопрос может быть слегка ориентированным на мнение, я думаю, что на этот вопрос можно ответить с помощью фактических фактов.
Джули Пеллетье

Являются ли вопросы об исторических причинах «основанными на мнении»? Оглядываясь назад, вероятно, есть какая-то фактическая причина того, почему что-то произошло. Даже если это просто «потому что мистер Грандхакер сделал это так», это не зависит от мнения тех, кто сейчас отвечает на вопрос.
ilkkachu

За исключением того, что в вопросе говорилось «почему они должны быть», что является поводом для основанных на мнении «ярких дискуссий». Немного отредактировано, чтобы сделать это менее. @ Адам, вернись, если чувствуешь, что это противоречит твоим намерениям.
ilkkachu

1
Потому что когда и как запускаются сервисы, это конфигурация системы.
OrangeDog

1
Для истерического изюма.
TMN

Ответы:


22

Ранее (как исторически, так и в процессе загрузки ...), /etcявляется частью /(первой смонтированной файловой системы), пока /usrне было (пока диски не стали большими). /varсодержит временные данные, в то время как эти сценарии не являются временными.

Это не так просто, но все началось именно так, и у нас мало причин для переделки всей структуры каталогов.


1
Как вы говорите, это не так просто. Различные коммерческие системы UNIX имели реальные двоичные исполняемые файлы в тот /etcили иной момент. По крайней мере, init.dэто в основном скрипты на современных системах. Но все еще невозможно /etcподключиться только для чтения.
Satō Katsura

2
@SatoKatsura: С появлением скомпилированных языков, которые напоминают языки сценариев, я начал замечать, что некоторые сценарии / etc (даже сценарии init) заменяются программами go - двоичными исполняемыми файлами.
Slebetman

Также интересно отметить, что современные замены sysVinit на самом деле используют простые конфигурационные файлы вместо полноценных скриптов, так что /etcможет закончиться очистка от неконфигурированных вещей.
GnP

/tmpсодержит временные данные. /varхранит переменные данные
Нил Макгиган

14

Скрипты запуска на самом деле являются важной частью конфигурации системы.

Несмотря на то, что процесс загрузки гораздо менее настроен, чем 15-30 лет назад, и большая часть конфигурации запуска была автоматизирована, все те административные решения, которые определяют последовательность запуска, все еще присутствуют /etc.

Это очень централизованный способ поддержки и резервного копирования конфигурации системы. В большинстве систем резервного копирования /etcдостаточно, чтобы можно было легко переустановить всю систему. Вы просто делаете полную переустановку с необходимыми программами и восстанавливаете свою /etcрезервную копию.


3

М. Дики и М. Пеллетье оба скупились на вопрос. Но предпосылки неверны.

Если вы прочитали, что « /etcэто для файлов конфигурации системы», то вы прочитали что-то, что не рисует полную картину для вас. Посмотри на имя. Это "и так далее". Люди в то или иное время ставили все, кроме кухонной раковины.

  • /etc/rc Раньше (и в некоторых системах все еще) программа запускалась для запуска всего.
  • Файл образа программы для первого пользовательского процесса был /etc/initв какой-то момент (например, в XENIX задолго до того, как выскочка была даже идеей).
  • /etc/profile, /etc/zprofileИ все остальное, безусловно , скрипты.
  • OpenBSD /etc/netstart- это программа; как и FreeBSD /etc/ipfw.rules.
  • То же самое касается FreeBSD /etc/rc.suspendи /etc/rc.resume; и действительно /etc/rc.sendmail, /etc/rc.bsdextendedи /etc/rc.firewall.

Точно так же, если вы прочитали, что «сценарии, которые запускают / останавливают / перезапускают различные программы, обычно используются /etcвместо /varили, /usrили что-то подобное», то вы читали что-то еще, что не рисует полную картину для вас.

  • Соглашение FreeBSD / PC-BSD должно иметь /usr/local/etc/rc.d/каталог для rcсценариев не операционной системы . rcсценарии для всех видов вещей живут там, а не под /etc.
  • Вы найдете Daemontools-семейные человек положить некоторые вещи управления услугами в /var/sv, /var/serviceи тому подобные места. (Мой набор инструментов nosh, для одного примера, предоставляет почти тысячу пакетов услуг /var/sv. Единственные пакеты услуг, которые /etc/service-bundlesвходят в комплект, - это от 60 до 70, которые требуются до /usrмонтирования, включая сервисы, которые монтируют и проверяют /usrпри необходимости.)
  • В соглашениях операционной системы systemd есть некоторые вещи /etc/systemd, некоторые вещи /run/systemd, некоторые вещи /usr/lib/systemd, и ( хотя это недокументировано по неприменимым причинам ) некоторые вещи /usr/local/lib/systemd. Опять же, большинство «вещей для запуска / остановки служб» можно найти под, /usrа не под /etc.

2

Вы бы хорошо, чтобы рассмотреть стандарт иерархии файловой системы . Он объяснит (подробно), почему это так, но также содержит такую ​​информацию по многим другим путям, которые могут вас заинтересовать.

Стандарт файловой системы был разработан для использования разработчиками дистрибутивов Unix, разработчиками пакетов и системными разработчиками. Тем не менее, он в первую очередь предназначен для справки и не является руководством по управлению файловой системой Unix или иерархией каталогов.


Это не объясняет исторический фон.
Турбьёрн Равн Андерсен

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.