Oct 20, 2023 5 min read

PS Command in Linux (List Processes)

Use ps command in Linux with our step-by-step tutorial. The ps command provides information about currently running processes.

PS Command in Linux (List Processes)
Table of Contents

Introduction

Before we discuss ps command in Linux (List Processes), let's understand-What is ps command ?

The ps command in Linux is used to provide information about currently running processes on a system. It helps users monitor system activity, identify resource-intensive processes, and manage running processes efficiently.

A process is a running instance of a program in Linux. When working on a Linux machine, you may occasionally need to know what processes are currently running.

You may use a variety of commands to get information about running processes, with ps, pstree, and top being the most often used.

This tutorial demonstrates how to use the ps command to list and display information about presently active processes. We will also address a few FAQs on ps command in Linux (List Processes).

How to Use ps Command

The ps command has the following general syntax:

ps [OPTIONS]

The ps command takes several distinct types of options for historical and compatibility reasons:

  • UNIX style options, preceded by a single dash.
  • BSD style options, used without a dash.
  • GNU long options, preceded by two dashes.

Different option types can be mixed, however, conflicts can arise in some instances, therefore it's recommended to stick with one option type.

Options for BSD and UNIX can be grouped together.

In its most basic form, ps will print four columns of information for at least two processes running in the current shell, the shell itself, and the processes running in the shell when the command was invoked when used without any options.

ps

The output contains information about the shell (bash) and the process (ps, the command you typed) that is running in this shell:

Output

  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps

PID, TTY, TIME, and CMD are the names of the four columns.

  • PID stands for Process ID. When using the ps command, the process PID is usually the most significant piece of information that the user is looking for. Knowing the PID allows you to kill a faulty process.
  • TTY - The name of the process's controlling terminal.
  • TIME - The process's total CPU time, is expressed in minutes and seconds.
  • CMD - This is the name of the command that started the process.

Because there isn't much information in the output above, it isn't particularly useful. When used with additional parameters, the ps command becomes quite powerful.

The ps command supports many options for displaying a specified set of processes and other information about them, although only a few are needed in day-to-day use.

The command ps is most commonly used with the following options:

BSD form:

ps aux
  • The a option instructs ps to show all users' processes. Only processes that aren't linked to a terminal and group leader processes aren't displayed.
  • The letter u stands for a user-friendly structure that provides detailed information about processes.
  • Without a controlling terminal, the x option tells ps to list the processes. Those are primarily background processes that begin at boot time and run in the background.

USER, PID, %CPU, %MEM, VSZ, RSS, STAT, START, TTY, TIME, and CMD are among the eleven columns displayed by the command.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.8  77616  8604 ?        Ss   19:47   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    19:47   0:00 [kthreadd]
...

PID, TTY, TIME, and CMD labels have already been discussed. Other labels are explained as follows:

  • USER - This is the user who is in charge of the process.
  • %CPU - The process's CPU utilization.
  • MEM - The percentage of the process's resident set the size to the machine's physical memory.
  • VSZ is the process's virtual memory size in KiB.
  • RSS - The amount of physical memory used by the process.
  • STAT - The process state code, such as Z (zombie), S (sleeping), and R (running).
  • START - The start time of the command.

ps displays a tree view of parent to child processes when the f option is used:

ps auxf

You can sort the output with the ps command. To arrange the output by memory consumption, for example, you would use:

ps aux --sort=-%mem

UNIX form:

ps -ef
  • The -e option tells ps to show all processes.
  • The -f option stands for full-format listing, which gives you a lot more information about the processes.

UID, PID, PPID, C, STIME, TIME, and CMD are the eight columns that the command displays.

Output

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:47 ?        00:00:01 /sbin/init
root         2     0  0 19:47 ?        00:00:00 [kthreadd]
...

Let's discuss the meaning of the labels that have not yet been explained:

  • UID - Same as USER, the user who runs the process.
  • PPID - The parent process's ID.
  • C - The process CPU utilization, which is the same as %CPU.
  • STIME - The same as START, this is the time the command began.

Type the following command, where vega is the user's name, to see only the processes running as that user:

ps -f -U vega -u vega

User-defined Format

When using the ps command, the o option allows you to define which columns are displayed.

For example, if you only want to output information about the PID and COMMAND, use one of the following commands:

ps -efo pid,comm
ps auxo pid,comm

Using ps with Other Commands

Using piping, ps can be used in conjunction with other commands.

Pipe the output of the ps command to the less command one page at a time to show it:

ps -ef | less

grep can be used to filter the output of the ps command. To reveal only the processes belonging to the root user, for example, run:

ps -ef | grep root

FAQs on PS Command in Linux

What information does the ps command display?

The ps command displays information such as process ID (PID), terminal associated with the process, CPU and memory usage, time of process initiation, and more.

How do I list all processes running in Linux using the ps command?

To list all processes running on a Linux system, use the ps command without any options: ps -e or ps -A.

What is the difference between ps -e and ps -A?

ps -e and ps -A are equivalent and both display all processes running on the system. These options ensure that no processes are hidden from the output.

How can I display detailed information about processes using the ps command?

To display detailed information about processes, use the ps -f option. It provides a full-format listing that includes additional details such as the parent process, execution time, and more.

How can I sort processes by CPU usage with the ps command?

To sort processes by CPU usage, use the ps command along with the --sort option. For example, to sort by CPU usage in descending order, use ps --sort=-%cpu.

Can the ps command display processes in a tree-like structure?

Yes, the ps command can display processes in a tree-like structure using the ps -f --forest or ps f option. This format displays the parent-child relationships between processes.

How can I continuously monitor process activity with the ps command?

To continuously monitor process activity, use the ps command along with the watch command. For example, watch -n 1 ps aux displays an updated view of all processes every second.

Conclusion

When troubleshooting difficulties on Linux systems, the ps command is one of the most regularly used commands. It offers a lot of options, but most people use ps aux or ps -ef to collect information on running processes.

Type man ps in your terminal to learn more about ps.

If you have any queries, please leave a comment below and we’ll be happy to respond to them.

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to DevOps Blog - VegaStack.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.