Správa systémových procesů

Každý spuštěný program v systému GNU/Linux je složen z jednoho nebo více procesů. Ten v systému alokuje určité množství paměti a systémových prostředků. Podívejme se, jak s procesy pracovat.



Základem je zjištění toho, jaké procesy vůbec v našem systému běží. K tomu slouží příkaz ps, avšak v základní podobě vypíše pouze námi spuštěné procesy v právě otevřeném terminálu. Pro podrobnější výpis je vhodné použít atributy aux, kde a vypisuje všechny procesy spuštěné na terminálu, x zobrazuje procesy od terminálu odpojené a u zobrazuje informaci, pod jakým uživatelem je daný proces spuštěn.


$ ps aux
USER      PID   %CPU  %MEM    VSZ    RSS    TTY  STAT  START  TIME     COMMAND   
root            1    0.0    0.0    24328    1984    ?       Ss    Aug02   0:01      /sbin/init   
root            2    0.0    0.0          0         0    ?        S    Aug02    0:00     [kthreadd]   
root            3    0.0    0.0          0         0    ?        S    Aug02    0:11     [ksoftirqd/0]  
dovenull  1132    0.0    0.0    19876    2748    ?        S    15:31    0:00     dovecot/imap-login   
vmail      1133    0.0    0.0    29480    2768    ?        S    15:31    0:00     dovecot/imap  
dovenull  1136    0.0    0.0    19876    2748    ?        S    15:31    0:00     dovecot/imap-login  
vmail      1139    0.0    0.0    30000    3128    ?        S    15:31    0:00     dovecot/imap   
dovecot  1476    0.0    0.0     8952     920     ?        S    Aug02    0:02     dovecot/anvil   


Jednotlivé sloupce jsou samy o sobě dostatečně výmluvné, avšak zaměřme se na druhý sloupec. Každý spuštěný proces má vždy přidělený unikátní číselný identifikátor, podle něhož lze proces volat. Tento identifikátor označujeme PID a nalezneme jej právě ve druhém sloupci ve výpisu.


Pro zajímavost a pochopení vzájemné provázanosti běžících aplikací si také můžeme nechat vypsat stromovou strukturu. K tomu využijeme nástroj pstree.


Správa systémových procesů - obrázek

Veškeré tyto informace jsou užitečné především v okamžiku, kdy se operační systém chová nestandardně a chceme odhalit příčinu, která často spočívá v přílišném vytěžování systému některými procesy anebo chceme zkrátka jen "natvrdo" některý proces ukončit.


Existuje několik způsobů jak s procesy pracovat a ovlivňovat jejich chování (přidávat/ubírat jim systémové prostředky apod.), avšak tím hlavním, se kterým se setkáte nejčastěji, je potřeba okamžitého ukončení běhu procesu - ať už z důvodu chyby, vytěžování prostředků anebo zkrátka jen v rámci ladění aplikace.


K tomu použijeme signál kill, který lze procesu zaslat i stejnojmenným příkazem. Jako argument mu zadáme pouze příslušný identifikátor (PID) a proces by se měl sám ukončit.


$ kill 12345

Signál kill se snaží o "slušné ukončení", takže uzavírá veškeré soubory, uvolňuje alokovanou paměť apod. V případě vážnějších problémů však nemusí k požadovanému ukončení dojít. Pak volíme cestu poněkud tvrdší, a to s atributem -9.


$ kill -9 12345

Takto již bude proces ukončen určitě, avšak bez "úklidu".


V další části se podíváme na správu úloh.



Autor: Jirka Dvořák


Zákaznická
podpora

Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Více...
Souhlasím