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

15

Entspricht das /etc/init.dVerzeichnis von ubuntu genau dem, was ich für den Standard halte /etc/rc.d/(zumindest für arch)? Gibt es einen bestimmten Grund, warum canonical init.d anstelle von rc.d für Startskripte verwendet?

Falmarri
quelle
1
Eigentlich ist Arch Linux die einzige Distribution, die /etc/rc.dich gesehen habe ... Ich vermute, dass sie in BSD verwendet werden könnte.
Xenoterracide
1
es wird in freebsd
wlraider70 verwendet

Antworten:

16

Ubuntu verwendet /etc/init.dSysVinit-Skripte zum Speichern, da Ubuntu auf Debian basiert und genau das verwendet Debian. Red Hat verwendet /etc/rc.d/init.d. Ich vergesse was Slackware benutzt. Es gibt einfach keinen Standardstandort.

Ubuntu wechselt gerade von SysVinit zu Upstart , das Konfigurationsdateien in verwendet /etc/init.

Gilles 'SO - hör auf böse zu sein'
quelle
2
Entschuldigung, aber /etc/init.d ist der Standard, als Teil des SVR4-Standards, den Linux-Startskripte kopiert haben.
Rich Homolka
Die Upstart-Website behauptet, dass Ubuntu sie seit Version 6.10
badp
@badp: Obwohl 6.10, immer noch SysV-artige Init-Skripte in /etc/init.d. Der Übergang zu einem /etc/init/*.confspäteren Zeitpunkt begann (8.04 war immer noch im SysV-Stil, 10.04 war bereits im Übergang).
Gilles 'SO - hör auf böse zu sein'
2
Ubuntu ist seit 15.04 von Upstart auf systemd umgestiegen.
PetroCliff
7

/etc/init.d war der alte historische Speicherort für SVR4. Ich habe vergessen, warum redhat die Ebene /etc/rc.d/ hinzugefügt hat. Ich denke, Dinge auf rc.d zu isolieren, musste dann aber trotzdem eine Reihe von Symlinks hinzufügen, um die Abwärtskompatibilität zu gewährleisten. Es gibt also /etc/init.d in redhat, nur symbolisiert es woanders.

Daher ist der Standardspeicherort /etc/init.d, obwohl es sich möglicherweise um einen Symlink und nicht um ein echtes Verzeichnis handelt.

Es gab einige wirklich alte Linux-Distributionen, die BSD mit /etc/rc.local kopierten, aber so gut wie niemand benutzt das mehr.

Reiche Homolka
quelle
5

Historisch gesehen bezeichnet der /etc/rc.dVerzeichnisbaum ein Init-System, das der 4.4 BSD-Tradition der Systeminitialisierung folgt, die üblicherweise als rcInit-System bezeichnet wird. All das moderne (Free / Open / Net) BSD-System und Slackware Linux folgen dieser Tradition.

Der /etc/init.dVerzeichnisbaum bezeichnet das System V (SysV) -Initialisierungssystem, das der Tradition der Systeminitialisierung von AT & T UNIX, SunOS und Solaris folgt. Dies wird allgemein als SysV Init-System bezeichnet. Das eigentliche Debian folgt immer noch dieser Tradition in der Wheezy-Reihe, plant aber, SystemD in der Jessie-Reihe zu verwenden. In der Vergangenheit haben RedHat und Derivate SysV Init verwendet, aber nicht mehr.

Außerdem wurden im Laufe der Zeit Funktionen beider Init-Schemata von Distributionen übernommen.

λ Jonas Gorauskas
quelle
Und dann gibt es AIX mit "/etc/rc.d/init.d/". Ein bisschen von Spalte A und ein bisschen von Spalte B.
DarkHeart
0

Eigentlich ist zumindest in CentOS 6.8 Santiago /etc/init.dnur ein Softlink zu /etc/rc.d.

Chromechris
quelle
Genau das habe ich gemeint, haha. Entschuldigung für die falsche Schreibweise, ich habe meine Antwort jetzt bearbeitet.
Chromechris
Warum stimmen die Leute ab, ohne eine Erklärung abzugeben? Die Aussage kann, sofern sie nicht absichtlich irrelevant ist, für einen unerfahrenen Leser noch einen Wert oder eine Bedeutung haben. Erklären Sie, wann Sie abstimmen. I + 1, um den Effekt von -1 rückgängig zu machen
Asad Iqbal
0

PuppyLinux hat sowohl /etc/rc.d als auch /etc/init.d und ist auch kein Symlink. Was ein Symlink ist , ist /etc/rc.d/init.d , das eine Ebene mit /etc/init.d verknüpft (ich schaue auf einen Slackware-basierten Puppy - es gibt auch Ubuntu-basierte und andere Varianten) .) In jeder Datei ist eine README.txt enthalten, in der die Vorgehensweise erläutert wird.

Mark A. Williams
quelle
0

Ok, /etc/init.dhier können Sie schnell ein Init-Skript bereitstellen. Der zweite Schritt zur Aktivierung dieses Skripts besteht darin, einen chkconfigBefehl darauf auszuführen . Angenommen, Sie führen chkconfig --add <yourscript>, werden symbolische Links zwischen /etc/init.d/<yourscript>und erstellt/etc/rc.d/rcX.d/S50<script>beispielsweise. X in rcX.d steht für die Runlevel-Nummer des Skripts, und S50 steht für den Skripttyp (es gibt zwei dieser Typen, S & K, S weist das System an, das Skript beim Start zu starten, und K weist das System an, das Skript zu starten Beenden Sie das Skript ordnungsgemäß, wenn Sie es herunterfahren. Die Zahl nach S / K gibt die Reihenfolge an, in der dies geschieht, falls Sie einige Skripte haben, die davon abhängen, dass andere zuerst aktiv sind. Wenn im Skript kein Runlevel angegeben ist oder wenn Sie den Befehl runlevel eingeben, erstellt CentOS6 standardmäßig S50-Skripte für Runlevel 2,3,4,5 und K50 für Runlevel 0,1,6.

Chromechris
quelle