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?

2

7 Answers

The pgrep command, and its sibling pkill, exists precisely for this purpose:

  • pgrep firefox will list all processes whose commands match firefox
  • pgrep -f firefox will list all processes whose entire command lines match firefox
  • pgrep -x firefox will list all processes whose commands exactly match firefox
  • ... 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 is firefox
0
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.
1

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+Wand you can search for the name you want.

You can also use htop and then hit F4 to filter the results with a matching user-defined string. You also have a custom search feature available by hitting F3.

If two processes is the problem, you can use only grep:

grep firefox /proc/*/cmdline

I just read this ps alias on the Lennart Poettering Blog. The output is according to the systemd control group parenting:

alias psc='ps xawf -eo pid,user,cgroup,args'

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like