Zapomnij o rc.local
.
Jak powiedziałem o CentOS 7 i Debianie 8 oraz Ubuntu 15 :
Używasz systemu systemd + Linux. /etc/rc.local
jest podwójnym mechanizmem zgodności wstecznej w systemd, ponieważ jest to mechanizm zgodności wstecznej dla mechanizmu, który sam był mechanizmem zgodności w klonie van 5 Smoorenburga System rc
.
Używanie /etc/rc.local
może pójść okropnie źle. Ludzie byli zaskoczeni faktem, że systemd nie działa rc.local
w taki sam sposób, w tym samym miejscu w bootstrapie, do którego są przyzwyczajeni. (Lub błędnie się spodziewałem: w rzeczywistości nie działał ostatni w starym systemie, jak wciąż wskazuje podręcznik OpenBSD.) Inni byli zaskoczeni faktem, że skonfigurowali się, rc.local
oczekując starych sposobów robienia rzeczy, następnie całkowicie cofnięta przez m.in. nowych udev
przepisów, NetworkManager, systemd-logind
, systemd-resolved
, lub różne „zestaw” s.
Jak pokazano na przykładzie „ Dlaczego„ init 0 ”powoduje„ Nadmiar argumentów ”podczas instalacji Arch? ”, Niektóre systemy operacyjne już zapewniają systemd bez funkcji kompatybilności wstecznej, takich jak systemd-rc-local-generator
generator . Podczas gdy Debian nadal zachowuje funkcje kompatybilności wstecznej , Arch Linux buduje systemd z wyłączonymi . Tak więc w Arch i takich systemach operacyjnych oczekuje /etc/rc.local
się całkowitego zignorowania .
Zapomnij o rc.local
. To nie jest droga. Masz systemd + system operacyjny Linux. Stwórz więc odpowiednią usystematyzowaną jednostkę usługową i nie zaczynaj od punktu, który dzieli dwa poziomy kompatybilności wstecznej. (W Ubuntu i Fedorze jest trzy razy usuwany, rc
klon van Smoorenburg System 5 , rc.local
który następnie został dwukrotnie zastąpiony ponad dziesięć lat temu, najpierw przez start-up, a następnie przez systemd.)
Pamiętaj także o pierwszej regule migracji do systemd .
To nie jest nawet nowy pomysł, który jest specyficzny dla systemd. W systemach van Smoorenburg rc
i Upstart trzeba było zrobić odpowiedni rc
skrypt van Smoorenburg lub plik zadania Upstart, a nie używać rc.local
. Nawet podręcznik FreeBSD zauważa, że w dzisiejszych czasach rc
zamiast korzystać z niego, tworzy się odpowiedni skrypt Mewburn /etc/rc.local
. Mewburn rc
został wprowadzony przez NetBSD 1.5 w 2000 roku.
/etc/rc.local
pochodzi z czasów wydania Siódmej Edycji Unix i wcześniejszych. Został on zastąpiony przez /etc/inittab
ATlev rc
i Unix System 3 oparty na poziomie pracy (nieco inny /etc/inittab
w AT&T Unix System 5) w 1983 roku . Nawet to jest teraz historią.
Utwórz właściwe natywne definicje usług dla systemu zarządzania usługami, niezależnie od tego, czy będzie to pakiet usług dla zestawu narzędzi nosh service-manager
i system-control
, /etc/rc.d/
skrypt dla Mewburn rc
, plik jednostki usługi dla systemd, plik zadania dla Upstart, katalog usługi dla runit / s6 / daemontools -cencore, a nawet /etc/init.d/
scenariusz do van Smoorenburga rc
.
W systemie takie pliki dodane przez administratora są /etc/systemd/system/
zwykle (lub /usr/local/lib/systemd/system/
rzadko). Dzięki menadżerowi usług nosh, /var/local/sv/
jest konwencjonalnym miejscem dla lokalnych pakietów usług. Używa Mewburn rc
na FreeBSD /usr/local/etc/rc.d/
. Pliki spakowanych jednostek usług i pakiety usług, jeśli je tworzysz, to jednak idź w różne miejsca.
Dalsza lektura