ps je vestavěný příkaz používaný v operačních systémech Unix/Linux k výpisu aktuálně běžících procesů. Zobrazuje statický snímek s informacemi o procesech, zatímco top, htop a pohledy zobrazují opakované aktualizace.
Příkaz Ps přichází se spoustou možností pro manipulaci s výstupy. Získává všechny informace o procesech z virtuálního souborového systému /proc.
Tento tutoriál se zaměří na vysvětlení způsobu použití příkazu ps spolu s několika praktickými příklady
Syntaxe příkazu ps
Základní syntaxe pro použití příkazu ps je následující:
$ ps [options]
„Možnosti“ příkazu ps mohou být:
- Možnosti systému UNIX – předchází pomlčka
- Možnosti BSD – musí být použity bez pomlčky
- Dlouhé možnosti GNU – před kterými jsou dvě pomlčky
Toto je velmi základní použití příkazu ps. Jednoduše zadejte na konzoli „ps“ a uvidíte výsledek:
$ ps
Ve výchozím nastavení nám zobrazuje čtyři sloupce informací.
- PID je ID procesu spuštěného příkazu (CMD)
- TTY je místo, kde běží spuštěný příkaz
- ČAS informuje o tom, kolik času CPU spotřebuje při spouštění příkazu
- CMD je příkaz, který běží jako aktuální proces
Spuštění příkazu ps bez možnosti je pouze nejjednodušší formát příkazu, nevrací mnoho informací. Aby bylo možné co nejlépe využít sílu příkazu ps, spusťte jej s dalšími možnostmi, které budou podrobněji vysvětleny v následujících částech.
01) Zobrazit všechny procesy (formát UNIX)
Chcete-li zobrazit všechny procesy ve vašem systému Linux, můžete spustit některý z následujících příkazů:
$ ps -A
nebo:
$ ps -e
Navíc, chcete-li vypsat všechny běžící procesy, spusťte:
$ ps -r
02) Zobrazit všechny procesy (formát BSD)
Chcete-li zobrazit všechny procesy ve vašem systému Linux pomocí příkazu ps ve formátu BSD, můžete spustit následující příkazy:
$ ps ax
nebo
$ ps aux
Kde:
- USER – uživatel spustí proces
- PID – ID procesu
- %CPU / %MEM – procento CPU / RAM obsazené procesy
- VSZ – velikost virtuální paměti obsazené procesy
- RSS – velikost fyzické paměti obsazené procesy
- START – čas zahájení
- STAT – stav procesu, ve kterém:S (spící), R (běžící), I (přerušitelný spánek).
- Čas – zobrazí, jak dlouhý čas procesoru byl daný jádrem daného běžícího procesu.
- COMMAND – příkaz, který běží jako aktuální proces
03) Zobrazí všechny procesy, které jsou spuštěny příkazem
Chcete-li vypsat všechny procesy, které jsou spuštěny příkazem, použijte následující syntaxi:
$ ps -C <command_name>
Spusťte například seznam všech procesů příkazu '/usr/sbin/kerneloops':
$ ps -C kerneloops
Můžete také použít argument ve formě seznamu odděleného prázdnými znaky nebo čárkami, například:
$ ps -C sshd,systemd
04) Zobrazí všechny procesy, které uživatel spouští
Pokud chcete vypsat proces podle uživatele, jehož ID uživatele je 1000, spusťte následující příkaz:
$ ps -u 1000
Můžete také hledat proces podle uživatelského jména:
$ ps -U root -u root u
-U parameter
vybere podle real user ID (RUID)
. Vybírá procesy, jejichž skutečné uživatelské jméno nebo ID je v seznamu uživatelů. Skutečné ID uživatele identifikuje uživatele, který proces vytvořil.
Zatímco -u paramater
vybere podle platného ID uživatele (EUID)
05) Zobrazení procesů vlastněných skupinou
Chcete-li vypsat všechny procesy vlastněné konkrétním názvem skupiny, spusťte příkaz s -fG
volba. Například:
$ ps -fG cas
Chcete-li zobrazit všechny procesy podle ID skupiny, můžete spustit příkaz s volbou '-g'. Například:
$ ps -g 1
Výstup:
PID TTY TIME CMD
1 ? 00:00:03 systemd
06) Zobrazení procesů podle PID
Všechny procesy můžete vypsat podle PID spuštěním příkazu ps s volbou '-fp'. Například:
$ ps -fp 34531
Výstup:
UID PID PPID C STIME TTY TIME CMD
cas 34531 1 0 06:16 ? 00:00:00 /lib/systemd/systemd --user
Navíc, abychom vypsali všechny procesy podle PPID, spusťte příkaz s volbou '--ppid':
$ ps -f --ppid 34529
Výstup:
UID PID PPID C STIME TTY TIME CMD
cas 34609 34529 0 06:16 ? 00:00:00 sshd: cas@pts/0
07) Zobrazení procesů pomocí TTY
Chcete-li zobrazit všechny procesy pomocí TTY, můžete spustit příkaz s volbou '-t'. Například:
$ ps -t tty1
08) Zobrazení procesů vlastněných aktuálním uživatelem
Chcete-li zobrazit všechny procesy spuštěné aktuálním uživatelem, spusťte příkaz s volbou '-x':
$ ps -x
09) Zobrazit všechny procesy s úplným výpisem formátu
Spusťte například příkaz ps s -f
možnost zobrazit celý proces v plném formátu:
$ ps -af
10) Zobrazit všechny procesy v extra formátu
Navíc, chcete-li zobrazit extra úplný výpis výsledku, spusťte příkaz ps s -F
volba. Například:
$ ps -F
11) Zobrazit všechny procesy ve formátu ASCII hierarchie
Pro ilustraci, za předpokladu, že chcete zobrazit celý proces na vašem systému Linux ve formátu hierarchie uměleckého procesu ASCII, spusťte:
$ ps af
Výstup bude ve formátu "forest":
12) Proces zobrazení v rozšířeném výstupu
Pokud chcete při spuštění příkazu ps rozšířit výstup, použijte w
možnost:
$ ps w
Udělejme srovnání mezi výstupy spuštění 'ps w' a 'ps':
13) Proces zobrazení podle uživatelem definovaného formátu
Pro zobrazení v uživatelsky definovaném formátu můžete použít následující syntaxi:
Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name
For example:
$ ps -e -o user,pid,cmd
14) Zobrazte vlákna s ID vlákna
Chcete-li například zobrazit vlákna se sloupcem SPID (SPID je ID vlákna), spusťte:
$ ps -aT
15) Zobrazit informace o vláknech
Kromě toho můžete použít volbu '-L' k získání informací o vláknech ve vašem systému Linux:
$ ps -aL
Výstup se sloupcem 'LWP' zobrazuje ID vlákna:
Několik dalších příkladů
01) Zkontrolujte, které procesy zabírají nejvíce paměti RAM
Následující příkaz zobrazí většinu paměti využívající procesy, %MEM
v 1. sloupci PID
ve 2. sloupci a příkaz ve 3. sloupci pro všechny běžící procesy v systému:
$ ps -eo pmem,pid,cmd | sort -k 1 -nr
02) Zobrazí všechna vlákna konkrétního ID procesu
Tím se zobrazí všechna vlákna konkrétního procesu pid.
$ ps -Lf -p 3482
03) Zobrazuje potomka nadřazeného procesu
Zobrazí se všechny podřízené procesy procesu a je to užitečné pro zjištění, jaké procesy byly z tohoto hlavního procesu vyčleněny.
$ ps -o pid,pcpu,pmem,uname,comm -C apache2
04) Zobrazuje, jak dlouho proces běží
Následující příkaz ukáže, jak dlouho v systému běží proces 'mysql':
$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
etime
:čas, který uplynul od spuštění procesu, ve tvaru [[DD-]hh:]mm:ss.etimes
:čas, který uplynul od spuštění procesu, v sekundách.
05) Získejte informace o zabezpečení
Pokud chceme vidět, kdo je aktuálně přihlášen na váš server, můžeme to vidět pomocí příkazu ps:
$ ps -eo pid,user,args
Nyní můžete mapovat pids na jejich příslušné systémové jednotky pomocí níže uvedeného příkazu:
$ ps -e -o pid,unit,cmd
Závěr
Pstree (nebo použijte ps -axjf ) a pgrep jsou další příkazy, které mohou pomoci získat informace o běžícím procesu.
Můžete použít ps jako monitor v reálném čase pomocí příkazu watch, řekněme, že chceme filtrovat procesy podle CPU a zpráva o využití paměti se aktualizuje každou 1 sekundu.
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
V tomto tutoriálu jsme se naučili mnoho způsobů, jak používat příkaz ps v Linuxu. Pro prozkoumání všech možností navštivte manuálovou stránku ps. Děkujeme za přečtení a zanechte prosím svůj návrh v sekci komentářů níže.