Jak v Linuxu vypsat LWP a procesy a podrobně je ovládat

Poslední aktualizace: 17/12/2025
Autor: Isaac
  • Linux Spravuje lehké procesy a vlákna (LWP) jednotným způsobem s konfigurovatelnými limity v /proc a faktory, jako je velikost zásobníku a paměť, které podmiňují maximální počet vláken.
  • Příkazy Příkazy jako ps, top, htop a atop umožňují zobrazit a monitorovat procesy a LWP, zatímco /proc a ps v režimu vlákna usnadňují zjištění počtu vláken na proces.
  • Nástroje jako kill, pkill, nice, renice, strace, lsof, vmstat nebo iostat se používají k řízení, prioritizaci a ladění procesů, čímž se optimalizuje celkový výkon systému.

LWP procesy a vlákna v Linuxu

Pokud spravujete servery nebo často pracujete s Linuxem, dříve či později budete potřebovat Vypisování procesů, lehkých vláken (LWP) a sledování jejich spotřeby zdrojůVědět, co běží, kolik zdrojů to využívá a jak je každý proces organizován, je klíčem k odhalení úzkých míst, výpadků služeb nebo neobvyklého chování systému.

V následujících řádcích najdete velmi kompletního průvodce, ve kterém uvidíme Co jsou procesy a LWP, jak je vypsat, jak zobrazit jejich limity a jak je monitorovat v reálném časeJako základ použijeme klasické příkazy (ps, top, htop…) a také některé pokročilejší techniky s /proc, diagnostické nástroje a nastavení priorit, vše vysvětlené srozumitelnou španělštinou.

Procesy, vlákna a LWP v Linuxu: základní pojmy

V Linuxu, když spustíte program, proces, který je instancí daného programu v pamětispolu se všemi potřebnými zdroji: kódem, daty, deskriptory souborů, zásobníkem atd. Každý proces obdrží jedinečný identifikátor nazývaný PID (Process ID), což je číslo, které pak používáme k jeho monitorování nebo ukončení.

Kromě „normálních“ neboli těžkých procesů jádro zpracovává tzv. lehké závity nebo LWP (lehké procesy)Vlákno s dlouhým oknem (LWP) sdílí mnoho zdrojů (kód, data, otevřené soubory, signály atd.) s ostatními vlákny ve stejném procesu, ale zachovává si vlastní zásobník a kontext provádění. Díky tomu je přepínání kontextu mezi vlákny mnohem levnější než přepínání mezi nezávislými procesy.

Jedna zvláštní věc na Linuxu je, že interně Nerozlišuje striktně mezi procesem a vláknem.Oba jsou spravovány jako úlohy jádra a vlákno je v podstatě „proces“, který sdílí zdroje s ostatními. Neexistují žádné speciální struktury vláken na úrovni jádra jako v jiných systémech. OSV praxi však můžeme LWP použít k dosažení skutečného paralelismu ve vícejádrových systémech.

Tohoto paralelismu se dosahuje rozdělením práce aplikace do více vláken. Každé LWP může běžet na jiném jádru procesoruTo umožňuje programu využít všechna dostupná jádra. Vzhledem k nízkým nákladům na vytváření a přepínání LWP je Linux velmi efektivní při spouštění velkého počtu vláken, pokud respektujeme systémové limity.

Omezení procesů a vláken v Linuxu

Stejně jako u jakéhokoli operačního systému existuje maximální počet úloh, které může jádro zvládat současně. V Linuxu tyto Hranice procesů a vláken jsou zobrazeny jako parametry jádra v rámci pseudo-souborového systému /proc, na trase /proc/sys/kernel/.

Globální limit vláken, které jádro může podporovat, je uložen v souboru /proc/sys/kernel/threads-maxPokud zkontrolujete obsah tohoto souboru pomocí cat o sysctlZískáte maximální počet LWP, které je systém schopen vytvořit, než odmítne spustit další úlohy.

Tato hodnota je obvykle poměrně vysoká u moderních serverů s více jádry a velkým množstvím RAM, zatímco u skromné ​​týmy nebo virtuální stroje malý Můžete se setkat s nižšími čísly. Pokud je tohoto limitu dosaženo a žádné procesy se neukončí, jádro nebude moci vytvářet nové procesy ani vlákna, což může vést k chybám při spouštění služeb nebo příkazů.

