Verwenden Sie pgrep. Es ist zuverlässiger.
Die übliche Technik ist diese:
ps aux | egrep '[t]erminal'
Dadurch werden Zeilen gefunden, die terminal
enthalten , welche egrep '[t]erminal'
nicht! Es funktioniert auch auf vielen Varianten von Unix.
Diese Antwort baut auf einem früheren pgrep
auf Antworten. Es baut auch auf einer anderen Antwort auf, die die Verwendung von ps
kombiniert mit pgrep
. Hier sind einige relevante Trainingsbeispiele:
$ 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]
Obiges kann als Funktion verwendet werden :
$ 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
Vergleichen Sie mit der Verwendung von ps
mit grep
. Die nützliche Kopfzeile wird nicht gedruckt:
$ ps aux | grep [s]shd
root 1902 0.0 0.1 82560 3580 ? Ss Oct20 0:00 /usr/sbin/sshd -D