In Linux, a running instance of a program is called process. Occasionally, when working on a Linux machine, you may need to find out what processes are currently running.
There are number of commands that you can use to find information about the running processes, with
top being the most commonly used ones.
This article explains how to use the
ps command to list the currently running processes and display information about those processes.
How to Use
The general syntax for the
ps command is as follows:
For historical and compatibility reasons, the
ps command accepts several different types of options:
- 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, but in some particular cases, conflicts can appear, so it is best to stick with one option type.
BSD and UNIX options can be grouped.
In it’s simplest form, when used without any option,
ps will print four columns of information for minimum two processes running in the current shell, the shell itself, and the processes that run in the shell when the command was invoked.
The output includes information about the shell (
bash) and the process running in this shell (
ps, the command that you typed):
PID TTY TIME CMD 1809 pts/0 00:00:00 bash 2043 pts/0 00:00:00 ps
The four columns are labeled
PID- The process ID. Usually, when running the
pscommand, the most important information the user is looking for is the process PID. Knowing the PID allows you to kill a malfunctioning process.
TTY- The name of the controlling terminal for the process.
TIME- The cumulative CPU time of the process, shown in minutes and seconds.
CMD- The name of the command that was used to start the process.
The output above is not very useful as it doesn’t contain much information. The real power of the
ps command comes when launched with additional options.
ps command accepts a vast number of options that can be used to display a specific group of processes and different information about the process, but only a handful are needed in day-to-day usage.
ps is most frequently used with the following combination of options:
psto display the processes of all users. Only the processes that not associated with a terminal and processes of group leaders are not shown.
ustands for a user-oriented format that provides detailed information about the processes.
psto list the processes without a controlling terminal. Those are mainly processes that are started on boot time and running in the background.
The command displays information in eleven columns labeled
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] ...
We already explained
CMD labels. Here is an explanation of other labels:
USER- The user who runs the process.
%CPU- The cpu utilization of the process.
%MEM- The percentage of the process’s resident set size to the physical memory on the machine.
VSZ- Virtual memory size of the process in KiB.
RSS- The size of the physical memory that the process is using.
STAT- The the process state code, such as
START- The time when the command started.
f option tells
ps to display a tree view of parent to child processes:
ps command also allows you to sort the output. For example, to sort the output based on the memory usage, you would use:
ps aux --sort=-%mem
psto display all processes.
-fstands full-format listing, which provides detailed information about the processes.
The command displays information in eight columns labeled
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] ...
The labels that are not already explained have the following meaning:
UID- Same as
USER, the user who runs the process.
PPID- The ID of the parent process.
C- Same as
%CPU, the process CPU utilization.
STIME- Same as
START, the time when the command started.
To view only the processes running as a specific user, type the following command, where
black is the name of the user:
ps -f -U black -u black
o option allows you to specify which columns are displayed when running the
For example, to print information only about the
COMMAND, you would run one of the following commands:
ps -efo pid,comm
ps auxo pid,comm
ps With Other Commands
ps can be used in combination with other commands through piping.
If you want to display the output of the
ps command, one page at a time pipe it to the
ps -ef | less
The output of the
ps command can be filtered with
grep. For example, to show only the process belonging to the root user you would run:
ps -ef | grep root
ps command is one of the most commonly used commands when troubleshooting issues on Linux systems. It has many options, but usually, most users are using either
ps aux or
ps -ef to gather information about running processes.
For more information about
man ps in your terminal.
If you have any questions or feedback, feel free to leave a comment.