Existuje ještě jedno důležité omezení v /proc/sys/kernel/pid_maxToto označuje maximální ID procesu, které lze přiřadit. Tato hodnota v praxi také slouží jako limit pro počet procesů (a v širším smyslu i vláken), které mohou koexistovat, protože Linux s oběma zachází jednotným způsobem. Když čítač PID dosáhne tohoto maxima, začne znovu od nuly a je běžné vidět „opakující se“ PID. časale patřící do zcela jiných procesů.

Výpočet maximálního počtu vláken a úprava zásobníku

Skutečný počet LWP, které můžete mít na systému Linux, závisí nejen na parametrech jádra, ale také na la virtuální paměť dostupné a velikost zásobníku každého vláknaBěžně používaný přibližný vzorec je:

maximální počet vláken ≈ virtuální paměť / (velikost zásobníku × 1024 × 1024)

V tomto výrazu se velikost zásobníku na vlákno obvykle dotazuje pomocí příkazu ulimit -sTato hodnota udává, kolik kilobajtů paměti je rezervováno pro zásobník každého vytvořeného LWP. Větší velikost zásobníku poskytuje větší ochranu před přetečením, ale také Budete moci mít méně souběžných vláken pro stejné množství paměti.

Pokud potřebujete spustit aplikaci s tisíci nebo desítkami tisíc vláken, mohlo by to být zajímavé. zmenšit velikost zásobníku na vlákno pomocí znovu ulimit (například ve skriptech bota nebo systémové služby), pokud kód aplikace nevyžaduje obrovské zásobníky.

  Pomalý výkon po povolení synchronizace: příčiny a řešení

Stručně řečeno, počet LWP v Linuxu je omezen: parametry jádra (threads-max, pid_max), velikost zásobníku na vlákno a celková dostupná paměťPečlivou úpravou těchto faktorů můžete škálovat počet souběžných vláken bez ohrožení stability systému.

Základní příkazy pro výpis procesů a LWP

Pro zahájení práce s procesy a vlákny v Linuxu je klasickým nástrojem příkaz ps, který zobrazuje stav procesů Je to snímek v čase (ne v reálném čase). Na rozdíl od grafického monitoru je jeho výstup statický: pokud chcete aktualizované informace, jednoduše jej restartujete.

s ps žádné možnosti Uvidíte pouze procesy propojené s aktuálním shellem. Chcete-li získat všechny systémové procesyvčetně těch, kteří nemají terminál související, obvyklé použití je:

ps aux

V tomto výstupu uvidíte mimo jiné údaje vlastníka uživatele, PID, procento využití CPU a RAM, doba provádění a příkaz s nímž byl každý proces spuštěn. Je to spousta informací, ale je to nezbytné pro lokalizaci úloh, které spotřebovávají hodně zdrojů počítače.

Některé užitečné kombinace ps Pro větší kontrolu nad tím, co se zobrazuje, se používají následující:

  • ps -e o ps -A: vypíše všechny aktivní procesy v obecném formátu UNIX.
  • ps -u nombre_usuario: zobrazuje pouze procesy konkrétního uživatele.
  • ps -axjf: zobrazuje výstup v hierarchickém formátu a vnořuje podřízené procesy pod jejich rodiče.
  • ps -C nombre_proceso: filtruje podle názvu příkazu a zahrnuje přidružené podřízené procesy.

Další běžnou možností je použití ps aux | grep patrón zachovat pouze procesy, které obsahují daný text, například webový démon, databázový engine nebo skript Konkrétně je to velmi pohodlný způsob, jak na první pohled najít to, co hledáte, aniž byste se museli ztrácet ve stránkách a stránkách výsledků.

Monitorování v reálném čase pomocí funkcí top a htop

Pokud potřebujete vidět, jak se procesy mění v reálném čase, příkaz star je top, který zobrazuje dynamický monitor činnosti systému. Na rozdíl od psVýstup je průběžně aktualizován a zobrazuje využití CPU, využití paměti, průměrné zatížení, počet aktivních úloh a uspořádaný seznam procesů.

Jednoduchým spuštěním topZobrazí se procesy seřazené podle využití CPU. Můžete změnit pořadí podle jiných polí, filtrovat, ukončit procesy nebo změnit priority stisknutím různých kláves v samotném rozhraní (kombinace se mohou mírně lišit v závislosti na verzi, ale obvykle jsou uvedeny dole).

