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

15

Le /etc/init.drépertoire d'ubuntu est-il exactement équivalent (fonctionnellement) à ce que je suppose être le plus standard /etc/rc.d/(au moins sur arch)? Y a-t-il une raison particulière pour laquelle canonique utilise init.d au lieu de rc.d pour les scripts de démarrage?

Falmarri
la source
1
en fait, arch linux est la seule distribution qui utilise /etc/rc.dce que j'ai vu ... Je soupçonne qu'il pourrait être utilisé dans bsd.
xenoterracide
1
il est utilisé dans freebsd
wlraider70

Réponses:

16

Ubuntu utilise /etc/init.dpour stocker les scripts SysVinit car Ubuntu est basé sur Debian et c'est ce que Debian utilise. Red Hat utilise /etc/rc.d/init.d. J'oublie ce que Slackware utilise. Il n'y a tout simplement pas d'emplacement standard.

Ubuntu est en train de passer de SysVinit à Upstart , qui utilise des fichiers de configuration dans /etc/init.

Gilles 'SO- arrête d'être méchant'
la source
2
Désolé, mais /etc/init.d est la norme, dans le cadre de la norme SVR4 que les scripts de démarrage Linux ont copié.
Rich Homolka
Le site Web d'Upstart affirme qu'Ubuntu l'utilise depuis la version 6.10
Badp
@badp: Bien que 6.10, toujours utilisé des scripts d'initialisation de style SysV dans /etc/init.d. La transition a /etc/init/*.confcommencé plus tard (8.04 était toujours de style SysV, 10.04 était déjà en transition).
Gilles 'SO- arrête d'être méchant'
2
Ubuntu est passé d'Upstart à systemd depuis le 15.04.
PetroCliff
7

/etc/init.d était l'ancien emplacement historique de SVR4. J'ai oublié pourquoi redhat a ajouté le niveau /etc/rc.d/. Je pense que pour isoler les choses sur rc.d, mais il fallait quand même ajouter un tas de liens symboliques pour une compatibilité descendante. Il y a donc /etc/init.d dans redhat, juste un lien symbolique ailleurs.

L'emplacement standard est donc /etc/init.d, bien qu'il puisse s'agir d'un lien symbolique et non d'un véritable répertoire.

Il y avait de très vieilles distributions Linux qui copiaient BSD avec /etc/rc.local mais pratiquement personne ne l'utilise plus.

Rich Homolka
la source
5

Historiquement, l' /etc/rc.darborescence de répertoires dénote un système Init qui suit la tradition 4.4 BSD d'initialisation du système, qui est généralement appelé le rcsystème init. Tous les systèmes BSD (Free / Open / Net) modernes et Slackware Linux suivent cette tradition.

L' /etc/init.darborescence des répertoires indique le système d'initialisation System V (SysV) qui suit la tradition d'initialisation du système AT&T UNIX, SunOS, Solaris. Ceci est communément appelé le système SysV Init. Debian proprement dit suit toujours cette tradition dans la série Wheezy, mais prévoit d'utiliser SystemD dans la série Jessie. Historiquement, RedHat et ses dérivés ont utilisé SysV Init, mais ne le font plus.

De plus, au fil du temps, les fonctionnalités des deux schémas init ont été adoptées par les distributions.

λ Jonas Gorauskas
la source
Et puis il y a AIX avec "/etc/rc.d/init.d/". Un peu de colonne A et un peu de colonne B.
DarkHeart
0

En fait, au moins dans CentOS 6.8 Santiago, /etc/init.dn'est qu'un lien logiciel vers /etc/rc.d.

chromechris
la source
C'est exactement ce que je voulais dire, haha. Désolé pour la mauvaise orthographe, j'ai modifié ma réponse maintenant.
chromechris
Pourquoi les gens votent-ils sans donner d'explication? La déclaration, sauf intentionnellement non pertinente, peut encore avoir de la valeur ou du sens pour un lecteur novice. Expliquez quand vous votez. I +1 pour annuler l'effet de -1
Asad Iqbal
0

PuppyLinux a à la fois /etc/rc.d et /etc/init.d , aucun n'étant un lien symbolique. Qu'est-ce qu'un lien symbolique est /etc/rc.d/init.d , qui relie un niveau à /etc/init.d (je regarde un chiot basé sur Slackware - il y a aussi des saveurs basées sur Ubuntu et d'autres .) Il y a un fichier README.txt dans chacun, expliquant leur approche.

Mark A. Williams
la source
0

D'accord, /etc/init.dc'est un endroit où vous pouvez rapidement déployer un script d'initialisation. La deuxième étape vers l'activation de ce script consiste à exécuter une chkconfigcommande dessus. Dites que vous courez chkconfig --add <yourscript>, des liens symboliques seront créés entre /etc/init.d/<yourscript>et/etc/rc.d/rcX.d/S50<script>par exemple. X dans rcX.d représentant le numéro de niveau d'exécution du script et S50 représentant le type de script (il existe deux de ces types, S & K, S indique au système de démarrer le script au démarrage et K indique au système de quittez le script avec élégance lorsque vous arrêtez. Le nombre après S / K représente l'ordre dans lequel ceux-ci se produisent, au cas où vous auriez des scripts qui dépendraient des autres actifs en premier). Par défaut, si aucun niveau d'exécution n'est spécifié dans le script ou lorsque vous exécutez la commande runlevel, CentOS6 crée des scripts S50 pour les niveaux d'exécution 2,3,4,5 et K50 pour les niveaux d'exécution 0,1,6.

chromechris
la source