Angielska wersja tego artykułu pochodzi od: http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/
1. O /etc/init.d Jeśli kiedykolwiek korzystałeś z systemu Linux, to słyszałeś o katalogu init.d. Do czego dokładnie służy ten katalog? Na koniec dnia robi tylko jedną rzecz, ale nie jest to błaha sprawa – jest wykonywana dla całego systemu, więc jest bardzo ważna. Katalog init.d zawiera wiele skryptów startu i stop dla różnych usług systemu. Steruje wszystkim od accpid po x11-common. Oczywiście, init.d jest dalekie od tego prostego. (Uwaga tłumacza: ACPID to nowy standard zarządzania energią dla systemów operacyjnych Linux; X11 nazywany jest także systemem X Window, system X Window (X11 lub X) to system okienny z wyświetlaniem bitmapowym. Jest to standardowy zestaw narzędzi i protokół do budowania graficznych interfejsów użytkownika na systemach Unix i podobnych do Unixa, a także na OpenVMS, i może być używany niemal we wszystkich nowoczesnych systemach operacyjnych. Patrząc na katalog /etc, znajdziesz wiele katalogów istniejących w formie rc#.d (gdzie # oznacza określony poziom inicjalizacji, zakres wynosi 0~6). W tych katalogach znajduje się wiele skryptów kontrolujących proces. Te pisma zaczynają się albo na "K", albo na "S". Skrypty zaczynające się na K działają przed skryptami zaczynającymi się na S. To, gdzie te skrypty zostaną umieszczone, zdecyduje, kiedy zaczną działać. Dzięki tym katalogom usługi systemowe współpracują ze sobą jak zdrowa maszyna. Jednak czasem chcesz rozpocząć lub zabić proces czysto, bez użycia komend kill lub killall. I właśnie tutaj przydaje się /etc/init.d! Jeśli korzystasz z systemu Fedora, znajdziesz ten katalog: /etc/rc.d/init.d. Właściwie działa to samo, niezależnie od tego, gdzie umieścisz init.d. Aby móc używać skryptów w katalogu init.d, potrzebujesz uprawnień root lub sudo. Każdy skrypt będzie uruchamiany jako polecenie, które jest skonstruowane mniej więcej następująco: /etc/init.d/command option COMAND to faktyczne polecenie, które się uruchamia, a opcje mogą wyglądać następująco: start Stop Przeładowanie Restart Przeładowanie wymuszone W większości przypadków używasz opcji start, stop, restart. Na przykład, jeśli chcesz wyłączyć sieć, możesz użyć takiego polecenia:
/etc/init.d/networking stop Inny przykład to zmiana ustawień sieci i konieczność restartu sieci. Możesz używać takich komend: /etc/init.d/restart sieciowy Najczęściej używane skrypty inicjalizacyjne w katalogu init.d to:
Networking Samba apache2 FTPD SSHD gołębnik mysql Oczywiście możesz mieć inne, bardziej powszechnie używane skrypty, w zależności od zainstalowanego systemu Linuxa. 2. O /etc/rc.local rc.local to też skrypt, którego często używam. Skrypt jest wykonywany po uruchomieniu skryptu na poziomie inicjalizacji systemu, więc bezpiecznie jest dodać skrypt, który chcesz wykonać po uruchomieniu systemu. Często można dodać do niego skrypt NFS mount/mount. Możesz też dodać polecenia skryptowe do debugowania wewnątrz. Na przykład spotkałem się z sytuacją, gdzie usługa samba zawsze nie działa poprawnie, a inspekcja pokazuje, że samba powinna się uruchomić i wykonać podczas uruchamiania systemu, czyli konfiguracja demona samby gwarantuje, że funkcja ta jest poprawnie wykonana. W takim przypadku zwykle nie poświęcam dużo czasu na szukanie dlaczego, po prostu muszę dodać tę linijkę do skryptu /etc/rc.local: /etc/init.d/samba start W ten sposób problem wyjątku usług SAMBA został pomyślnie rozwiązany.
3. Podsumowanie Linux jest elastyczny. Dzięki swojej elastyczności zawsze możemy znaleźć wiele różnych sposobów rozwiązania tego samego problemu. Dobrym przykładem jest uruchomienie usługi systemowej. Dzięki skryptowi w katalogu /etc/init.d, połączonemu z potężnym narzędziem /etc/rc.local, możesz być pewien, że Twoja usługa będzie działać bez zarzutu.
|