Seznamte se s Linuxem: Adresář /etc/init.d

Pokud používáte Linux, pravděpodobně jste už slyšeli o adresáři init.d. Ale co přesně tento adresář dělá? Nakonec to dělá jednu věc, ale dělá to jednu věc pro celý váš systém, takže init.d je velmi důležité. Adresář init.d obsahuje řadu skriptů start / stop pro různé služby ve vašem systému. Z tohoto adresáře je řízeno vše od acpid po x11-common . Samozřejmě to není tak jednoduché.

Pokud se podíváte do adresáře / etc, najdete adresáře ve tvaru rc # .d (kde # je číslo odráží specifickou inicializační úroveň - od 0 do 6). V každém z těchto adresářů je řada dalších skriptů, které řídí procesy. Tyto skripty začnou buď „K“ nebo „S“. Všechny skripty „K“ jsou spuštěny před skripty „S“. A podle toho, kde jsou skripty umístěny, určí, kdy se skripty inicializují. Mezi adresáři fungují systémové služby jako dobře naolejovaný stroj. Ale jsou chvíle, kdy musíte proces čistě spustit nebo zastavit a bez použití příkazů kill nebo killall. Zde se hodí adresář /etc/init.d .

Nyní, pokud používáte distribuci jako Fedora, najdete tento adresář v /etc/rc.d/init.d . Bez ohledu na umístění slouží stejnému účelu.

Abyste mohli ručně ovládat některý ze skriptů v init.d, musíte mít přístup root (nebo sudo). Každý skript bude spuštěn jako příkaz a struktura příkazu bude vypadat takto:

/etc/init.d/command OPTION

Kde příkaz je skutečný příkaz ke spuštění a OPTION může být jeden z následujících:

  • Start
  • stop
  • Znovu načíst
  • restart
  • force-reload

Nejčastěji budete používat buď start, stop, nebo restart. Pokud tedy chcete zastavit síť, můžete zadat příkaz:

/etc/init.d/networking stop

Nebo pokud provedete změnu v síti a potřebujete ji restartovat, můžete tak učinit pomocí následujícího příkazu:

/etc/init.d/networking restart

Některé z běžnějších init skriptů v tomto adresáři jsou:

  • vytváření sítí
  • samba
  • apache2
  • ftpd
  • sshd
  • holubník
  • mysql

Ve vašem adresáři samozřejmě mohou být více často používané skripty - záleží na tom, co jste nainstalovali. Výše uvedený seznam byl převzat z instalace Ubuntu Server 8.10, takže standardní instalace na plochu by měla několik méně skriptů typu síťového typu.

Ale co /etc/rc.local

Existuje třetí možnost, kterou jsem používal docela dost. Tato volba je skript /etc/rc.local . Tento soubor se spustí po spuštění všech ostatních skriptů na úrovni inicializace, takže je bezpečné vkládat různé příkazy, které chcete při spuštění vydat. Mnohokrát do tohoto skriptu umístím instrukce pro montáž věcí jako nfs. To je také dobré místo pro umístění skriptů pro odstraňování problémů. Například, když jsem měl stroj, který z nějakého důvodu vypadal, že samba nechce začít. Dokonce ifer kontrola, aby se ujistil, že démon Samba byl připraven k inicializaci při spuštění. Takže místo toho, abych trávil veškerý svůj čas dopředu, jednoduše jsem umístil linii:

/etc/init.d/samba start

v /etc/rc.local skriptu a Samba pracoval jako kouzlo. Nakonec jsem se vrátil a problém s tímto problémem vystřelil.

Závěrečné myšlenky

Linux je flexibilní. Linux je tak flexibilní, že existuje téměř nevyhnutelně mnoho způsobů, jak vyřešit jeden problém. Spuštění systémové služby je jedním z takových problémů. S pomocí systému /etc/init.d (stejně jako /etc/rc.local ) si můžete být docela jisti, že vaše služba začne.