Check Running Process in Linux
As a system administrator, you might need to check all the processes that are consuming your computer's resources.
To get the list of all the running processes, run the ps command with aux
argument flags in the following fashion:
ps aux
This will give you a list of all running processes by all users on your system. You may use grep to filter the process using a pattern.
Let's see about using it in detail. I'll also share other commands to show running processes in Linux.
ps command
The ps
command is the standard command that most sysadmins use in a UNIX-like operating system.
There are several options that you can use with the ps
command, but the set of options to use when you want a list of all processes is aux
.
So, running the following command will show me all processes on my system:
ps -A
Or, you can use the BSD-style syntax, which are still available in GNU ps
ps aux
Lets break it down...
a
: Display information about other users' processes as well as of the user's own (if the processes are connected to terminals i.e. daemons get excluded)u
: Display in a user readable formatx
: Include processes that are not connected to a terminal i.e. include daemons
This will give you an incredibly long list of running processes that were running at the time of executing the ps
command.
Most people, including me, pipe this output in grep
to find a needle in the haystack.
$ ps aux | grep alacritty
pratham 4653 0.1 0.0 596776 63856 ? RNsl Mar09 3:43 alacritty
pratham 4974 0.0 0.0 592792 58892 ? SNsl Mar09 0:18 alacritty
pratham 6287 0.0 0.0 590204 56308 ? SNsl Mar09 0:14 alacritty
pratham 8241 0.0 0.0 585504 51956 ? SNsl Mar09 0:07 alacritty
pratham 514536 0.0 0.0 18808 2572 pts/1 SN+ 13:56 0:00 /usr/bin/grep --color=auto alacritty
Notice how the grep
command was also included in the output. This is because it also has 'alacritty' in the process name (as the argument).
Be wary of this behaviour [that grep will be included in the output] if you use it in a script.
ps aux
and ps -A
is that when you use ps aux
, you can easily grep the user, or alternatively, use the -u
option. Whatever works for you.Let's see some other Linux commands to see running processes.
pgrep command
The pgrep command accepts a pattern to match and if there are any processes that match with the provided pattern, a process ID (PID) is returned to stdout.
Below is the syntax to use for pgrep
command:
pgrep <pattern>
Let's say, for example, I want to see the PIDs of any process that have the name 'alacritty'. I would use the following command for that:
$ pgrep alacritty
4653
4974
6287
8241
As I ran that command, I got four PIDs indicating that four processes match with the pattern 'alacritty' and their PIDs are outputted to the stdout.
You can also use the -u
flag (as opposed to u
) along with ps
command to specify a particular user and filter out the results, making it easier to manage.
There might be multiple users on my computer using Vim, user pratham
and root
. If I want to filter processes and only want to see if pratham
has an active Vim process or not, here is how I find it out.
$ ps -u pratham | grep vim
516525 pts/2 SNl+ 0:00 nvim
pstree command
The pstree
command, as its name implies, shows a hierarchical view of parent processes and child processes.
When run, the pstree
will show a top-down, tree-like structure output of processes as shown in the picture above.
You can also note that the PID 1 is systemd, indicating that my Linux system uses systemd.
Since there is not much information about PID, user, start time, CPU usage etc, it is not exactly a "go-to" command. But it still helps to know which child process belongs to which parent process.
Use a system monitor
Any UNIX-like system will have a tool that you can use to monitor the usage of physical resources like CPU, RAM, Network etc.
A few tools that people prefer and are widely used are top
, atop
, htop
and btop
.
Here is the output of top
command running on my computer. It shows information like total tasks, CPU and Memory usage.
The atop
command differs from top
, obviously, but it also shows much more information about the processes like CPU, RAM usage, I/O etc.
The htop
utility is a widely used resource monitoring utility to get a real-time bar of per-core CPU usage, RAM and swap.
Finally, btop
is one of the newest addition to the system resource usage monitoring utilities. The best thing about it is that we get a history of CPU usage.
Conclusion
This article covers how you can view the processes running on your computer. And there are several methods of viewing it. But, the most preferred method is to use the ps
command.
If you want an interactive view of the running processes (sorted by CPU usage or RAM usage etc), you can use a system monitor like top or htop.