Oubliez rc.local
.
Comme je l'ai dit à propos de CentOS 7 et de Debian 8 et d'Ubuntu 15 :
Vous utilisez un système d'exploitation systemd + Linux. /etc/rc.local
est un mécanisme de double compatibilité descendante dans systemd, car il s'agit d'un mécanisme de compatibilité descendante pour un mécanisme qui était lui-même un mécanisme de compatibilité dans le système van Smoorenburg 5rc
clone .
L'utilisation /etc/rc.local
peut mal tourner. Les gens ont été surpris par le fait que systemd ne fonctionne rc.local
pas de la même manière, au même endroit dans le bootstrap, comme ils sont habitués. (Ou attendez-vous à tort: en fait, il ne fonctionnait pas en dernier dans l'ancien système, comme le souligne encore le manuel d'OpenBSD.) D'autres ont été surpris par le fait que ce qu'ils ont mis en place en rc.local
s'attendant aux anciennes façons de faire, est puis complètement défaits par les goûts de nouvelles udev
règles, NetworkManager, systemd-logind
, systemd-resolved
ou divers « Kit » s.
Comme illustré par « Pourquoi« init 0 »entraîne-t-il des« Arguments excédentaires »lors de l'installation d'Arch? », Certains systèmes d'exploitation fournissent déjà systemd sans les fonctionnalités de compatibilité descendante telles que le systemd-rc-local-generator
générateur . Alors que Debian conserve toujours les fonctionnalités de compatibilité descendante , Arch Linux construit systemd avec elles désactivées . Ainsi, sur Arch et les systèmes d'exploitation comme celui-ci, ils /etc/rc.local
devraient être entièrement ignorés .
Oubliez rc.local
. Ce n'est pas la voie à suivre. Vous avez un système d'exploitation systemd + Linux. Faites donc une unité de service systemd appropriée et ne partez pas d'un point qui est à deux niveaux de compatibilité descendante. (Sur Ubuntu et Fedora, il a été supprimé à trois reprises, le rc
clone van Smoorenburg System 5 qui a suivi rc.local
ayant ensuite été lui-même remplacé deux fois , il y a plus de dix ans, d'abord par un parvenu puis par systemd.)
Souvenez-vous également de la première règle de migration vers systemd .
Ce n'est même pas une nouvelle idée spécifique à systemd. Sur les rc
systèmes van Smoorenburg et Upstart, la chose à faire était de créer un rc
script van Smoorenburg ou un fichier de travail Upstart approprié plutôt que de l'utiliser rc.local
. Même le manuel de FreeBSD note qu'aujourd'hui, on crée un rc
script Mewburn approprié au lieu de l'utiliser /etc/rc.local
. Mewburn a rc
été introduit par NetBSD 1.5 en 2000.
/etc/rc.local
date de l'époque de la septième édition Unix et avant. Il a été remplacé /etc/inittab
et basé rc
sur un niveau d'exécution dans AT&T Unix System 3 (avec un peu différent /etc/inittab
dans AT&T Unix System 5) en 1983 . Même cela appartient désormais à l'histoire.
Créez des définitions de service natives appropriées pour votre système de gestion des services, qu'il s'agisse d'un ensemble de services pour l'ensemble d'outils Nosh service-manager
et system-control
, d'un /etc/rc.d/
script pour Mewburn rc
, d'un fichier d'unité de service pour systemd, d'un fichier de travail pour Upstart, d'un répertoire de service pour runit / s6 / daemontools -encore, ou même un /etc/init.d/
script pour van Smoorenburg rc
.
Dans systemd, ces fichiers d'unité de service ajoutés par l'administrateur entrent /etc/systemd/system/
généralement (ou /usr/local/lib/systemd/system/
rarement). Avec le nosh service manager, /var/local/sv/
est un lieu conventionnel pour les bundles de services locaux. Mewburn rc
sur les utilisations de FreeBSD /usr/local/etc/rc.d/
. Les fichiers d'unité de service et les packs de services, si vous les créez, vont cependant à des endroits différents.
Lectures complémentaires