GNU/Linux >> Znalost Linux >  >> Linux

Průvodce příkazem Linux „Top“.

Příkaz top umožňuje uživatelům sledovat procesy a využití systémových prostředků v systému Linux. Je to jeden z nejužitečnějších nástrojů v sadě nástrojů správce systému a je předinstalovaný v každé distribuci. Na rozdíl od jiných příkazů, jako je ps , je interaktivní a můžete procházet seznam procesů, ukončit proces a tak dále.

V tomto článku se podíváme na to, jak používat příkaz top.

Obsah

  • 1 Začínáme
  • 2 Vysvětlení rozhraní top:oblast souhrnu

    • 2.1 Systémový čas, doba provozuschopnosti a uživatelské relace
    • 2.2 Využití paměti
    • 2.3 Úkoly
    • Využití procesoru 2.4
    • 2,5 Průměrná zátěž
  • 3 Pochopení rozhraní top:oblast úkolů
  • 4 hlavní příklady použití příkazů

    • 4.1 Procesy zabíjení
    • 4.2 Třídění seznamu procesů
    • 4.3 Zobrazení seznamu vláken místo procesů
    • 4.4 Zobrazení úplných cest
    • 4.5 Výhled do lesa
    • 4.6 Výpis procesů od uživatele
    • 4.7 Filtrování prostřednictvím procesů
    • 4.8 Změna výchozího vzhledu statistik CPU a paměti
    • 4.9 Uložení nastavení
  • 5 Závěr

Začínáme

Jak jste již možná uhodli, pro spuštění top:

stačí zadat toto
top

Tím se spustí interaktivní aplikace příkazového řádku, podobná té na obrázku níže. Horní polovina výstupu obsahuje statistiky procesů a využití zdrojů, zatímco spodní polovina obsahuje seznam aktuálně běžících procesů. K procházení seznamu můžete použít klávesy se šipkami a klávesy Page Up/Down. Pokud chcete skončit, jednoduše stiskněte „q“.

Existuje celá řada variant top, ale ve zbytku tohoto článku budeme hovořit o nejběžnější variantě — té, která je dodávána s balíčkem „procps-ng“. Můžete to ověřit spuštěním:

top -v

Pokud máte tuto variantu, zobrazí se to ve výstupu, například takto:

procps-ng version 3.3.10

V horním rozhraní se toho děje docela dost, takže si to v další části rozebereme kousek po kousku.

Rozhraní top:oblast souhrnu

Jak jsme již dříve viděli, výstup top je rozdělen do dvou různých sekcí. V této části článku se zaměříme na prvky v polovině výstupu. Tato oblast se také nazývá „souhrnná oblast“.

Systémový čas, doba provozuschopnosti a uživatelské relace

Úplně vlevo nahoře na obrazovce (jak je vyznačeno na snímku obrazovky výše), nahoře se zobrazuje aktuální čas. Následuje uptime systému, který nám říká dobu, po kterou systém běžel. Například v našem příkladu je aktuální čas „15:39:37“ a systém běží 90 dní, 15 hodin a 26 minut.

Následuje počet aktivních uživatelských relací. V tomto příkladu jsou dvě aktivní uživatelské relace. Tyto relace mohou být prováděny buď na TTY (fyzicky v systému, buď prostřednictvím příkazového řádku nebo desktopového prostředí) nebo PTY (jako je okno emulátoru terminálu nebo přes SSH). Ve skutečnosti, pokud se přihlásíte k systému Linux prostřednictvím desktopového prostředí a poté spustíte emulátor terminálu, zjistíte, že budou aktivní dvě relace.

Pokud chcete získat další podrobnosti o aktivních uživatelských relacích, použijte who příkaz.

Využití paměti



