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
?
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 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 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
pgrep -f foo
which uses the full process name to match foo
– Charlie G
Oct 07 '22 at 16:10
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.
ps -C
flag behaves completely differently - "Change the way the CPU percentage is calculated"
– mastaBlasta
Jan 09 '18 at 17:28
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.
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.
If the reason you don't want to use ps | grep
is because it loses the first line (the column headers), you can do:
ps aux | grep 'firefox\|^USER'
This is grepping for a line that contains firefox
or a line that starts with USER
(the first line of header line on my distro).
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
ps/grep
solution works so well? – neuronet Nov 04 '18 at 15:36ps -n <process name>
that would answer his need.ps -n firefox
is a bit shorter thanps | grep firefox
.ps
can already filter onpid
or processes for a user id, so it's a reasonable question to filter on process name. – Jochem Schulenklopper Nov 07 '18 at 09:04