Utilisez pgrep. C'est plus fiable.
La technique habituelle est la suivante :
ps aux | egrep '[t]erminal'
Cela correspondra aux lignes contenant terminal
, dont egrep '[t]erminal'
ne fait pas! Cela fonctionne également sur beaucoup saveurs d'Unix.
Cette réponse s'appuie sur un précédent pgrep
réponse. Il s'appuie également sur une autre réponse combinant l'utilisation de ps
avec pgrep
. Voici quelques exemples de formation pertinents :
$ 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]
Ce qui précède peut être utilisé comme une fonction :
$ 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
Comparer avec l'utilisation de ps
avec grep
. La ligne d'en-tête utile n'est pas imprimée :
$ ps aux | grep [s]shd
root 1902 0.0 0.1 82560 3580 ? Ss Oct20 0:00 /usr/sbin/sshd -D