Credit: Martingreffe The pgrep command is a tool for looking through currently running processes based on a number of different attributes and providing the process IDs (PIDs), but it does a lot of other things as well. The available options won’t necessarily be the same as you move from one system to another, but you’re sure to discover some pgrep commands that will prove very useful when you’re busy looking into what’s running on your systems. The most basic pgrep command will display the PIDs for whatever command you might be inquiring about. For example, if you want a list of all of the Apache daemons running on a web server, the pgrep httpd command does that easily. $ pgrep httpd 2854 10596 10597 10598 10599 10600 10601 10602 10603 15142 17559 If you have the -c (count) option available, you can count the processes rather than showing their PIDs. $ pgrep -c httpd 11 If you don’t have the -c option available, you can do this instead: $ pgrep -c httpd | wc -l 11 When you want to list PIDs for processes being run by some particular user, try the -u option as shown in this example. This allows you to search by username rather than process names. $ pgrep -u zorro 17985 17986 Another pgrep option (-l) will allow you to see a user’s process IDs along with the name of each process. The additional information can be extremely handy. $ pgrep -u xyz 24201 24311 24312 $ pgrep -u xyz -l 24201 bash 24311 bash 24312 vim You can also look at multiple users at a time if you like, simply by separating their usernames with commas. $ pgrep -u xyz,apache,zorro -l 10596 httpd 10597 httpd 10598 httpd 10599 httpd 10600 httpd 10601 httpd 10602 httpd 10603 httpd 15142 httpd 17559 httpd 17985 sshd 17986 bash 18194 sshd 18195 bash 24201 bash 24311 bash 24312 vim You can also do something like this if you want to clarify which user is running which of the listed processes. $ for user in xyz apache zorro > do > echo $user > pgrep -u $user -l > done xyz apache 24201 bash 24311 bash 24312 vim 10596 httpd 10597 httpd 10598 httpd 10599 httpd 10600 httpd 10601 httpd 10602 httpd 10603 httpd 15142 httpd 17559 httpd zorro 17985 sshd 17986 bash 18194 sshd 18195 bash And, if you want to display only the oldest or the newest of the processes being run by some particular users, use the -n (newest) or the -o (oldest) option. $ pgrep -u root -o -l 1 init $ pgrep -u root -n -l 18192 sshd You can also list process IDs for processes being run on some particular terminal. $ pgrep -t pts/0 17986 $ pgrep -t pts/0 -l 17986 bash If pgrep can be said to have a “partner in crime,” that partner is pkill — the command that makes terminating processes easier because you don’t have to look up the process IDs before issuing the needed kill commands. In fact, these two commands — pgrep and pkill — share nearly all of their options — with only a few exceptions. These two commands are generally, if not always, a lot more than friends. A quick check can determine that they’re the same executable. In the command below, we can see that the commands use the same executable (same inodes). $ ls -i /usr/bin/pgrep /usr/bin/pkill 3257815 /usr/bin/pgrep 3257815 /usr/bin/pkill More on pkill soon! Related content how-to Compressing files using the zip command on Linux The zip command lets you compress files to preserve them or back them up, and you can require a password to extract the contents of a zip file. By Sandra Henry-Stocker May 13, 2024 4 mins Linux opinion NSA, FBI warn of email spoofing threat Email spoofing is acknowledged by experts as a very credible threat. By Sandra Henry-Stocker May 13, 2024 3 mins Linux how-to The logic of && and || on Linux These AND and OR equivalents can be used in scripts to determine next actions. By Sandra Henry-Stocker May 02, 2024 4 mins Linux how-to Using the apropos command on Linux By Sandra Henry-Stocker Apr 24, 2024 3 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe