How do I search for a process by name without using grep?
In order to search for a process you can use ps
with grep
.
For example to search for firefox
ps aux | grep firefox
How to get the same answer without using grep
?
The pgrep
command, and its sibling pkill
, exists precisely for this purpose:
-
pgrep firefox
will list all processes whose commands matchfirefox
-
pgrep -f firefox
will list all processes whose entire command lines matchfirefox
-
pgrep -x firefox
will list all processes whose commands exactly matchfirefox
- ... and so on.
And naturally, pgrep
will exclude itself from the match, so none of the grep
rituals associated with ps | grep
are needed.
The other set of tools for this are the pidof
and killall
commands. These aren't as flexible as pgrep
and pkill
.
-
pidof firefox
will list processes whose command isfirefox
ps -fC process-name
example:
ps -fC firefox
from man ps
-C cmdlist Select by command name.
This selects the processes whose executable name is
given in cmdlist.
-f Do full-format listing. This option can be combined
with many other UNIX-style options to add additional
columns. It also causes the command arguments to be
printed. When used with -L, the NLWP (number of
threads) and LWP (thread ID) columns will be added. See
the c option, the format keyword args, and the format
keyword comm.
top
allows you to search for string when you hit uppercase L
; the process will be highlighted, and use up and down arrow keys to scroll through list of processes. Similarly,
htop
command allows highlighting a particular process when you hit /
. And \
will filter all the processes with a particular string in the name.
For those who like awk, here's an awk oneliner: ps -eF | awk '/process-name/ {print $11}'
. With ps -eF
process name is always in 11th column. Alternatively if you do ps -eF | awk '{print $11}' | sort
you get a sorted list of processes names, sorted alphabetically. Pipe it into less
command just to view the long list of files easier.
A cool trick
$ps -ejH
You will get all the processes with names
exmple:
1747 568 568 ? 00:00:00 colord
1833 1832 1832 ? 00:00:00 gnome-keyring-d
2263 568 568 ? 00:00:00 udisksd
2311 2311 2311 ? 00:00:00 cupsd
2315 2315 2311 ? 00:00:00 dbus
Redirect or so copy the output to a file and then open nano
,
press Ctrl+W
and you can search for the name you want.