Část „paměť“ zobrazuje informace týkající se využití paměti systému. Řádky označené „Mem“ a „Swap“ zobrazují informace o RAM a odkládacím prostoru. Jednoduše řečeno, swapovací prostor je část pevného disku, která se používá jako RAM. Když se využití paměti RAM téměř zaplní, málo používané oblasti paměti RAM jsou zapsány do odkládacího prostoru a připraveny k pozdějšímu načtení v případě potřeby. Protože je však přístup k diskům pomalý, přílišné spoléhání na odkládání může poškodit výkon systému.

Jak byste přirozeně očekávali, hodnoty „total“, „free“ a „used“ mají svůj obvyklý význam. Hodnota „avail mem“ je množství paměti, kterou lze přidělit procesům, aniž by došlo k dalšímu odkládání.

Linuxové jádro se také snaží různými způsoby zkrátit dobu přístupu k disku. Udržuje „disk cache“ v RAM, kde jsou uloženy často používané oblasti disku. Kromě toho se zápisy na disk ukládají do „vyrovnávací paměti disku“ a jádro je nakonec zapíše na disk. Celková spotřebovaná paměť je hodnota „buff/cache“. Může to znít jako špatná věc, ale ve skutečnosti tomu tak není – paměť používaná mezipamětí bude v případě potřeby přidělena procesům.

Úkoly

Sekce „Úlohy“ zobrazuje statistiky týkající se procesů běžících ve vašem systému. „Celková“ hodnota je jednoduše celkový počet procesů. Například na výše uvedeném snímku obrazovky běží 27 ​​procesů. Abychom porozuměli ostatním hodnotám, potřebujeme trochu pozadí toho, jak linuxové jádro zpracovává procesy.

Procesy provádějí kombinaci práce vázané na I/O (jako je čtení disků) a práce vázané na CPU (jako je provádění aritmetických operací). CPU je nečinný, když proces provádí I/O, takže operační systémy se během této doby přepnou na provádění jiných procesů. Kromě toho OS umožňuje, aby se daný proces spouštěl po velmi krátkou dobu, a pak se přepne na jiný proces. Takto se OS jeví, jako by byly „multitasking“. To vše vyžaduje, abychom sledovali „stav“ procesu. V Linuxu může být proces v těchto stavech:

  • Runnable (R):Proces v tomto stavu se buď spouští na CPU, nebo je přítomen ve frontě běhu a je připraven ke spuštění.
  • Přerušitelný spánek (S):Procesy v tomto stavu čekají na dokončení události.
  • Nepřerušitelný režim spánku (D):V tomto případě proces čeká na dokončení I/O operace.
  • Zastaveno (T):Tyto procesy byly zastaveny signálem řízení úlohy (např. stisknutím Ctrl+Z) nebo proto, že jsou sledovány.
  • Zombie (Z):Jádro udržuje různé datové struktury v paměti, aby sledovalo procesy. Proces může vytvořit řadu podřízených procesů a ty mohou skončit, když je rodič stále nablízku. Tyto datové struktury však musí být zachovány, dokud rodič nezíská stav podřízených procesů. Takové ukončené procesy, jejichž datové struktury jsou stále kolem, se nazývají zombie.

Procesy ve stavu D a S jsou zobrazeny jako „spící“ a procesy ve stavu T jako „zastaveno“. Počet zombie se zobrazuje jako hodnota „zombie“.

Využití CPU

Sekce využití CPU ukazuje procento času CPU stráveného různými úlohami. us hodnota je čas, který CPU stráví prováděním procesů v uživatelském prostoru. Podobně sy hodnota je čas strávený spouštěním procesů kernelspace.

Linux používá k určení priority procesu hodnotu „nice“. Proces s vysokou hodnotou „hezký“ je „hezčí“ pro ostatní procesy a má nízkou prioritu. Podobně procesy s nižším „hezkým“ dostávají vyšší prioritu. Jak uvidíme později, výchozí hodnotu „nice“ lze změnit. Čas strávený prováděním procesů s ručně nastaveným „nice“ se zobrazí jako ni hodnotu.

Následuje id , což je doba nečinnosti CPU. Většina operačních systémů přepne CPU do úsporného režimu, když je nečinný. Následuje wa hodnota, což je čas, který CPU stráví čekáním na dokončení I/O.

