Poznaj system Linux: katalog /etc/init.d

Jeśli używasz Linuksa, najprawdopodobniej słyszałeś o katalogu init.d. Ale co dokładnie robi ten katalog? Ostatecznie robi jedną rzecz, ale robi to jedną rzecz dla całego systemu, więc init.d jest bardzo ważny. Katalog init.d zawiera wiele skryptów start / stop dla różnych usług w twoim systemie. Wszystko od acpid do x11-common jest kontrolowane z tego katalogu. Oczywiście nie jest to takie proste.

Jeśli spojrzysz na katalog / etc, znajdziesz katalogi w postaci rc # .d (gdzie # jest liczbą odzwierciedlającą określony poziom inicjalizacji - od 0 do 6). W każdym z tych katalogów znajduje się wiele innych skryptów kontrolujących procesy. Skrypty te zaczną się od litery „K” lub „S”. Wszystkie skrypty „K” są uruchamiane przed skryptami „S”. I w zależności od tego, gdzie znajdują się skrypty, określi, kiedy skrypty zostaną zainicjowane. Pomiędzy katalogami usługi systemowe działają jak dobrze naoliwiona maszyna. Ale są chwile, kiedy trzeba rozpocząć lub zatrzymać proces w sposób czysty i bez użycia poleceń kill lub killall. Właśnie tam przydatny jest katalog /etc/init.d .

Teraz, jeśli używasz dystrybucji takiej jak Fedora, możesz znaleźć ten katalog w /etc/rc.d/init.d . Niezależnie od lokalizacji służy temu samemu celowi.

Aby ręcznie kontrolować dowolny skrypt w init.d, musisz mieć dostęp do roota (lub sudo). Każdy skrypt będzie uruchamiany jako polecenie, a struktura polecenia będzie wyglądać następująco:

/etc/init.d/command OPCJA

Gdzie polecenie jest właściwym poleceniem do uruchomienia, a OPCJA może być jedną z następujących czynności:

  • początek
  • zatrzymać
  • przeładować
  • uruchom ponownie
  • wymuszone przeładowanie

Najczęściej będziesz używał opcji start, stop lub restart. Jeśli chcesz zatrzymać sieć, możesz wydać polecenie:

/etc/init.d/networking stop

Lub jeśli wprowadzisz zmianę w sieci i musisz ją zrestartować, możesz to zrobić za pomocą następującego polecenia:

/etc/init.d/networking restart

Niektóre z bardziej powszechnych skryptów inicjujących w tym katalogu to:

  • sieć
  • samba
  • apache2
  • ftpd
  • sshd
  • gołębnik
  • mysql

Oczywiście w twoim katalogu mogą być częściej używane skrypty - zależy to od tego, co zainstalowałeś. Powyższa lista została zaczerpnięta z instalacji Ubuntu Server 8.10, więc standardowa instalacja na pulpicie zawiera kilka skryptów mniej sieciowych.

Ale co z /etc/rc.local

Jest trzecia opcja, z której często korzystałem. Ta opcja jest skryptem /etc/rc.local . Ten plik jest uruchamiany po uruchomieniu wszystkich innych skryptów poziomu inicjującego, więc można bezpiecznie wprowadzać różne polecenia, które chcesz wydać podczas uruchamiania. Wiele razy umieszczam w tym skrypcie instrukcje montażu dla rzeczy takich jak nfs. Jest to również dobre miejsce do umieszczania skryptów „rozwiązywania problemów”. Na przykład, kiedy miałem maszynę, z której powodu z jakiegoś powodu samba nie chciała się uruchomić. Nawet po sprawdzeniu, czy demon Samba został skonfigurowany do inicjalizacji podczas uruchamiania. Zamiast więc spędzać z tym cały swój czas, po prostu umieściłem wiersz:

/etc/init.d/samba start

w skrypcie /etc/rc.local, a Samba działała jak urok. W końcu wrócę i nie będę mógł rozwiązać tego problemu.

Końcowe przemyślenia

Linux jest elastyczny. Linux jest tak elastyczny, że prawie, nieuchronnie, istnieje wiele sposobów rozwiązania jednego problemu. Uruchomienie usługi systemowej jest jednym z takich problemów. Z pomocą systemu /etc/init.d (jak również /etc/rc.local ) możesz być pewny, że Twoja usługa się uruchomi.