Jak používat příkaz ps k monitorování procesů Linuxu

Získejte snímek procesů běžících ve vašem počítači se systémem Linux pomocí příkazu ps. Vyhledejte procesy podle názvu, uživatele nebo dokonce terminálu s tolika nebo tak malými detaily, kolik potřebujete. Ukážeme vám jak.

Správa procesů v systému Linux

Srdcem všech operačních systémů Linux a Unix je jádro. Mezi jeho četné povinnosti patří alokace systémových zdrojů, jako je RAM a čas CPU. Ty je třeba žonglovat v reálném čase, aby všechny běžící procesy dostaly svůj spravedlivý podíl, podle priority každého úkolu.

Někdy se úkoly mohou zablokovat, vstoupit do těsné smyčky nebo přestat reagovat z jiných důvodů. Nebo mohou pokračovat v běhu, ale spolykají příliš mnoho času CPU nebo RAM nebo se chovají nějakým stejně antisociálním způsobem. Někdy je třeba úkoly zabít jako milost všem zúčastněným. První krok. Samozřejmostí je identifikace příslušného procesu.

Možná ale nemáte vůbec žádné problémy s úkoly nebo výkonem. Možná vás jen zajímá, jaké procesy běží uvnitř vašeho počítače, a rádi byste nahlédli pod pokličku. Příkaz ps uspokojuje obě tyto potřeby. To vám dává snímek toho, co se děje uvnitř vašeho počítače „právě teď.“

ps je dostatečně flexibilní, aby vám poskytl přesně ty informace, které potřebujete, v přesně takovém formátu, jaký byste chtěli. Ve skutečnosti má ps spoustu možností. Zde popsané možnosti uspokojí většinu běžných potřeb. Pokud potřebujete jít hlouběji do ps, než jsme to vzali v tomto článku, zjistíte, že náš úvod usnadňuje strávení manuálové stránky.

Výpisové procesy

Nejjednodušší způsob, jak použít ps, je spustit jej bez parametrů:

ps

ps zobrazí seznam procesů spuštěných uživatelem, který spustil příkaz.

Čtyři sloupce jsou:

PID: Identifikační číslo procesu procesu.
TTY: Název konzole, na které je uživatel přihlášen.
ČAS: Množství času zpracování CPU, které proces spotřeboval.
CMD: Název příkazu, který spustil proces

Proces výpisu pro všechny uživatele

přidáním -e (vybrat všechny procesy) můžeme vytvořit seznam ps procesů, které byly spuštěny všemi uživateli, nejen uživatelem, který spouští příkaz ps. Protože to bude dlouhý seznam, rozdělíme ho na méně.

ps -e | less

Seznam procesů je přesměrován do méně.

  Jak opravit padající aplikace na iPhonu nebo iPadu

V seznamu máme mnohem více položek, ale vidíme stejné čtyři sloupce jako předtím. Záznamy s otazníkem? ve sloupci TTY nebyly spuštěny z okna terminálu.

Zobrazení hierarchie procesů

Někdy může pomoci zjistit problém nebo identifikovat konkrétní proces, pokud vidíte, které procesy spouštěly jiné procesy. Použijeme k tomu volbu -H (hierarchie).

ps -eH | less

Odsazení označuje, které procesy jsou rodiči kterých jiných procesů.

Abychom přidali trochu více jasnosti, můžeme požádat ps, aby nějaké přidal ASCII čáry a nakreslit hierarchii jako strom. Možností, jak toho dosáhnout, je možnost –forest.

ps -eH --forest | less

To usnadňuje sledování, které procesy jsou rodiči jiných procesů.

Výpis procesů podle názvu

Výstup z ps přes grep můžete propojit s položkami seznamu které mají názvy odpovídající hledanému výrazu. Zde hledáme záznamy, které odpovídají hledanému výrazu „firefox“:

ps -e | grep firefox

V tomto případě je výstupem jedna položka pro proces, který nás zajímá. Pokud bychom spustili několik instancí Firefoxu, samozřejmě by se v seznamu vrátilo více než jedna položka.

Zobrazení více sloupců ve výstupu

Chcete-li do výstupu přidat další sloupce, použijte volbu -f (plný formát).

ps -ef | less