Přerušení jsou signály do procesoru o události, která vyžaduje okamžitou pozornost. Hardwarová přerušení obvykle používají periferní zařízení k informování systému o událostech, jako je stisk klávesy na klávesnici. Na druhé straně jsou softwarová přerušení generována kvůli specifickým instrukcím prováděným na procesoru. V obou případech je zvládá operační systém a čas strávený zpracováním hardwarových a softwarových přerušení je dán hi a si respektive.

Ve virtualizovaném prostředí je část prostředků CPU přidělena každému virtuálnímu počítači (VM). Operační systém zjistí, kdy má práci udělat, ale nemůže ji provést, protože CPU je zaneprázdněn na jiném virtuálním počítači. Množství času ztraceného tímto způsobem je „ukrást“ čas, zobrazený jako st .

Průměrné zatížení

Průměrná část zatížení představuje průměrnou „zátěž“ za jednu, pět a patnáct minut. „Zatížení“ je míra množství výpočetní práce, kterou systém vykonává. V Linuxu je zatížením počet procesů ve stavech R a D v daném okamžiku. Hodnota „průměrné zátěže“ vám poskytuje relativní míru toho, jak dlouho musíte čekat, než budou věci hotové.



Podívejme se na několik příkladů pro pochopení tohoto konceptu. Na jednojádrovém systému průměrná zátěž 0,4 znamená, že systém dělá pouze 40 % práce, kterou může udělat. Průměrná zátěž 1 znamená, že systém je přesně na kapacitě — systém bude přetížen přidáním byť jen malého kousku práce navíc. Systém s průměrnou zátěží 2,12 znamená, že je přetížen o 112 % více práce, než dokáže zvládnout.

Na vícejádrovém systému byste měli nejprve vydělit průměrnou zátěž počtem jader CPU, abyste získali podobnou míru.

Navíc „průměrná zátěž“ není ve skutečnosti typický „průměr“, který většina z nás zná. Je to „exponenciální klouzavý průměr“, což znamená, že malá část předchozích průměrů zatížení je započítána do aktuální hodnoty. Pokud vás to zajímá, tento článek obsahuje všechny technické podrobnosti.

Rozhraní top:oblast úkolů

Souhrnná oblast je poměrně jednodušší a obsahuje seznam procesů. V této části se seznámíme s různými sloupci zobrazenými ve výchozím výstupu top.

  • PID

Toto je ID procesu, jedinečné kladné celé číslo, které identifikuje proces.

  • UŽIVATEL

Toto je „účinné“ uživatelské jméno (které se mapuje na ID uživatele) uživatele, který proces zahájil. Linux přiděluje procesům skutečné uživatelské ID a efektivní uživatelské ID; druhý umožňuje procesu jednat jménem jiného uživatele. (Například uživatel bez oprávnění root může povýšit na root, aby si mohl nainstalovat balíček.)

  • PR a NI

Pole „NI“ zobrazuje „hezkou“ hodnotu procesu. Pole „PR“ zobrazuje prioritu plánování procesu z pohledu jádra. Hodnota nice ovlivňuje prioritu procesu.

  • VIRT, RES, SHR a %MEM

Tato tři pole souvisí se spotřebou paměti procesy. „VIRT“ je celkové množství paměti spotřebované procesem. To zahrnuje kód programu, data uložená procesem v paměti, stejně jako všechny oblasti paměti, které byly odloženy na disk. „RES“ je paměť spotřebovaná procesem v RAM a „%MEM“ vyjadřuje tuto hodnotu jako procento celkové dostupné RAM. Konečně „SHR“ je množství paměti sdílené s jinými procesy.

  • S

Jak jsme viděli dříve, proces může být v různých stavech. Toto pole zobrazuje stav procesu v jednopísmenné formě.

  • TIME+

Toto je celkový čas procesoru spotřebovaný procesem od začátku, s přesností na setiny sekundy.

  • PŘÍKAZ

