Monitorování linuxového systému je jedním z nejdůležitějších úkolů, které musí každý uživatel Linuxu nebo systémový administrátor provádět nepřetržitě, aby zajistil hladký chod systému a vyhnul se úzkým hrdlům. Linux se dodává s několika vestavěnými nástroji, které vám mohou pomoci monitorovat váš systém. Jedním z nich je ps (stav zpracování ) příkaz, který konkrétně monitoruje běžící procesy a mimo jiné metriky spojené s procesy, jako je procento CPU a paměť využití. Příkaz ps čte souborový systém /proc, který je založen na RAM nebo virtuální souborový systém.
V této příručce se ponoříme hlouběji a seznámíme vás s 20 nejběžněji používanými příkazy ps.
1) Proces zápisu do shellu
Nejjednodušší forma příkazu ps v linuxu uvádí běžící procesy v aktuálním shellu. To lze ilustrovat níže.
[[chráněno e-mailem] ~]$ ps PID TTY ČAS CMD 1437 b./0 00:00:00 bash 1465 b./0 00:00:00 ps[[e-mailem chráněno] ~]$
Pojďme si definovat pár pojmů:
- PID:Toto je ID procesu.
- TTY:Toto se týká terminálu, který spustil a řídí proces.
- ČAS:Toto je čas / kumulativní čas, po který proces běžel.
- CMD:Název příkazu, který spustil proces.
2) Seznam procesů spojených s terminálem
Je to podobné jako výpis procesů v shellu. Chcete-li zobrazit seznam procesů souvisejících s terminálem, na kterém právě běžíte, spusťte příkaz:
[[chráněno e-mailem] ~]$ ps -T PID SPID TTY ČAS CMD 1437 1437 bodů/0 00:00:00 bash13357 13357 bodů/0 e-mail 00:00:0 ~ 00:00:0 ~ před>3) Zobrazení všech běžících procesů ve vašem systému
Chcete-li získat přehled o všech běžících procesech ve vašem systému Linux, použijte příznak -A jak je znázorněno:
[[e-mail chráněný] ~]$ ps -A
Případně můžete také použít příznak –e jak je znázorněno. Stále budete mít podobné výsledky.
[[e-mail chráněný] ~]$ ps -e4) Zobrazení výstupu ve formátu BSD
Chcete-li vypsat procesy ve formátu BSD, spusťte příkaz
$ ps -auxRozeberme si příkaz:
Parametr -a přikazuje ps, aby zobrazil všechny procesy od všech uživatelů. To však vylučuje procesy spojené s konkrétním terminálem.
Parametr -u implikuje uživatelsky orientovaný formát. Poskytuje podrobnější informace související s běžícími procesy.
Příznak x uvádí procesy, které se obvykle spouštějí při startu systému, a také procesy na pozadí.
Kde:
- UŽIVATEL – Určuje uživatele spouštějícího proces
- PID – Toto je ID procesu procesu
- %CPU – procentuální využití procesoru každým procesem
- %MEM – Toto je % fyzické paměti využité procesem
- VSZ – Toto je velikost virtuální paměti každého procesu v kilobajtech
- RSS – Toto je velikost/množství fyzické paměti používané procesem
- STAT – Ukazuje na kód stavu procesu, např. S (spící), Z (zombie) a R (běh)
- START – Toto je čas, kdy proces začal běžet
5) Zobrazení výstupu ve formátu UNIX
Pokud chcete zobrazit výstup ve formátu UNIX, spusťte příkaz ps s kombinací -ef příznaky
[[e-mail chráněný] ~]$ ps -ef
Parametr -e říká příkazu ps, aby vypsal všechny procesy
Parametr -f (plný formát) dává příkazu ps pokyn, aby vypsal podrobné informace o procesech.
Pojďme definovat několik nových termínů ze snímku obrazovky:
- PPID:Toto se týká ID nadřazeného procesu
- C:Toto se týká % CPU nebo procenta využití CPU procesem.
- STIME:Ukazuje na čas, kdy byl příkaz spuštěn. Stejné jako START
6) Zobrazení výstupu v uživatelem definovaném formátu
Ve výstupu ve formátu definovaném uživatelem máte možnost rozhodnout, které sloupce se mají zobrazit. Příznak -o určuje, které sloupce se zobrazí při spuštění příkazu ps. V níže uvedeném příkladu pouze PID a START jsou zobrazeny sloupce. Nezapomeňte si uvědomit, že možnosti sloupců jsou v příkazu ps předávány malými písmeny.
[[e-mail chráněn] ~]$ ps -efo pid,start PID ZAČÁNO 1437 21:55:2813632 01:41:16[[e-mail chráněn] ~]$
7) Zobrazit aktuálně běžící procesy uživatele
Někdy možná budete chtít zjistit procesy, které jsou spojeny s určitým uživatelem, takže k tomu použijte příznak -u jak je znázorněno“
$ ps -u uživatel
NEBO
$ ps -u uid
Chcete-li například zobrazit procesy spojené s uživatelem ‚Linuxtechi‘, spusťte příkaz:
$ ps -u linuxtechi
Případně můžete použít uživatelské uid (User ID). ID uživatele můžete získat spuštěním příkazu:
$ id uživatel
[[email protected] ~]$ id linuxtechiuid=1000(linuxtechi) gid=1000(linuxtechi) groups=1000(linuxtechi),10(wheel)[[email protected] ~]$
Z výše uvedeného výstupu jasně vidíme, že uid pro uživatele ‚linuxtechi‘ je 1000. Poté můžete pomocí příkazu ps a uid najít procesy spojené s daným uživatelem.
$ ps -u 1000
Pro uživatele root spusťte příkaz
$ ps -u root
Podobně můžete zkontrolovat pomocí uid uživatele root, jehož hodnota je 0
$ ps -u 0
8) Zobrazení skupinových procesů
Výpis skupinových procesů je podobný výpisu uživatelských procesů. Skupinový proces můžete vypsat pomocí příkazu ps předáním názvu skupiny zadáním ID skupiny.
Chcete-li například zobrazit procesy spojené se skupinou „apache“, spusťte příkaz:
$ ps -fG
$ ps -fG apache
Případně můžete místo názvu skupiny předat ID skupiny (gid). GID můžete získat ze souboru /etc/group.
Například v tomto případě je ID skupiny pro Apache 48. Místo zadání názvu skupiny ‘apache “ jednoduše zadejte číslo GID. 48.
$ ps -fG 48
9) Zobrazení procesů pomocí PID a PPID
Procesy Linuxu lze také zobrazit pomocí PID (ID procesu ) a PPID (ID nadřazeného procesu) . PPID odkazuje na PID rodiče procesu.
Chcete-li vypsat procesy podle PID, spusťte
$ ps -fp PID
Chcete-li například zobrazit seznam procesů spojených s PID 1286, spusťte příkaz:
[[e-mail chráněno] ~]$ ps -fp 1286UID PID PPID C STIME TTY TIME CMDpostfix 1286 1285 0 03:49 ? 00:00:00 vyzvednutí -l -t unix -u[[e-mail chráněný] ~]$
Chcete-li vypsat procesy podle PPID, spusťte
$ ps -f –ppid <číslo-ppid>
Chcete-li například vypsat seznam procesů vlastněných PPID 31903, spusťte
$ ps -f --ppid 31903
10) Hledání PID pomocí názvu procesu
Většinu času obvykle neznáme PID názvu procesu. Chcete-li to provést, použijte příznak -C jak je znázorněno
$ ps -C
[[e-mail chráněno] ~]$ ps -C firefox PID TTY ČAS CMD 1446 tty2 00:00:04 firefox[[e-mail chráněno] ~]$
11) Proces zobrazení pomocí TTY
Pokud chcete filtrovat procesy podle hodnoty tty, použijte příznak -t . Chcete-li například zobrazit procesy připojené k tty1, spusťte příkaz ps podle obrázku:
$ ps -ft tty1
12) Tisk stromu procesu
Strom procesů ukazuje, jak jsou procesy propojeny v systému Linux. Procesy bez rodičů se k systému připojují prostřednictvím init nebo systemd. Tisk vyžaduje použití následujícího formátu:
$ ps -e --forest
13) Filtrujte proces podle procesu vlákna
Chcete-li filtrovat proces pomocí vlákna procesu, použijte příznak -L jak je znázorněno,
$ ps -L 1446
14) Monitorování procesů v reálném čase
Ke sledování statických informací o procesu můžete použít nástroj sledování. Výstup se přehrává každou sekundu, jak je znázorněno níže
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | hlava'
Příkaz vytiskne sloupce pid, ppid, cmd, %mem a %cpu a každou sekundu sleduje statistiky při třídění % využití CPU v sestupném pořadí.
15) Odstraňování problémů s výkonem počítače se systémem Linux
Když je váš systém pomalý nebo přetížený, můžete identifikovat nejběžnější proces podle nejvyššího využití CPU a paměti
Provedením následujícího příkazu ps vypíšete top procesy, které spotřebovávají velkou paměť,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | hlava
Provedením následujícího příkazu ps vypíšete top procesy, které spotřebovávají vysoký cpu,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | hlava
Ukázkový výstup výše uvedeného příkazu ps v mém systému je níže,
16) Zabíjení nereagujících procesů
Příkaz ps vám umožní ukončit nereagující aplikace nebo jakékoli procesy, které zatěžují CPU a RAM. Chcete-li to provést, musíte najít PID této konkrétní aplikace pomocí příkazu:
$ ps -A | grep -i stress
Jakmile najdete PID procesu, můžete jej ukončit pomocí příkazu kill, příklad je uveden níže,
$ kill -9 2583 2584
17) Seznam všech PID všech instancí procesu
Můžete vypsat všechny PID spojené s procesem pomocí syntaxe:
$ ps -C
Chcete-li například zjistit PID související s webovým serverem httpd, spusťte:
$ ps -C httpd -o pid=
18) Zobrazte dobu, po kterou procesy běží
Chcete-li zobrazit, jak dlouho procesy běží, spusťte příkaz:
$ ps -eo comm,etime,user
Pomocí níže uvedeného příkazu ps zjistíte, jak dlouho konkrétní proces běží,
$ ps -o etime -p
Předpokládejme, že chceme vědět o procesu mysql
[[e-mail chráněný] ~]$ ps -C mysqld -o pid= 3807[[e-mail chráněný] ~]$[[chráněn e-mailem] ~]$ ps -o etime -p 3807 Uplynulo 01:13:56[ [e-mail chráněn] ~]$
19) Vyjmenujte podřízené procesy procesu
Chcete-li vytisknout nebo vypsat podřízené procesy procesu, použijte příznak -C v níže uvedené syntaxi:
$ ps -C
Chcete-li například vypsat podřízené procesy spojené s procesem httpd, spusťte
[[e-mail chráněn] ~]$ ps -C httpd PID TTY ČAS CMD31911 ? 00:00:00 httpd31918? 00:00:00 httpd31919? 00:00:00 httpd31920? 00:00:01 httpd31921? 00:00:01 httpd31922? 00:00:01 httpd[[e-mail chráněn] ~]$
20) Filtrování výstupu příkazu ps pomocí grep
Chcete-li získat konkrétní výsledky v příkazu ps , můžete výstup převést do nástroje grep a zadat kritéria vyhledávání.
Chcete-li například vyhledávat nebo zúžit na proces php, spusťte příkaz:
$ ps -ef | grep php
Uvedli jsme 20 nejlepších příkazů ps, které se běžně používají pro výpis a monitorování procesů běžících na vašem systému Linux. Tyto příkazy budou fungovat ve všech linuxových distribucích a jistě vám poskytnou přehled o procesech běžících na vašem systému a pomohou vám určit, které přetěžují váš CPU a RAM zdroje. Přišel vám tento průvodce srozumitelný? Neváhejte a lajkujte a sdílejte na svých platformách sociálních médií. Vaše zpětná vazba je velmi vítána.
Přečtěte si také :25 hlavních příkladů příkazů pro sledování výkonu serveru Linux