I was looking for the best way to find the number of running processes with the same name via the command line in Linux. For example if I wanted to find the number of bash processes running and get "5". Currently I have a script that does a 'pidof ' and then does a count on the tokenized string. This works fine but I was wondering if there was a better way that can be done entirely via the command line. Thanks in advance for your help.
On systems that have
pgrep available, the
-c option returns a count of the number of processes that match the given name
pgrep -c command_name
Note that this is a
grep-style match, not an exact match, so e.g.
pgrep sh will also match
bash processes. If you want an exact match, also use the
pgrep is not available, you can use
ps -C command_name --no-headers | wc -l
-C option to
command_name as an argument, and the program prints a table of information about processes whose executable name matches the given command name. This is an exact match, not
--no-headers option suppresses the headers of the table, which are normally printed as the first line. With
--no-headers, you get one line per process matched. Then
wc -l counts and prints the number of lines in its input.