Sloupec COMMAND zobrazuje názvy procesů.

Nejlepší příklady použití příkazů

Dosud jsme diskutovali o top rozhraní. Může však také řídit procesy a můžete ovládat různé aspekty výstupu top. V této části si uvedeme několik příkladů.

Ve většině příkladů níže musíte stisknout klávesu, když je top spuštěn. Mějte na paměti, že tyto stisky kláves rozlišují velká a malá písmena – takže pokud stisknete „k“, když je zapnutý Caps Lock, ve skutečnosti jste stiskli „K“ a příkaz nebude fungovat, nebo uděláte něco úplně jiného.

Zabíjení procesů

Pokud chcete ukončit proces, jednoduše stiskněte „k“, když běží top. Tím se zobrazí výzva, která bude vyžadovat ID procesu procesu a stisknete enter.

Dále zadejte signál, pomocí kterého má být proces ukončen. Pokud toto necháte prázdné, top použije SIGTERM, který umožňuje procesy plynule ukončit. Pokud chcete násilně zabít proces, můžete sem napsat SIGKILL. Zde můžete také zadat číslo signálu. Například číslo pro SIGTERM je 15 a SIGKILL je 9.

Pokud necháte ID procesu prázdné a přímo stisknete Enter, ukončí se proces na prvním místě v seznamu. Jak jsme již zmínili, můžete se posouvat pomocí kláves se šipkami a tímto způsobem změnit proces, který chcete zabít.

Řazení seznamu procesů

Jedním z nejčastějších důvodů, proč používat nástroj jako top, je zjistit, který proces spotřebovává nejvíce zdrojů. Seznam můžete seřadit stisknutím následujících kláves:

  • „M“ pro řazení podle využití paměti
  • „P“ pro řazení podle využití procesoru
  • „N“ pro řazení podle ID procesu
  • „T“ pro řazení podle doby běhu

Ve výchozím nastavení nahoře zobrazuje všechny výsledky v sestupném pořadí. Můžete však přepnout na vzestupné pořadí stisknutím „R“.

Seznam můžete také seřadit pomocí -o přepínač. Chcete-li například seřadit procesy podle využití procesoru, můžete tak učinit pomocí:

top -o %CPU

Stejným způsobem můžete seznam seřadit podle kteréhokoli z atributů v oblasti souhrnu.

Zobrazení seznamu vláken místo procesů

Již dříve jsme se dotkli toho, jak Linux přepíná mezi procesy. Procesy bohužel nesdílejí paměť ani jiné zdroje, takže takové přepínače jsou poměrně pomalé. Linux, stejně jako mnoho jiných operačních systémů, podporuje „odlehčenou“ alternativu zvanou „vlákno“. Jsou součástí procesu a sdílejí určité oblasti paměti a další zdroje, ale lze je spouštět souběžně jako procesy.

Ve výchozím nastavení top zobrazuje ve svém výstupu seznam procesů. Chcete-li místo toho vypsat vlákna, stiskněte „H“, když je spuštěn top. Všimněte si, že na řádku „Úkoly“ je místo toho uvedeno „Vlákna“ a zobrazuje počet vláken místo procesů.

Možná jste si všimli, že se žádný z atributů v seznamu procesů nezměnil. Jak je to možné, když se procesy liší od vláken? Uvnitř linuxového jádra jsou vlákna a procesy zpracovávány pomocí stejných datových struktur. Každé vlákno má tedy své vlastní ID, stav a tak dále.

Pokud se chcete vrátit zpět do procesního zobrazení, stiskněte znovu „H“. Kromě toho můžete použít -H přepnout na zobrazení vláken ve výchozím nastavení.

top -H

Zobrazení úplných cest

Ve výchozím nastavení top nezobrazuje úplnou cestu k programu ani nerozlišuje mezi procesy v kernelspace a procesy v uživatelském prostoru. Pokud tyto informace potřebujete, stiskněte „c“, když je top spuštěn. Dalším stisknutím tlačítka „c“ se vrátíte k výchozímu nastavení.

