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 format
  • x : 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.

📋
The only difference between using 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.