Dimentica rc.local
.
Come ho detto su CentOS 7 e su Debian 8 e su Ubuntu 15 :
Stai utilizzando un sistema operativo systemd + Linux. /etc/rc.local
è un doppio meccanismo di compatibilità all'indietro in systemd, perché è un meccanismo di compatibilità all'indietro per un meccanismo che era esso stesso un meccanismo di compatibilità nel rc
clone di Van Smoorenburg System 5 .
L'uso /etc/rc.local
può andare terribilmente storto. Le persone sono state sorprese dal fatto che systemd non funziona rc.local
allo stesso modo, nello stesso posto nel bootstrap, a cui sono abituati. (O si aspettano erroneamente: in effetti, non è durato per ultimo nel vecchio sistema, come sottolinea ancora il manuale di OpenBSD.) Altri sono rimasti sorpresi dal fatto che ciò che hanno impostato rc.local
aspettandosi i vecchi modi di fare le cose, è poi completamente annullato da artisti del calibro di nuove udev
regole, NetworkManager, systemd-logind
, systemd-resolved
, o diversi "kit" s.
Come esemplificato da " Perché" init 0 "si traduce in" Argomenti in eccesso "durante l'installazione di Arch? ", Alcuni sistemi operativi forniscono già systemd senza le funzionalità di retrocompatibilità come il systemd-rc-local-generator
generatore . Mentre Debian conserva ancora le funzionalità di retrocompatibilità , Arch Linux costruisce systemd con esse disattivate . Quindi su Arch e sistemi operativi come questo si aspettano /etc/rc.local
di essere completamente ignorati .
Dimentica rc.local
. Non è la strada da percorrere. Hai un sistema operativo systemd + Linux. Quindi crea una corretta unità di servizio di sistema e non iniziare da un punto che è lontano due livelli di compatibilità all'indietro. (Su Ubuntu e Fedora, viene rimosso tre volte, il rc
clone di Van Smoorenburg System 5 che ne è seguito è rc.local
stato poi sostituito due volte , oltre un decennio fa, prima da start-up e poi da systemd.)
Ricorda anche la prima regola per la migrazione a systemd .
Questa non è nemmeno una nuova idea specifica per systemd. Sui sistemi van Smoorenburg rc
e Upstart, la cosa da fare era creare un corretto rc
script di Van Smoorenburg o un file di lavoro Upstart anziché utilizzarlo rc.local
. Perfino il manuale di FreeBSD fa notare che oggigiorno si crea uno rc
script Mewburn corretto invece di usarlo /etc/rc.local
. Mewburn è rc
stato introdotto da NetBSD 1.5 nel 2000.
/etc/rc.local
risale al tempo della Settima Edizione Unix e precedenti. È stato sostituito da /etc/inittab
e basato su runlevel rc
in AT&T Unix System 3 (con un leggermente diverso /etc/inittab
in AT&T Unix System 5) nel 1983 . Anche questa è ormai storia.
Crea definizioni di servizio native appropriate per il tuo sistema di gestione dei servizi, che si tratti di un pacchetto di servizi per il set di strumenti di nosh service-manager
e system-control
, uno /etc/rc.d/
script per Mewburn rc
, un file di unità di servizio per systemd, un file di lavoro per Upstart, una directory di servizio per runit / s6 / daemontools -encore, o anche una /etc/init.d/
sceneggiatura per van Smoorenburg rc
.
In systemd, tali file di unità di servizio aggiunti dall'amministratore vanno di /etc/systemd/system/
solito (o /usr/local/lib/systemd/system/
raramente). Con nosh service manager, /var/local/sv/
è un luogo convenzionale per i bundle di servizi locali. Mewburn rc
su FreeBSD usa /usr/local/etc/rc.d/
. I file di unità di servizio in pacchetto e i pacchetti di servizi, se li stai realizzando, vanno in luoghi diversi.
Ulteriori letture