GNU/Linux >> Znalost Linux >  >> Linux

Jaké je spojení mezi adresáři /etc/init.d a /etc/rcX.d v Linuxu?

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 nahrazeno K nebo S , což znamená, zda má být skript killed nebo started v aktuální úrovni běhu
  • xx je číslo objednávky
  • abcd 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.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  3. UNIX / Linux :Jaká je správná oprávnění adresářů /tmp a /var/tmp

  1. Co je Anacron a použití Anacronu v Linuxu

  2. Příkaz grpck – Odstraňte poškozené nebo duplicitní položky v souborech /etc/group a /etc/gshadow.

  3. LANG=C je v řadě skriptů /etc/init.d/*. Co dělá LANG=C a proč je potřeba nastavit LANG=C.

  1. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Rozdíl mezi ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

  3. Jaký je rozdíl mezi /tmp a /run?