In most Unix and Unix-like operating systems, the <code>ps</code> (process status) program displays the currently-running processes. The related Unix utility <code>top</code> provides a real-time view of the running processes.
Implementations
KolibriOS includes an implementation of the command. The command has also been ported to the IBM i operating system. In Windows PowerShell, <code>ps</code> is a predefined command alias for the <code>Get-Process</code> cmdlet, which essentially serves the same purpose.
Examples
<syntaxhighlight lang="console">
- ps
PID TTY TIME CMD
7431 pts/0 00:00:00 su
7434 pts/0 00:00:00 bash
18585 pts/0 00:00:00 ps
</syntaxhighlight>
Users can pipeline <code>ps</code> with other commands, such as less to view the process status output one page at a time:
<syntaxhighlight lang="console">
$ ps -A | less
</syntaxhighlight>
Users can also utilize the <code>ps</code> command in conjunction with the <code>grep</code> command (see the <code>pgrep</code> and <code>pkill</code> commands) to find information about a single process, such as its id:<syntaxhighlight lang="console">
$ # Trying to find the PID of `firefox-bin` which is 2701
$ ps -A | grep firefox-bin
2701 ? 22:16:04 firefox-bin
</syntaxhighlight>
The use of <code>pgrep</code> simplifies the syntax and avoids potential race conditions:
<syntaxhighlight lang="console">
$ pgrep -l firefox-bin
2701 firefox-bin
</syntaxhighlight>
To see every process running as root in user format:
<syntaxhighlight lang="console">
- ps -U root -u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.0 9436 128 - ILs Sun00AM 0:00.12 /sbin/init --
</syntaxhighlight>
Header line
{| class="wikitable"
|-
! Column Header !! Contents
|-
| %CPU || How much of the CPU the process is using
|-
| %MEM || How much memory the process is using
|-
| ADDR || Memory address of the process
|-
| C or CP || CPU usage and scheduling information
|-
| COMMAND* || Name of the process, including arguments, if any
|-
| NI ||nice value
|-
| F || Flags
|-
| PID || Process ID number
|-
| PPID || ID number of the process's parent process
|-
| PRI || Priority of the process
|-
| RSS || Resident set size
|-
| S or STAT || Process status code
|-
| START or STIME || Time when the process started
|-
| VSZ || Virtual memory usage
|-
| TIME || The amount of CPU time used by the process
|-
| TT or TTY || Terminal associated with the process
|-
| UID or USER || Username of the process's owner
|-
| WCHAN || Memory address of the event the process is waiting for
|}
<nowiki>* = Often abbreviated</nowiki>
Options
<code>ps</code> has many options. On operating systems that support the SUS and POSIX standards, <code>ps</code> commonly runs with the options -ef, where "-e" selects every process and "-f" chooses the "full" output format. Another common option on these systems is -l, which specifies the "long" output format from X/Open System Interfaces (XSI), an optional extension to POSIX.
Most systems derived from BSD fail to accept the SUS and POSIX standard options because of historical conflicts. (For example, the "e" or "-e" option will display environment variables.) On such systems, <code>ps</code> commonly runs with the non-standard options aux, where "a" lists all processes on a terminal, including those of other users, "x" lists all processes without controlling terminals and "u" adds a column for the controlling user for each process. For maximum compatibility, there is no "-" in front of the "aux". "ps auxww" provides complete information about the process, including all parameters.
See also
- Task manager
- kill (command)
- List of Unix commands
- nmon – a system monitor tool for AIX and Linux operating systems
- pstree (Unix)
- lsof
References
Further reading
External links
- Show all running processes in Linux using ps command
- In Unix, what do the output fields of the ps command mean?