Typickým způsobem, jak se zaměřit na nejtěžší procesy, je použití příkazu jako:

top -o %CPU

Takhle to umístíte navrch procesy, které spotřebovávají nejvíce CPUcož je velmi užitečné, když něco začalo prudce zvyšovat využití procesoru a chcete rychle najít viníka.

Pokud dáváte přednost něčemu vizuálnějšímu, můžete si nainstalovat htop, vylepšená verze topu s interaktivním rozhranímBarevné pruhy a navigace pomocí klávesnice a myši. V mnoha distribucích budete muset nejprve nainstalovat pomocí správce balíčků, například:

sudo apt-get install htop

Po instalaci spustíte htop a budete mít barevně odlišený pohled na zatížení jádra, paměti, swapu a tabulku procesů, kde můžete Posouvejte se svisle a vodorovně, filtrujte podle uživatele, měňte priority nebo ukončujte procesy bez nutnosti ručního zadávání PID..

Monitorování zdrojů pomocí atopu

Pro podrobnější analýzu výkonu, zejména na serverech, je k dispozici nástroj atop, který zaznamenává a zobrazuje aktivitu všech procesů s vysokou úrovní detailů. Jedná se o celoobrazovkový textový nástroj, který se zaměřuje na vývoj zátěže a využití zdrojů v čase.

Když hodíš atopUvidíte statistiky CPU, paměť, swap, disky a síť které se obvykle obnovují každých 10 sekund. Navíc může zůstat aktivní na pozadí několik dní a ukládat historii, kterou si můžete později prohlédnout a analyzovat problém, který se v minulosti vyskytl.

Mezi jeho výhody patří schopnost skupinová spotřeba podle uživatele nebo podle názvu procesuZvýrazněte červeně kritické zdroje, kterých dochází, zobrazte procesy, které již byly dokončeny, ale jsou stále relevantní v protokolu, a sledujte interní vlákna (LWP) v rámci každého procesu.

V mnoha distribucích se instaluje s konkrétní balíčky; například:

sudo apt install atop
sudo dnf install atop

Po instalaci stačí spustit atop začít na úrovni procesů sledovat spotřebu CPU, paměti, disku a sítě a být tak schopen s značnou přesností detekovat, která komponenta systém zahlcuje.

Jak zobrazit počet vláken (LWP) na proces

Pokud vás zajímá, kolik Lehké příze mají specifický proces.Linux nabízí několik způsobů, jak tyto informace získat. První zahrnuje kontrolu pseudo-souborového systému. /proc, kde jádro zpřístupňuje interní data pro každou úlohu.

  Xlibre: X11 fork, který znovu otevírá debatu o budoucnosti linuxového desktopu

V /proc/<PID>/ najdete soubor status, který zahrnuje pole VláknaPřečtením tohoto souboru můžete rychle zjistit, kolik LWP proces s daným PID vytvořil, spolu s mnoha dalšími podrobnostmi, jako je stav, spotřeba paměti a možnosti.

Jiný způsob použití /proc Jde o to podívat se na obsah adresáře /proc/<PID>/task/V této cestě jádro vytvoří podadresář pro každé vlákno patřící do procesu. Takže počet adresářů v rámci task odpovídá počtu vláken. Můžeš použít ls v kombinaci s wc aby se počítání provádělo automaticky.

Kromě přístupu s /proc, samotný příkaz ps může vracet informace na úrovni vláknaPoužití možnosti -H vstoupíte do „vláknového režimu“ a pomocí -p Filtrujete podle konkrétního PID. Pokud přidáte -h Vyhnete se souvratům, což usnadňuje směrování toku směrem k wc a získat počet řádků, tj. počet LWP uvedených pro daný proces.

U všech těchto metod, pokud je aplikujete na stejný PID, počet vláken se musí shodovat: pole Vlákna status, počet podadresářů v task a startovní čáry ps V režimu vlákna by měly uvádět stejnou hodnotu, s výjimkou drobných odchylek, pokud proces v daném okamžiku vytváří nebo ničí vlákna.

Filtrování a vyhledávání procesů pomocí pgrep a grep

Pokud na počítači běží stovky nebo tisíce procesů, je nalezení toho, který vás zajímá, posouváním stránky ztrátou času. A právě zde se to hodí. pgrep, který vyhledává procesy podle názvu nebo vzoru a přímo vrací odpovídající PID.