Ve výstupu z ps je zahrnuta další sada sloupců.

Sloupce jsou:

UID: ID uživatele vlastníka tohoto procesu.
PID: ID procesu procesu.
PPID: ID nadřazeného procesu procesu.
C: Počet dětí, které proces má.
STIME: Čas začátku. Čas, kdy proces začal.
TTY: Název konzole, na které je uživatel přihlášen.
ČAS: Množství času zpracování CPU, které proces spotřeboval.
CMD: Název příkazu, který spustil proces.

Použitím volby -F (extra full-format) můžeme získat ještě více sloupců:

ps -eF | less

Sloupce, které tentokrát dostaneme, vyžadují posunutí obrazovky do strany, aby se všechny odhalily.

Stisknutím tlačítka „Šipka doprava“ se displej posune doleva.

Sloupce, které nyní dostáváme, jsou:

UID: ID uživatele vlastníka tohoto procesu.
PID: ID procesu procesu.
PPID: ID nadřazeného procesu procesu.
C: Počet dětí, které proces má.
SZ: Velikost ve stránkách RAM obrazu procesu.
RSS: Velikost rezidentní sady. Toto je neodložená fyzická paměť používaná procesem.
PSR: Procesor, kterému je proces přiřazen.
STIME: Čas začátku. Čas, kdy proces začal.
TTY: Název konzole, na které je uživatel přihlášen.
ČAS: Množství času zpracování CPU, které proces spotřeboval.
CMD: Název příkazu, který spustil proces.

  Musiex přidává banner založený na gestech s ovládacími prvky pro přehrávání hudby [Jailbreak]

Výpis procesů podle ID procesu

Jakmile najdete ID procesu pro proces, který vás zajímá, můžete jej použít s příkazem ps k vypsání podrobností o tomto procesu. Použijte volbu -p (vybrat podle ID procesu), abyste toho dosáhli:

ps -p 3403

Podrobnosti pro tento proces jsou uvedeny:

Nejste omezeni na jedno ID procesu. Můžete poskytnout seznam ID procesů oddělených mezerami.

Výpis procesů podle příkazu

Volba -C (příkaz) vám umožňuje vyhledat proces pomocí názvu příkazu. Tedy název příkazu, který proces spustil. To se mírně liší od příkazového řádku, který může obsahovat názvy cest a parametry nebo možnosti.

ps -C shutter

Jsou uvedeny podrobnosti pro proces závěrky.

Výpis procesů ve vlastnictví uživatele

Chcete-li zobrazit procesy, které vlastní konkrétní uživatel, použijte volbu -u (seznam uživatelů):

ps -u mary

Zobrazí se procesy vlastněné uživatelským účtem mary.

Výpis procesů podle terminálu

Chcete-li zobrazit procesy spojené s TTY, použijte volbu -t (výběr podle TTY). Pokud se použije bez čísla TTY, volba -t hlásí procesy spojené s aktuálním oknem terminálu.

tty
ps -t

Příkaz tty hlásí, že se jedná o pseudo-dálnopis 0. Všechny procesy uvedené pomocí ps -t jsou spojeny s TTY pts/0.

Pokud na příkazovém řádku předáme číslo TTY, měli bychom získat zprávu o procesech spojených s tímto TTY.

ps -t 1

Tentokrát jsou všechny procesy spojené s TTY pts/1.

Výběr sloupců k zobrazení

Pomocí volby -o (formát) můžete vybrat, které sloupce chcete zahrnout do výstupu z ps. Sloupce určíte podle názvu. (Dlouhý) seznam názvů sloupců lze vidět na manuálová stránka v části s názvem „Standardní specifikace formátu“. V tomto příkladu jsme zvolili, že do výstupu bude zahrnut čas CPU (pcpu) a příkazový řádek s argumenty (argumenty).

ps -e -o pcpu,args | less

Výstup obsahuje pouze naše dva požadované sloupce.

Třídění výstupu podle sloupců

Výstup si můžete nechat seřadit pomocí volby –sort. Seřaďme výstup podle sloupce CPU:

ps -e -o pcpu,args --sort -pcpu| less

Pomlčka „-“ v parametru řazení pcpu udává sestupné pořadí řazení.

Chcete-li vidět deset procesů nejnáročnějších na CPU, protáhněte výstup přes hlavu příkaz:

ps -e -o pcpu,args --sort -pcpu | head -10

Získáme seřazený, zkrácený seznam.

Pokud do našeho zobrazení přidáme více sloupců, můžeme třídit podle více sloupců. Přidáme sloupec pmem. Toto je procento paměti počítače, které proces využívá. Bez pomlčky nebo se znaménkem „+“ je řazení vzestupné.

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

Získáme náš extra sloupec a nový sloupec je zahrnut do třídění. První sloupec je řazen před druhým sloupcem a druhý sloupec je řazen vzestupně, protože jsme na pmem nevložili pomlčku.

  Jak získat oznámení pouze pro e-maily, které vás zajímají, v aplikaci Microsoft Outlook

Pojďme to udělat trochu užitečnější a přidat do sloupce ID procesu (pid), abychom viděli číslo procesu každého procesu v našem seznamu.

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Nyní můžeme identifikovat procesy.

Zabíjení procesů podle ID procesu

Pokryli jsme řadu způsobů, jak identifikovat procesy, včetně názvu, příkazu, uživatele a terminálu. Probrali jsme také způsoby, jak identifikovat procesy podle jejich dynamických atributů, jako je využití CPU a paměť.

Tak či onak tedy můžeme identifikovat procesy, které běží. Když známe jejich ID procesu, můžeme (pokud to potřebujeme) zabít kterýkoli z těchto procesů pomocí příkazu kill. Pokud bychom chtěli zabít proces 898, použili bychom tento formát:

sudo kill 898

Pokud vše půjde dobře, proces se tiše ukončí.

Zabíjení procesů podle jména

Příkaz pkill vám to umožňuje zabít procesy podle jména. Ujistěte se, že jste určili správný proces! Tento příkaz ukončí horní proces.

sudo pkill top

Opět platí, že žádná zpráva není dobrá zpráva. Proces je tiše ukončen.

Zabíjení více procesů podle jména

Pokud máte spuštěno několik kopií procesu nebo proces vytvořil řadu podřízených procesů (jako to dokáže Google Chrome), jak je můžete zabít? To je stejně snadné. Používáme příkaz killall.

Máme dvě kopie top running:

ps -e | grep top

Můžeme ukončit oba tímto příkazem:

sudo killall top

Žádná odpověď znamená žádné problémy, takže oba tyto procesy byly ukončeny.

Získejte dynamické zobrazení s horní částí

Výstupem z ps je náhled snímku. Neaktualizuje se. Chcete-li získat aktuální pohled na procesy, použijte příkaz top. Poskytuje a dynamický pohled na procesy běžící ve vašem počítači. Displej se skládá ze dvou částí. V horní části obrazovky je oblast řídicího panelu tvořená řádky textu a tabulka ve spodní části obrazovky tvořená sloupci.

Začněte nahoře tímto příkazem:

top

Sloupce obsahují informace o procesech:

PID: ID procesu
USER: Jméno vlastníka procesu
PR: Priorita procesu
NI: Pěkná hodnota procesu
VIRT: Virtuální paměť používaná procesem
RES: Rezidentní paměť používaná procesem
SHR: Sdílená paměť využívaná procesem
S: Stav procesu. Prohlédněte si níže uvedený seznam hodnot, které toto pole může nabývat
%CPU: podíl času CPU použitého procesem od poslední aktualizace
%MEM: podíl použité fyzické paměti
TIME+: celkový čas procesoru využitý úlohou v setinách sekundy
PŘÍKAZ: název příkazu nebo příkazový řádek (název a parametry příkazového řádku) Pokud sloupec příkazu nevidíte, stiskněte klávesu „šipka vpravo“.

Stav procesu může být jeden z:

D: Nepřerušitelný spánek
R: Běh
S: Spím
T: Vysledováno (zastaveno)
Z: Zombie

Stiskněte klávesu „Q“ pro odchod shora.

Než zabijete proces

Ujistěte se, že je to ten, po kterém toužíte, a ujistěte se, že vám nezpůsobí žádné problémy. Zejména stojí za to zkontrolovat možnosti -H (hierarchie) a –forest, abyste se ujistili, že nemá žádné důležité podřízené procesy, na které jste zapomněli.