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.localest 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.localpeut mal tourner. Les gens ont été surpris par le fait que systemd ne fonctionne rc.localpas 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.locals'attendant aux anciennes façons de faire, est puis complètement défaits par les goûts de nouvelles udevrègles, NetworkManager, systemd-logind, systemd-resolvedou 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-generatorgé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 rcclone van Smoorenburg System 5 qui a suivi rc.localayant 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 rcsystèmes van Smoorenburg et Upstart, la chose à faire était de créer un rcscript 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 rcscript Mewburn approprié au lieu de l'utiliser /etc/rc.local. Mewburn a rcété introduit par NetBSD 1.5 en 2000.
/etc/rc.localdate de l'époque de la septième édition Unix et avant. Il a été remplacé /etc/inittabet basé rcsur un niveau d'exécution dans AT&T Unix System 3 (avec un peu différent /etc/inittabdans 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-manageret 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 rcsur 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