Zapomeňme na init.d
nebo rcx.d
a udržet věci velmi jednoduché. Představte si, že programujete program, jehož výhradní odpovědností je spouštět nebo zabíjet další skripty jeden po druhém.
Vaším dalším problémem je však ujistit se, že běží v pořádku. Jak byste to provedli?
A představme si, že tento program nahlédl do scripts
složku pro spouštění skriptů. Chcete-li seřadit prioritu skriptů, pojmenujte je v řekněme číselném pořadí. Toto pořadí určuje vztah mezi init.d
a rc
Jinými slovy init.d
obsahuje skripty ke spuštění a rcX.d
obsahuje jejich příkaz ke spuštění.
X
hodnotu v rcX.d
je úroveň běhu. To by se dalo volně přeložit na aktuální stav OS.
Pokud se ponoříte do rcX.d
skriptů najdete toto formátování:
Xxxabcd
X
je nahrazenoK
neboS
, což znamená, zda má být skriptkilled
nebostarted
v aktuální úrovni běhuxx
je číslo objednávkyabcd
je název skriptu (název je irelevantní, ale kam ukazuje skript, který se spustí)
Pro Linux existuje několik různých init systémů. Mezi hlavní patří SysVinit (tradiční), Upstart (náhrada za Ubuntu) a SystemD (prosazovaný Fedora a Gnome). Adresáře /etc/init.d
a /etc/rc?.d
jsou používány SysVinit. Kniha je může zmiňovat s ohledem na Ubuntu, protože informace jsou trochu staré (Ubuntu používalo SysVinit jako všichni ostatní) nebo protože tyto adresáře stále existují kvůli kompatibilitě.
/etc/init.d
obsahuje spoustu skriptů, z nichž každý obsahuje instrukce pro spuštění a zastavení služby. Některé z těchto služeb je třeba spustit při bootování; ostatní je třeba spustit ve víceuživatelském režimu, ale ne v režimu údržby pro jednoho uživatele; a je možné definovat různé režimy s různými sadami požadovaných služeb. SysVinit to spravuje prostřednictvím runlevelů. Adresář /etc/rc$N.d
obsahovat skripty, které se mají spustit při zadání úrovně běhu N (/etc/rc$N.d/S*
) a skripty, které se mají spustit při opuštění úrovně běhu N (/etc/rc$N.d/K*
). Protože mnoho úrovní běhu má skripty společné, místo aby se ukládaly kopie skriptů pro každou úroveň běhu, jsou všechny skripty uloženy na jednom místě /etc/init.d
a adresáře specifické pro úroveň běhu /etc/rc?.d
obsahují symbolické odkazy. Dále názvy symbolických odkazů udávají, zda má být služba spuštěna (S*
) nebo zastaveno (zabito, K*
) v této úrovni běhu a číselná předpona se používá k řízení pořadí, ve kterém jsou skripty prováděny.
Skript zodpovědný za procházení /etc/rc$N.d
je /etc/init.d/rc
(na Ubuntu před spuštěním a na Debianu; umístění se může u jiných distribucí Linuxu lišit).
/etc/init.d
je adresář, kam patří init skripty.
etc/rcX.d
je místo, kde jsou odkazy, které řídí, které služby jsou ukončeny nebo spuštěny při vstupu na úroveň běhu X
. Soubory ve formátu rcX.d
začínající na K se provádějí s parametrem stop
a soubory začínající S
jsou prováděny s parametrem start
. Typické je pořadí spuštění a zastavení pomocí dvoumístného čísla za K
nebo S
. Aby bylo zajištěno správné pořadí spuštění a zastavení, je běžné, že součet dvou sekvencí je 100.
Programy lze zakázat na úrovni běhu odstraněním odkazů nebo změnou velikosti písmen K
nebo S
na k
nebo s
.
EDIT:Administrátoři obvykle spouštějí skripty z /etc/init.d
což může být symbolický odkaz na jiný adresář v závislosti na distribuci. (Různá distribuce mají různé standardy.)
rcX.d
jsou používány inicializačním kódem ke změně úrovní běhu.