S jednoduchým pgrep apache Na obrazovce uvidíte identifikátory všech procesů, jejichž název obsahuje daný text. A pokud potřebujete vyhledávání dále upřesnit, můžete kombinovat pgrep s uživatelskými filtryNapříklad s možností -u omezit vyhledávání na procesy konkrétního účtu.

Další běžně používanou taktikou je spoléhat se na grep filtrovat výstup z psTypický příkaz by mohl být ps aux | grep apache, který vám zobrazí pouze procesní řádky obsahující slovo „apache“, spolu s jejich PID, zdroji a úplnými příkazy.

Mějte na paměti, že tento typ potrubí přidává další procesy (například ten samotný) grep nebo wc) do seznamu, takže když děláte věci jako ps r | wc -l Čítač se zvyšuje o řádek záhlaví a o procesy, které jsou součástí samotného kanálu. Je důležité tyto výsledky správně interpretovat, abyste se vyhnuli překvapením s celkovým počtem úloh.

Obecně řečeno, mistr ps + grep, pgrep a možnosti filtrování Umožňuje vám soustředit se na to, co vás zajímá, aniž byste byli zahlceni systémovými procesy, které většinou při první analýze můžete ignorovat.

Řízení a dokončení procesů

Procesy zaznamenávání a monitorování jsou skvělé, ale často potřebujete dokončit problematické úkoly nebo sledovat jejich stav Pro uvolnění zdrojů nebo obnovení stability systému nabízí Linux několik jednoduchých nástrojů.

Nejznámější je kill, který odesílá signály procesům identifikovaným jejich PIDPokud nezadáte žádný signál, odešle se SIGTERM s požadavkem na řádné ukončení procesu. Pokud proces odmítne, můžete použít signál SIGKILL (volba -9), což vynutí okamžité ukončení procesu bez možnosti vymazání zdrojů.

Pokud nechcete shromažďovat PIDy jeden po druhém, máte pkill y killall, které fungují pod názvem. S pkill firefox Ukončíte všechny procesy, jejichž název pro vašeho uživatele odpovídá „firefox“, zatímco killall Bývá agresivnější a může ovlivnit všechny instance programu v systému, včetně instancí ostatních uživatelů, v závislosti na oprávněních.

Je také velmi užitečné pochopit, jak fungují fg y bg hrát si s procesy v popředí a na pozadíPři pozastavení úlohy pomocí Ctrl+Z a následném použití bgPošlete ho na pozadí, aby běžel dál, zatímco obnovíte terminál. Pokud s ním pak budete potřebovat znovu interagovat, fg ji vrací do centra pozornosti.

A konečně, pokud chcete spustit něco, co běží i po odhlášení, můžete zkombinovat nohup s odesláním na pozadínapříklad nohup script.sh &Tímto způsobem se proces nepřeruší, i když zavřete terminál nebo dojde ke ztrátě připojení. SSHTo je velmi užitečné pro dlouhodobé úkoly. Pokud je chcete naplánovat, podívejte se na jak plánovat úkoly s cronem a na.

Stanovení priorit s laskavostí a důrazem na čistotu

V systémech s více uživateli nebo systémech s mnoha souběžnými úlohami nestačí vědět, kolik procesů nebo LWP existuje; je také důležité vědět, kolik procesů nebo LWP existuje. určí, které procesy mají prioritu při využití CPUA právě tam přicházejí na řadu příkazy. nice y renice.

Když zahájíte proces s nice -n valor comando Nastavujete jeho relativní prioritu. Typický rozsah je od -20 (nejvyšší priorita) do 19 (nejnižší priorita), přičemž 0 je výchozí hodnota. Vyšší hodnota funkce nice znamená, že proces bude ohleduplnější k ostatním a při soutěžení o zdroje uvolní čas CPU.

  Jak smazat historii chatu a aktivitu v aplikaci Microsoft Copilot

Například pokud máte skript náročný na zdroje, který není naléhavý, ale chcete, aby běžel na pozadí bez rušení, můžete ho spustit pomocí nice -n 10 ./script.shTím se mu přiřadí nízká priorita, aby nemonopolizoval procesor, zatímco běží jiné interaktivní procesy.

Pokud místo úpravy priority při spuštění potřebujete změnit prioritu již probíhajícího procesu, používáš reniceS něčím jako renice -n 5 -p PID Pomocí tohoto PID měníte hodnotu nice procesu a přizpůsobujete ji aktuálním potřebám (zvyšujete nebo snižujete její prioritu).

