GNU/Linux >> Znalost Linux >  >> Linux

Elegantnější ps aux | grep -v grep

Použijte pgrep. Je to spolehlivější.


Obvyklá technika je tato:

ps aux | egrep '[t]erminal'

To bude odpovídat řádkům obsahujícím terminal , což egrep '[t]erminal' ne! Funguje i namnohé příchutě Unixu.


Tato odpověď staví na předchozí pgrep Odpovědět. Staví také na další odpovědi kombinující použití ps s pgrep . Zde je několik vhodných příkladů školení:

$ pgrep -lf sshd
1902 sshd

$ pgrep -f sshd
1902

$ ps up $(pgrep -f sshd)
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1902  0.0  0.1  82560  3580 ?        Ss   Oct20   0:00 /usr/sbin/sshd -D

$ ps up $(pgrep -f sshddd)
error: list of process IDs must follow p
[stderr output truncated]

$ ps up $(pgrep -f sshddd) 2>&-
[no output]

Výše uvedené lze použít jako funkci :

$ psgrep() { ps up $(pgrep -f [email protected]) 2>&-; }

$ psgrep sshd
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1902  0.0  0.1  82560  3580 ?        Ss   Oct20   0:00 /usr/sbin/sshd -D

Porovnejte s použitím ps s grep . Užitečný řádek záhlaví se nevytiskne:

$  ps aux | grep [s]shd
root      1902  0.0  0.1  82560  3580 ?        Ss   Oct20   0:00 /usr/sbin/sshd -D

Linux
  1. Grep:Vyčerpaná paměť?

  2. Řez / Grep A Df -h?

  3. Grep And Tail -f?

  1. Rekurzivní Grep vs Find / -type F -exec Grep {}; Co je efektivnější/rychlejší?

  2. Grep -v Neočekávané chování?

  3. Kontrola, zda skript běží?

  1. Není méně jen více?

  2. Jak mohu grep rekurzivně?

  3. Jak zadat více mezer pro oddělovač pomocí řezu?