Nagłówek wygląda następująco:
#!/bin/sh -e
#
# rc.local - executed at the end of each multiuser runlevel
#
# Make sure that the script will "exit 0" on success or any other
# value on error.
Jaki jest powód tego pliku (nie zawiera dużo) i jakie polecenia zwykle w nim umieszczasz? Co to jest „poziom uruchamiania dla wielu użytkowników”? (Chyba rc
„uruchom polecenia”?)
debian
configuration
startup
Emanuel Berg
źródło
źródło
Odpowiedzi:
Poziom pracy jest stan systemu, ze wskazaniem, czy jest on w trakcie uruchamiania lub restartowania lub wyłączania lub w trybie pojedynczego użytkownika, czy działa normalnie. Tradycyjny program init obsługuje te akcje, przełączając się na odpowiedni poziom działania. W systemie Linux poziomy uruchamiania są zgodne z konwencją :
Poziomy pracy od 2 do 5 są znane jako poziomy pracy dla wielu użytkowników, ponieważ pozwalają na zalogowanie się wielu użytkownikom, w przeciwieństwie do poziomu pracy 1, który jest przeznaczony tylko dla administratora systemu.
Kiedy zmienia się poziom działania, init uruchamia skrypty rc (w systemach z tradycyjnym init - istnieją alternatywy, takie jak Upstart i Systemd ). Te skrypty rc zwykle uruchamiają i zatrzymują usługi systemowe i są dostarczane przez dystrybucję.
Skrypt
/etc/rc.local
jest przeznaczony do użytku przez administratora systemu. Jest to tradycyjnie wykonywane po uruchomieniu wszystkich normalnych usług systemowych, pod koniec procesu przełączania na poziom uruchamiania dla wielu użytkowników. Możesz go użyć do uruchomienia usługi niestandardowej, na przykład zainstalowanego serwera/usr/local
. Większość instalacji nie potrzebuje/etc/rc.local
, jest przewidziana w mniejszości przypadków, w których jest potrzebna.źródło
rc.local
nie nadawałem się z tego powodu. Ponieważ oryginalne pytanie dotyczy Debiana, ten komentarz jest prawdopodobnie nieistotny dla OP.rc.local
był tradycyjnie uruchamiany jako ostatni, ale widzę, że FreeBSD przestał to robić po przejściu na system oparty na zależnościach. Pamiętaj, że nawet jeślirc.local
zostanie wywołany później/etc/rc.d/sshd
, nie zadziała to idealnie:rc.local
zostanie wywołany wkrótce po rozpoczęciusshd
procesu, można go wywołać, zanimsshd
zacznie słuchać sieci (ale rozmawiamy o dziesiątych części sekundy w najczęściej w typowej konfiguracji).iptables-apply /root/iptables
. Właśnie zastanawiam się, co jest nie tak (czekam na następny restart). Ale jeśli masz jakieś sugestie, jestem cała w uszach.rc
oznacza „kontrolę biegu”,Poziom działania
multiuser
byłby zdefiniowany jako poziom dostępności sieci, a zatem połączenia z serwerem mogłyby być nawiązywane za pomocą tych usług zamiast przewodowych połączeń konsoli.Pamiętaj, że serwerami zarządza zazwyczaj procesor serwisowy (pod różnymi nazwami), który obsługuje połączenia sieciowe, a z kolei działa tak, jakbyś miał konsolę przewodową.
Jeśli chodzi o
rc.local
plik, jest to wygodna funkcja pozwalająca na określenie wszystkich „lokalnych” (specyficznych dla witryny) obiektów (demonów i / lub skryptów uruchamianych przy rozruchu), które chcesz uruchomić. Możesz użyć tego paradygmatu lub właściwie wypełnić /etc/init.d odpowiednio skryptami start / stop.źródło
Używam go głównie do dwóch rzeczy:
aby zapisać datę i wersję jądra każdego ponownego uruchomienia. prosty jednowarstwowy, który można łatwo dodać do systemu bez konieczności grzebania się w nim ... i znacznie mniej podatny na uszkodzenie historii uruchamiania niż uruchomienie
uptimed
.aby ożywić stary katalog /etc/rc.boot/, który był w Debianie jeszcze kilka lat temu. Wciąż mam tam kilka prostych skryptów, które nie są warte przepisywania jako skrypt init.d (np. Skrypt Q&D do wysyłania dmesg do roota, a inny do używania hdaparm do wyłączania bezczynnego spindown i blockdev do ustawiania read- rozmiar z wyprzedzeniem) i cieszę się, że mogą być uruchamiane po wszystkich innych skryptach uruchamiających się podczas uruchamiania.
na przykład
Ponadto napisałem /etc/rc.local skrypty dla dystrybucji centos i debian, aby uzyskać metadane w stylu ec2 z openstack (on
http://169.254.169.254/
), aby maszyny wirtualne otrzymywały swoje IP, nazwę hosta, klucze ssh i inne informacje specyficzne dla instancji . cloud-init został już przeniesiony do tych dystrybucji, więc skrypty są już przestarzałe.źródło
rc.local
Plik na Debianie jest głównie pod kątem zgodności z systemami typu non-startowych. Nie powinieneś go używać.Zamiast tego zaleca się skopiowanie
/etc/init.d/Skeleton
do nowego skryptu inicjującego w celu zmiany tego, co ma się zdarzyć podczas zmiany poziomów uruchamiania, a następnie użycie go winserv
celu włączenia.Aktualizacja: zgodnie z poniższym komentarzem ta odpowiedź nie jest już zalecana. Jednak ta odpowiedź została opublikowana kilka lat przed wycofaniem szkieletu, a szkielet ten nadal istnieje w Debianie niestabilny od stycznia 2019 r.
źródło
/etc/init.d/skeleton
to nie jest droga.