Linux - Procesy či-li Služby
-
**// Všechny omezené systémové zdroje ( paměť, disky... ) jsou řízeny jádrem. Vše
ostatní v systému jsou procesy. Instalace Linuxu má 5 základních procesů "init",
"inetd", "xinetd", "syslog", "cron".
**// Proces je nezávisle běžící program s vlastními zdroji RAM, CPU tzv.
instance programu. Jeden program může být spuštěn vícekrát - násobná
instance. Vznik nového procesu zajistí systémové volání - služba poskytovaná
jádrem nazvaná "fork" ( větvení, forking ) a jde vlastně o dělení 1 procesu
na 2 a více.
**// Běžící proces se nazývá ( daemon ) démon jestliže po spuštění
opustí kontrolu terminálu z něhož startoval. Se systémem poté komunikuje pomocí
určitých prostředků čili kanálů meziprocesorové komunikace ( IPC - interprocess
communication ) nebo zápisem do systémového protokolu či do jiného
souboru na disk.
**// Procesy běží v jedné ze 7 existujících urovní. 0.úroveň - Pozastavit
spuštění systému. 1.úroveň - Jednouživatelský mód bez připojení sítě.
2.úroveň - Multiuživatelský režim bez NFS. 3.úroveň - Plný
multiuživatelský režim, provoz v textovém rozhraní. 4.úroveň - Nepoužito.
5.úroveň - Jako úroveň 3 s grafickým rozhraním "X Window".
6.úroveň - Restart systému.
Aktivace procesu init a jeho pomocí následná aktivace dalších procesů inetd a xinetd,
syslog, cron je
v různých distribucích v detailech různá. Níže popsané
aktivity init procesu odpovídají distribuci
Red Hat 7.0 CZ / 7.1 US.
Linux - Proces init
-
Po inicializaci jádro pouští 1.proces uživatelské úrovně "/sbin/init". Tento
všem nadřazený rodičovský program má identifikační číslo 1 ( PID
ProcessID ) a je zcela řízen souborem "/etc/inittab".
Soubor "/etc/inittab" aktivuje programy - servery - démony a další procesy.
Jeho obsah závisí na konkrétní distribuci. Aktivuje:
1 / Default úroveň ( runlevel ) používání Linuxu ( initdefault ).
2 / "/etc/rc.d/rc.sysinit" puštěný jen 1 x při BOOT. "init" nastaví základní
konfiguraci systému ( způsob swap, hodiny, kontrola a připoj souborových
systémů... ). "/sbin/update" po inicializaci každých cca 30 vteřin synchronizuje
obsah "cache" vyrovnávacích pamětí s diskem.
3 / "/etc/rc.d/rc" je hlavní start skript spuštěný při jakékoli úrovni běhu
OS s parametrem 0-6 ( odpovídá default úrovni ). Ten pomocí svého parametru spouští
ostatní skripty dané default úrovně. Vše se děje spouštěním systémových služeb -
skriptů z adresáře "/etc/rc.d/init.d/" přes odpovídající symbolické odkazy umístěné
v adresářích nazvaných podle jednotlivých úrovní ( př.:/etc/rc.d/rc3.d ). V názvu
symbolických odkazů je zaneseno pořadí "00-99" a typ "S" či "K" aktivace služby.
Start skript tak spravuje vlastní proces spouštění / ukončení aplikací. Nejprve spustí
služby "K..." s parametrem "stop" s NEJNIŽŠÍ ( 99 ) prioritou a poté "S..." s
parametrem "start" nejprve s NEJVYŠŠÍ ( 00 ) prioritou ...
4 / Poslední spuštěný ( zajištěno pořadím 99 ) "/etc/rc.d/rc.local" umožní
zadat spuštění libovolného systémového příkazu v době zavádění systému.
5 / Způsob ukončení - stisk "CTRL+ALT+DEL" a jeho ošetření.
6 / "getty" a "agetty" - Běží jako několikanásobný proces. Otevírá zařízení
terminál ( konzole, sériová linka ). Monitoruje / naslouchá na terminálu, čeká na
přihlášení uživatele. Spustí program "login" a ten provede přihlášení. Po odhlášení
uživatele od Linuxu se vrátí OS přes proces "init" zpět na start nové instance "getty".
"telinit" příkaz určující, kdy má "init" změnit úroveň běhu. Většinou bývá jen
symbolickým odkazem na samotný "init" a spouští ho převážně automaticky
skripty obstarávající puštění a vypnutí systému.
Linux - Proces inetd a xinetd
-
"inetd" či "xinetd" jsou démoni sítě. Jde v podstatě o "superserver" pro
ostatní síťové procesy. Naslouchá v pozadí a při příchozím požadavku např.
přihlášení klienta z jiného PC ( telnet, ftp ) přidělí nutné systémové zdroje. Obstará
jen služby uvedené v konfiguračním souboru jen v okamžiku jejich požadování
nějakým klientem. Šetří tak systémové zdroje, které by byly při trvalé aktivaci všech
síťových procesů trvale vázány.
K "inetd" je konfiguračním souborem "/etc/inetd.conf". Každý řádek odpovídá
jedné službě. Vypne se zakomentováním řádku "#" a zapne odkomentováním.
Po úpravě "/etc/inetd.conf" je nutný restart démona pomocí "kill -l PID"
nebo "/etc/rc.d/init.d/inet restart" či "... reload" či "killall -l inetd"...
"/etc/inetd.conf" musí korespondovat s "/etc/services" ( nese názvy služeb
+ přiřazené porty ) a s "/etc/protocols" ( definuje protokoly tcp,udp... ).
"/usr/sbin/tcpd" nazvaný TCP Wrapper zprostředkuje spuštění síťové služby.
Po spojení s klientem jménem volané služby převezme požedavek, ověří obsah
"/etc/hosts.deny" a "/etc/hosts.allow" a je-li vše OK, aktivuje službu.
**// - "/etc/hosts.deny" - parametr "ALL@ALL" či "ALL: ALL" zakáže všechny síťové
služby, které používají "TCP Wrapper" na všech PC.
**// - "/etc/hosts.allow" - parametr "ALL" povolí síťové služby na konkrétních PC.
"xinetd" je novější verze "inetd" plnící stejnou funkci. Konfigurační soubor
"/etx/xinetd.conf" je odlišný od staršího formátu "/etc/inet.conf". Skládá
se z bloků. Jeden speciální blok "defaults" obsahuje proměnné platné ve všech
ostatních blocích. Uvedením "includedir" "xinetd" prohledá všechny soubory v
zadaném adresáři jakoby byly součástí "/etc/xinetd.conf". Každá síťová služba má
v adresáři "/etc/xinetd.d" svůj soubor. Vyřazení z činnosti se provede uvedením
"disable = yes" v daném souboru, služba je pak definovaná, ale přesto se
nepoužívá. Pak je ještě nutno provést restart "xinetd" démona takto
"/etc/init.d/xinetd restart".
Některé síťové služby se spouští samostatně, né přes "inetd". Tyto služby či
démoni se zapnou / vypnou grafickým programem "tksysv" nebo textovým
"ntsysv". Lze je spouštět ručně i automaticky skripty z adresáře "/etc/init.d".
Linux - Proces syslog
-
"syslog" je démon zaznamenávající standardními prostředky do protokolů -
log souborů tzv. "žurnálů" různé důležité aktivity, činnost procesů odpojených od
terminálu, varovná hlášení jádra... Soubor "/etc/syslog.conf" určí,
kam se výpisy uloží, zpravidla do adresáře "/var/log". Každá zpráva má označen
"podsystém" - odkud přišla a "prioritu" - jak je důležitá.
"syslogd" - služba je implicitně spojena se síťovým portem a přijímá logové
zprávy ze sítě. Přijímá jen požadavky začínající parametrem "-r".
Linux - Proces cron
-
"cron" ( samotný příkaz "crond" ) umožňuje komuko-li naplánovat spuštění
čehoko-li kdyko-li s přesností jedné minuty. Automatizuje jak jednorázové akce, tak
lépe, opakované úkony.
Každou minutu kontroluje konfigurační soubor "/etc/crontab". Ten obsahuje
seznam událostí, které chce uživatel v zadaný čas pustit.
Před změnou nastavení konfiguračního souboru "/etc/crontab" kontroluje "crond"
oprávnění provedení změn podle "/etc/cron.deny" a "/etc/cron.allow".
"cron" používá interpret příkazů "sh", né často používaný "bash". Při práci
s ním se může prostředí chovat mírně jinak, než jsou běžné zvyklosti.
#
Zpět na úvod této stránky.
Optimalizováno pro rozlišení 1024 x 768 pixelů a 32 bit barev
v grafickém prostředí Linux a MS Windows.