Skripty v adresáři /etc/init.d se dělí do dvou kategorií:
to je případ startu a korektního zastavení systému
(např. klávesovou kombinací
Ctrl-Alt-Return)
Vykonání těchto skriptů je definováno v
/etc/inittab.
to se stane při změně úrovní běhu. Spustí se skript /etc/init.d/rc volající správné skripty ve správném pořadí.
Skripty pro změnu úrovně běhu se rovněž nalézají v adresáři /etc/init.d,
ale volají se pomocí symbolických odkazů z jednoho z adresářů
počínaje /etc/init.d/rc0.d až po /etc/init.d/rc6.d.
To je velmi názorné a zabraňuje to duplicitě skriptů, použitých
pro více úrovní běhu.
Každý z těchto skriptů se dá volat jako start-skript i stop-skript,
rozlišují proto parametry start
a stop.
Navíc rozlišují skripty parametry
restart, reload, force-reload
a status. Význam všech voleb je v následující tabulce.
Tabulka 8.2. Přehled voleb init skriptů
Volba | Význam |
|---|---|
| Spustit službu. |
| Ukončit službu. |
| Pokud služba běží, ukončit ji a znovu spustit, pokud neběží, pouze spustit. |
| Znovu načíst konfiguraci služby, aniž by se zastavovala a spouštěla. |
| Totéž jako |
| Zobrazit aktuální status. |
Příklad:
Při opuštění úrovně běhu 3 je skript
/etc/init.d/rc3.d/K40network jedním ze spuštěných skriptů.
Program /etc/init.d/rc volá
skript /etc/init.d/network s parametrem stop.
Při vstupu do úrovně běhu 5 se spustí tentýž skript, ale
s parametrem start.
Odkazy v podadresářích pro jednotlivé úrovně běhu slouží pouze k tomu, aby umožnily přiřadit skripty úrovním běhu.
Vytvoření a odstranění potřebných odkazů provádí program insserv při instalaci a deinstalaci balíků. Podrobnosti najdete v manuálové stránce tohoto programu.
V dalším odstavci najdete krátký popis startovacího a ukončovacího skriptu spolu s řídicím skriptem:
Spouští se při startu systému přímo z programu init.
Je nezávislý na požadované výsledné úrovni běhu
a provádí se pouze jednou.
Spustí se démon jádra, který zajistí zavedení modulů jádra.
Zkontrolují se souborové systémy,
zruší se některé nadbytečné soubory v adresáři /var/lock
a síť se nakonfiguruje pro loopback device
(pokud je to nastaveno v souboru /etc/rc.config).
Dále se nastaví systémový a PnP hardware pomocí
nástroje isapnp.
Pokud se stane chyba při automatické opravě souborového systému, má systémový administrátor možnost po zadání hesla zadat další informace přispívající k jejímu odstranění.
Dále se vykonají všechny skripty v adresáři /etc/init.d/boot.d
začínající písmenem S.
Je to proto vhodné místo pro vaše rozšíření o ty kroky,
které by měl systém dělat pouze při startu.
Nakonec se spustí skript boot.local.
Zde můžete přidat další příkazy, které se mají provést při startu,
než se začne zvyšovat úroveň běhu. Funkční obdobou v dosových
systémech je soubor AUTOEXEC.BAT.
Všeobecná nastavení při přechodu z jednouživatelského režimu single user mode na libovolnou vyšší úroveň běhu, například rozložení kláves a konfigurace konzole.
Tento skript se spouští při přechodech na úrovně běhu 0 nebo 6.
Proto se může zavolat jak pod jménem halt,
tak i reboot, a podle předaného jména se systém
znovu nastartuje nebo ukončí.
Řídící skript pro změnu úrovně běhu. Spouští nejprve stop skripty současné úrovně a po nich start skripty nové úrovně.
Do této kostry můžete vhodně zasadit své vlastní skripty. Šablonu na to najdete
v souboru /etc/init.d/skeleton. Pro konfiguraci
spuštění vlastního skriptu v souboru /etc/rc.config
zde vytvořte proměnnou START_služba. Dodatečné parametry
lze uvést v případě potřeby také do souboru /etc/rc.config
(viz např. skript /etc/init.d/gpm).
![]() | Varování |
|---|---|
Při vytvoření vlastních skriptů zachovejte opatrnost. Chybný skript může způsobit nefunkčnost systému. | |
V Linuxu není problém vytvářet vlastní skripty a poměrně jednoduše je integrovat do stávajícího prostředí. Informace o způsobu pojmenování, formátu a organizaci vlastních skriptů najdete ve specifikaci LSB a manuálových stránkách init, init.d a insserv. Zajímavé informace najdete také v manuálových stránkách startproc a killproc.
![]() | Vytváření vlastních init skriptů |
|---|---|
Chyby v init skriptech mohou vést k zamrznutí počítače. Věnujte prosím editaci těchto skriptů maximální pozornost a pokud je to možné, otestujte je. Užitečné informace o init skriptech najdete v části 8.3 – „Úrovně běhu“. | |
Jako šablonu pro svůj nový init skript použijte soubor /etc/init.d/skeleton. Kopii tohoto souboru uložte pod novým jménem a editujte důležité položky jako program, jména souborů, cesty a další detaily. Šablonu samozřejmě můžete rozšířit o vlastní části.
Blok INIT INFO je povinnou částí skriptu a měly by v něm být provedeny příslušné změny:
### BEGIN INIT INFO
# Provides: FOO
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start FOO to allow XY and provide YZ
### END INIT INFO
Na první řádce bloku INFO po řádce Provides:,
uveďte jméno služby nebo programu kontrolovaného nově vytvářeným skriptem. V řádkách Required-Start: a
Required-Stop: uveďte všechny služby, které je nutné spustit a zastavit před startem nebo spuštěním vaší nové služby.
Tyto informace budou později použity při generování jména a čísla skriptu v adresářích úrovní běhu. V Default-Start a Default-Stop uveďte úrovně běhu, kdy se služba má automaticky spustit nebo ukončit. Na konec do řádky Description napište krátký popis služby.
Odkazy z /etc/init.d/ do příslušného adresáře úrovně běhu (/etc/init.d/rc?.d/), vytvoříte zadáním příkazu insserv jmeno_skriptu. Program insserv používá hlavičku INIT INFO pro vytváření důležitých odkazů potřebných pro spuštění a zastavení skriptu v adresářích úrovní běhu (/etc/init.d/rc?.d/). Program se také stará o správné pořadí spuštění a zastavení v určených úrovních běhu. Pokud byste raději používali grafický nástroj, můžete použít editor úrovní běhu v programu YaST, popsaný v sekci 8.6 – „Editor úrovní běhu“.
Pokud již skript v adresáři /etc/init.d/ existuje, můžete ho do existujícího schématu úrovní běhu jednoduše integrovat pomocí programu
insserv nebo povolením příslušné služby v programu YaST. Vámi provedené změny se projeví při následujícím restartu počítače, během kterého dojde k automatickému spuštění nové služby.