Procesy Kernelspace jsou označeny hranatými závorkami kolem nich. Jako příklad na výše uvedeném snímku obrazovky jsou dva procesy jádra, kthreadd a khelper . Na většině instalací Linuxu jich bude obvykle o něco více.

Případně můžete také začít nahoře s -c argument:

top -c

Výhled na les

Někdy možná budete chtít vidět hierarchii procesů podřízený-rodič. Můžete to vidět v zobrazení lesa stisknutím ‚v‘/‘V‘ za běhu nahoře.

Jak můžete vidět z výše uvedeného snímku obrazovky, systemd proces byl první, který se v systému spustil. Spustil procesy jako sshd , což zase vytvořilo dalších sshd procesy a tak dále.

Výpis procesů od uživatele

Chcete-li zobrazit procesy od určitého uživatele, stiskněte „u“, když je spuštěn top. Poté zadejte uživatelské jméno nebo jej nechte prázdné, aby se zobrazily procesy pro všechny uživatele.

Alternativně můžete spustit příkaz top s -u přepínač. V tomto příkladu jsme uvedli všechny procesy od uživatele root.

top -u root

Filtrování prostřednictvím procesů

Pokud máte mnoho procesů, se kterými můžete pracovat, jednoduché řazení nebude dost dobře fungovat. V takové situaci se můžete pomocí top's filtrování zaměřit na několik procesů. Chcete-li aktivovat tento režim, stiskněte „o“/„O“. Nahoře se zobrazí výzva a zde můžete zadat výraz filtru.

Výraz filtru je příkaz, který určuje vztah mezi atributem a hodnotou. Některé příklady filtrů jsou:

  • COMMAND=getty :Filtrovat procesy, které obsahují „getty“ v atributu COMMAND.
  • !COMMAND=getty :Filtrovat procesy, které nemají „getty“ v atributu COMMAND.
  • %CPU>3.0 :Filtrovat procesy, které využívají CPU více než 3 %.

Po přidání filtru můžete věci dále omezovat přidáním dalších filtrů. Chcete-li vymazat všechny přidané filtry, stiskněte „=“.

Změna výchozího vzhledu statistik CPU a paměti

Pokud jste většinou doma v prostředí GUI, možná se vám nebude líbit výchozí způsob zobrazování statistik CPU a paměti. Můžete stisknout „t“ a „m“ pro změnu stylu statistiky CPU a paměti. Zde je snímek obrazovky nahoře, kde jsme jednou stiskli „t“ a „m“.

Pokud opakovaně stisknete „t“ nebo „m“, budete procházet čtyřmi různými pohledy. V prvních dvou stizích cyklicky prochází dva různé typy ukazatelů průběhu. Pokud stisknete klávesu potřetí, ukazatel průběhu se skryje. Pokud znovu stisknete klávesu, vrátí se zpět výchozí textové čítače.

Uložení nastavení

Pokud jste provedli nějaké změny ve výstupu top, můžete je uložit pro pozdější použití stisknutím „W“. top zapíše svou konfiguraci do .toprc soubor ve vašem domovském adresáři.

Závěr

Příkaz top je mimořádně užitečný pro monitorování a správu procesů v systému Linux. Tento článek jen poškrábe povrch a je toho docela dost, co jsme nepokryli. Existuje například mnohem více sloupců, které můžete přidat nahoru. Pro všechny tyto věci se nezapomeňte podívat na manuálovou stránku spuštěním man top ve vašem systému.


Linux
  1. Průvodce linuxovým terminálem pro začátečníky

  2. Zvládněte příkaz Linux ls

  3. Linuxový příkaz ps

  1. Jak používat Linux ftp Command

  2. Vyhledejte příkaz v Linuxu

  3. Průvodce linuxovým příkazem „Najít“.

  1. Jak používat htop ke sledování procesů systému Linux

  2. Příkaz k vypnutí Linuxu

  3. Příkaz Pgrep v Linuxu