Správné řízení priorit s Nice a Renice pomáhají zabránit tomu, aby jeden proces nebo sada vláken Snižuje to rychlost odezvy systému, zejména na sdílených serverech nebo v produkčním prostředí s mnoha současnými zátěžemi.

Pokročilé nástroje pro ladění a analýzu procesů

Když se proces nebo jeden z jeho LWP chová podivně, padá nebo se zdá, že systém zamrzá, je často nutné použít pokročilejší diagnostické nástroje. Jedním z nejúčinnějších je stracecož vám umožňuje v reálném čase sledovat systémová volání prováděná procesem. Pro hlubší chyby jádra existuje průvodce na použijte crash a kdump.

S příkazem jako strace -p PID puedes zapojit se do procesu, který již probíhá a zjistit, jaká systémová volání provádí (čtení souborů, zápisy, síťové operace, signály atd.). To je obzvláště užitečné pro zjištění, proč proces čeká na „něco“: možná je zablokován při pokusu o otevření souboru, který neexistuje, čeká na socket nebo má nedostatečná oprávnění.

Dalším klasickým diagnostickým nástrojem je lsof (Seznam otevřených souborů)Tento nástroj zobrazuje soubory otevřené jednotlivými procesy, včetně souborů na disku, síťových soketů, zařízení a dalších. Je velmi užitečný pro detekci, který proces obsazuje konkrétní port, která služba uzamyká soubor nebo které úlohy čtou konkrétní protokol.

Doplňování lsof, fuser Říká vám, které procesy používají soubor nebo port. Konkrétně například pomocí příkazu na TCP portu můžete rychle zjistit, který démon na daném čísle naslouchá, a podle toho jednat, buď jeho překonfigurováním, nebo jeho zastavením.

Chcete-li posunout analýzu výkonu o krok dále, máte pidstatkterý nabízí podrobné statistiky CPU, paměti a I/O na proces a s watchcož umožňuje pravidelně spouštět příkazy, jako například ps -e o netstat sledovat na obrazovce, jak se procesy nebo spojení vyvíjejí v průběhu času.

Správa služeb a celkový stav systému

Mnoho důležitých procesů v Linuxu je ve skutečnosti služby nebo démony běžící na pozadí, jako například webové servery, databází nebo plánovače úloh. V moderních systémech se systemd je ústředním nástrojem pro správu těchto služeb systemctl.

s systemctl start nombre_servicio Službu můžete spustit, zatímco systemctl stop, restart y status Umožňují jej zastavit, restartovat nebo zobrazit jeho aktuální stav. Můžete také povolit nebo zakázat jeho automatické spuštění při spuštění systému, což přímo ovlivňuje, které procesy se zobrazí v seznamu po restartu.

Ve starších distribucích nebo konfiguracích, které stále používají SysVinit, je běžné, že se příkaz service pro správu služeb. Ačkoli byl v mnoha případech nahrazen systemd, je stále užitečný jako vrstva kompatibility pro spouštění, zastavování nebo restartování specifických démonů.

Kromě služeb se vyplatí mít globální pohled na stav systému. Příkaz uptime Ukazuje, jak dlouho je počítač zapnutý, kolik uživatelů je připojeno a nedávné průměrné zatížení, což poskytuje rychlou představu o tom, zda je systém v pohodě nebo přetížený.

Pro podrobnější analýzu výkonu, vmstat Poskytuje statistiky o CPU, paměti, procesech a swapu.Zatímco iostat Zaměřuje se na diskové I/O operace a zobrazuje doby čtení, zápisu a odezvy zařízení. skladováníTyto nástroje jsou neocenitelné pro detekci, zda problémy pocházejí z CPU, RAM, disku nebo z jejich kombinace.

Kombinace všech výše uvedených možností – výpis procesů a LWP pomocí ps a /proc, monitorování v reálném čase pomocí top, htop nebo atop, filtrování pomocí pgrep, ovládání pomocí kill a ladění pomocí nice, spolu s diagnostickými utilitami jako strace a lsof – umožňuje... přesně pochopit a ovládat, co se děje v systému Linux kdykoli identifikovat problematické procesy a vlákna a udržovat výkon pod kontrolou i v náročných prostředích.

Jak používat crash a kdump pro Linux
Související článek:
Jak používat Crash a Kdump pro Linux: Kompletní a praktický průvodce