Warum sind init.d-Skripte in etc?

16

Ich lese / höre ständig, /etcwas für Systemkonfigurationsdateien gilt. Kann mir jemand erklären / eine Vorstellung davon geben, warum diese Skripte, die verschiedene Programme starten / stoppen / neu starten, normalerweise /etcanstelle von /varoder in /usrähnlicher Form vorliegen?

Adam Thompson
quelle
Obwohl die Frage leicht meinungsorientiert sein könnte, denke ich, dass die Frage mit tatsächlichen Fakten beantwortet werden kann.
Julie Pelletier
Sind Fragen zu historischen Gründen "meinungsbasiert"? Rückblickend gibt es wahrscheinlich einen sachlichen Grund, warum etwas passiert ist. Auch wenn es nur "weil Mr. Grandhacker es so gemacht hat", ist es nicht die Meinung von irgendjemandem , der die Frage jetzt beantwortet .
Ilkkachu
Abgesehen davon, dass die Frage lautete "warum sollten sie", was ein Auslöser für meinungsbasierte "bunte Diskussionen" ist. Ein bisschen bearbeitet, um es weniger zu machen. @Adam, kehren Sie zurück, wenn Sie der Meinung sind, dass dies Ihrer Absicht widerspricht.
Ilkkachu
1
Denn wann und wie Dienste starten, hängt von der Systemkonfiguration ab.
Hör auf, Monica
1
Für hysterische Rosinen.
TMN

Antworten:

22

Schon früh (sowohl historisch als auch beim Booten ...) war dies /etcein Teil von /(dem ersten gemounteten Dateisystem), während /usres nicht war (bis die Festplatten groß wurden). /varEnthält temporäre Daten, während diese Skripte nicht temporär sind.

Es ist nicht so einfach, aber es begann so und es gibt wenig Grund, das gesamte Verzeichnislayout zu überarbeiten.

Thomas Dickey
quelle
1
Wie Sie sagen, ist es nicht so einfach. Verschiedene kommerzielle UNIX-Systeme hatten /etcirgendwann tatsächlich ausführbare Binärdateien . Zumindest init.dhandelt es sich meistens um Skripte auf modernen Systemen. Es ist aber immer noch nicht möglich, /etcreadonly gemountet zu haben .
Satō Katsura
2
@SatoKatsura: Mit dem Aufkommen kompilierter Sprachen, die sich wie Skriptsprachen anfühlen, bemerkte ich, dass einige / etc-Skripte (sogar Init-Skripte) durch go-Programme ersetzt wurden - binäre ausführbare Dateien.
Slebetman
Es ist auch interessant zu bemerken, dass moderne sysVinit-Ersetzungen tatsächlich einfache Konfigurationsdateien anstelle von vollwertigen Skripten verwenden, so dass /etcmöglicherweise nicht- konfigurierte Inhalte entfernt werden .
GnP
/tmphält temporäre Daten. /varhält variable Daten
Neil McGuigan
14

Startskripte sind eigentlich ein wichtiger Bestandteil der Systemkonfiguration.

Auch wenn der Startvorgang viel weniger angepasst ist als vor 15 bis 30 Jahren und der größte Teil der Startkonfiguration automatisiert wurde, sind alle administrativen Optionen, die die Startreihenfolge bestimmen, immer noch vorhanden /etc.

Dies ist eine sehr zentralisierte Möglichkeit, die Systemkonfiguration zu verwalten und zu sichern. Auf den meisten Systemen ist ein Backup /etcausreichend, um eine Neuinstallation des gesamten Systems zu ermöglichen. Sie führen einfach eine vollständige Neuinstallation mit den erforderlichen Programmen durch und stellen Ihre /etcSicherung wieder her.

Julie Pelletier
quelle
3

M. Dickey und M. Pelletier haben sich beide in die Räumlichkeiten der Frage eingekauft. Aber die Prämissen sind falsch.

Wenn Sie gelesen haben, dass /etces sich um Systemkonfigurationsdateien handelt, haben Sie etwas gelesen, das nicht das vollständige Bild für Sie darstellt. Schau dir den Namen an. Es ist "et cetera". Die Leute haben irgendwann einmal alles in die Spüle gesteckt.

  • /etc/rc Früher wurde (und wird auf manchen Systemen immer noch) das Programm ausgeführt, um alles zu starten.
  • Die Programm-Image-Datei für den ersten Benutzerprozess befand sich /etc/initan einer Stelle (in XENIX war zum Beispiel lange vor dem Start noch eine Idee).
  • /etc/profile,, /etc/zprofileund der Rest sind definitiv Skripte.
  • OpenBSD /etc/netstartist ein Programm; wie ist FreeBSD /etc/ipfw.rules.
  • FreeBSD /etc/rc.suspendund /etc/rc.resume; und in der Tat /etc/rc.sendmail, /etc/rc.bsdextendedund /etc/rc.firewall.

Wenn Sie gelesen haben, dass "Skripte, die verschiedene Programme starten / stoppen / neu starten, normalerweise /etcanstelle von /varoder /usroder ähnlichem" sind, haben Sie etwas anderes gelesen, das nicht das vollständige Bild für Sie darstellt.

  • Die FreeBSD / PC-BSD-Konvention sieht ein /usr/local/etc/rc.d/Verzeichnis für Nicht-Betriebssystem- rcSkripte vor. rcSkripte für alle möglichen Dinge leben dort und nicht darunter /etc.
  • Sie werden daemontools-Familie Menschen setzen einige Service - Management die Dinge in finden /var/sv, /var/serviceund ähnliche Orte. (Mein nosh-Toolset enthält beispielsweise fast tausend Service-Bundles /var/sv. Die einzigen Service-Bundles, die eingehen /etc/service-bundles, sind die zuvor benötigten 60 bis 70 /usr, einschließlich der Dienste, die bereitgestellt und /usrbei Bedarf überprüft werden.)
  • In den Betriebssystemkonventionen von systemd /etc/systemdist einiges drin /run/systemd, einiges drin , einiges drin/usr/lib/systemd und ( obwohl es aus unanwendbaren Gründen nicht dokumentiert ist ) einiges drin/usr/local/lib/systemd . Auch hier ist der Großteil der "Dinge zum Starten / Stoppen von Diensten" unter /usrund nicht unter zu finden /etc.
JdeBP
quelle
2

Sie sollten den Dateisystem-Hierarchie-Standard überprüfen . Es wird (im Detail) genau erklären, warum dies so ist, aber es enthält auch Informationen zu vielen anderen Pfaden, auf die Sie neugierig sein könnten.

Der Dateisystemstandard wurde für die Verwendung durch Unix-Distributionsentwickler, Paketentwickler und Systemimplementierer entwickelt. Es ist jedoch in erster Linie als Referenz gedacht und kein Tutorial zum Verwalten eines Unix-Dateisystems oder einer Verzeichnishierarchie.

draeath
quelle
Es erklärt nicht den historischen Hintergrund.
Thorbjørn Ravn Andersen
2

Digital UNIX platzierte die Skripte sehr vernünftig unter dem /sbin/init.dVerzeichnis. Und auch HP-UX, laut Rosetta Stone .

Thrig
quelle