Dlaczego skrypty init.d są w etc?

16

Ciągle czytam / słyszę, że /etcsą pliki konfiguracyjne systemu. Czy ktoś może wyjaśnić, / daj mi trochę intuicji, dlaczego te skrypty start / stop / restart różne programy są zwykle /etczamiast /varlub /usrlub coś podobnego?

Adam Thompson
źródło
Chociaż pytanie może być nieco zorientowane na opinię, myślę, że na pytanie można odpowiedzieć faktycznymi faktami.
Julie Pelletier
Czy pytania o przyczyny historyczne są „oparte na opiniach”? Patrząc wstecz, prawdopodobnie istnieje jakiś faktyczny powód, dla którego coś się wydarzyło. Nawet jeśli jest to „tylko dlatego, że zrobił to pan Grandhacker”, nie zależy to od opinii nikogo, kto odpowie na pytanie.
ilkkachu
Tyle tylko, że pytanie brzmiało „dlaczego powinny być”, co stanowi impuls do „kolorowych dyskusji” opartych na opiniach. Zmieniono nieco, aby było mniej. @Adam, cofnij, jeśli uważasz, że jest to niezgodne z twoją intencją.
ilkkachu
1
Ponieważ kiedy i jak uruchamiane są usługi, konfiguracja systemu.
OrangeDog,
1
Dla histerycznych rodzynek.
TMN

Odpowiedzi:

22

Na początku (zarówno historycznie, jak i w trakcie uruchamiania ...) /etcjest częścią /(pierwszego zamontowanego systemu plików), podczas gdy /usrnie był (dopóki dyski nie stały się duże). /varprzechowuje dane tymczasowe , podczas gdy te skrypty nie są tymczasowe.

Nie jest to takie proste, ale tak się zaczęło i nie ma powodu, aby przerabiać cały układ katalogu.

Thomas Dickey
źródło
1
Jak mówisz, nie jest to takie proste. Różne komercyjne systemy UNIX miały w /etcpewnym momencie rzeczywiste pliki binarne . Przynajmniej init.dsą to głównie skrypty na nowoczesnych systemach. Ale nadal nie jest możliwe /etczamontowanie tylko do odczytu.
Satō Katsura,
2
@SatoKatsura: Wraz z pojawieniem się skompilowanych języków, które przypominają języki skryptowe, zacząłem zauważać, że niektóre skrypty / etc (nawet skrypty init) są zastępowane przez programy go - binarne pliki wykonywalne.
slebetman
Warto również zauważyć, że współczesne zamienniki sysVinit faktycznie używają prostych plików konfiguracyjnych zamiast pełnoprawnych skryptów, więc /etcmogą zakończyć czyszczenie nie-konfiguracyjnych rzeczy.
GnP
/tmpprzechowuje dane tymczasowe. /varprzechowuje zmienne dane
Neil McGuigan
14

Skrypty startowe są tak naprawdę ważną częścią konfiguracji systemu.

Mimo że proces rozruchu jest znacznie mniej dostosowany niż 15-30 lat temu, a większość konfiguracji uruchamiania została zautomatyzowana, wszystkie wybory administracyjne określające kolejność uruchamiania są nadal dostępne /etc.

Jest to bardzo scentralizowany sposób utrzymania i tworzenia kopii zapasowej konfiguracji systemu. W większości systemów /etcwystarczy wykonać kopię zapasową , aby z łatwością ponownie zainstalować cały system. Wystarczy wykonać pełną ponowną instalację wymaganych programów i przywrócić /etckopię zapasową.

Julie Pelletier
źródło
3

M. Dickey i M. Pelletier dokonali zakupu na terenie pytania. Ale przesłanki są błędne.

Jeśli przeczytałeś, że „ /etcdotyczy plików konfiguracji systemu”, to przeczytałeś coś, co nie pomaluje dla ciebie pełnego obrazu. Spójrz na imię. To „et cetera”. Ludzie włożyli wszystko do zlewu kuchennego w tym czy innym czasie.

  • /etc/rc Kiedyś był (i na niektórych systemach nadal jest) program uruchamiany, aby wszystko uruchomić.
  • Plik obrazu programu dla pierwszego procesu użytkownika był /etc/initw pewnym momencie (na przykład w XENIX, na długo przed początkowym pomysłem).
  • /etc/profile, /etc/zprofilea cała reszta to zdecydowanie skrypty.
  • OpenBSD's /etc/netstartto program; podobnie jak FreeBSD /etc/ipfw.rules.
  • Podobnie jak FreeBSD /etc/rc.suspendi /etc/rc.resume; i rzeczywiście /etc/rc.sendmail, /etc/rc.bsdextendedi /etc/rc.firewall.

Podobnie, jeśli przeczytałeś, że „skrypty uruchamiające / zatrzymujące / restartujące różne programy zwykle znajdują się /etczamiast /varlub /usrlub coś podobnego”, to przeczytałeś coś innego, co nie maluje dla ciebie pełnego obrazu.

  • Konwencja FreeBSD / PC-BSD zakłada /usr/local/etc/rc.d/katalog dla rcskryptów nieoperacyjnych . rcżyją tam skrypty różnych rzeczy, a nie pod nimi /etc.
  • Znajdziesz ludzi daemontools-rodzinnych oddanie kilka rzeczy do zarządzania usługami /var/sv, /var/serviceoraz podobnych miejsc. (Mój zestaw narzędzi nosh, na przykład, zapewnia prawie tysiąc pakietów usług /var/sv. Jedynymi pakietami usług, które wchodzą, /etc/service-bundlessą między 60 a 70, które są potrzebne przed /usrzamontowaniem, w tym usługi, które montują i sprawdzają, /usrjeśli to konieczne.)
  • w konwencjach systemd dotyczących systemu operacyjnego są pewne rzeczy /etc/systemd, niektóre rzeczy /run/systemd, niektóre rzeczy /usr/lib/systemd, i ( chociaż nie jest to dokumentowane z niewłaściwych powodów ) niektóre rzeczy /usr/local/lib/systemd. Ponownie, większość „rzeczy do uruchomienia / zatrzymania usług” można znaleźć /usrraczej pod niż pod /etc.
JdeBP
źródło
2

Dobrze byłoby przejrzeć Standard Hierarchii Systemów Plików . Wyjaśni (szczegółowo) dokładnie, dlaczego tak jest, ale zawiera również takie informacje na temat wielu innych ścieżek, które możesz być ciekawy.

Standard systemu plików został zaprojektowany do użytku przez programistów dystrybucji Unix, twórców pakietów i implementatorów systemów. Jednak ma on przede wszystkim stanowić odniesienie i nie jest instrukcją na temat zarządzania systemem plików lub hierarchią katalogów w systemie Unix.

draeath
źródło
Nie tłumaczy tła historycznego.
Thorbjørn Ravn Andersen