GNU/Linux |
RedHat 9.0(Shrike) |
|
![]() |
ps(1) |
![]() |
,
ps − report process status
ps [options]
ps gives a snapshot of the current processes. If you want a repetitive update of this status, use top. This man page documents the /proc-based version of ps, or tries to.
This version of ps accepts several kinds of options.
Unix98 options may be grouped
and must be preceeded by a dash.
BSD options may be grouped and must not be used with a dash.
GNU long options are preceeded by two dashes.
Options of different types may be freely mixed.
Set the I_WANT_A_BROKEN_PS environment variable to force BSD syntax even when options are preceeded by a dash. The PS_PERSONALITY environment variable (described below) provides more detailed control of ps behavior.
SIMPLE PROCESS SELECTION
PROCESS SELECTION BY LIST
OUTPUT FORMAT CONTROL
OUTPUT MODIFIERS
INFORMATION
OBSOLETE
The "-g" option can select by session leader OR by group name. Selection by session leader is specified by many standards, but selection by group is the logical behavior that several other operating systems use. This ps will select by session leader when the list is completely numeric (as sessions are). Group ID numbers will work only when some group names are also specified.
The "m" option should not be used. Use "-m" or "-o" with a list. ("m" displays memory info, shows threads, or sorts by memory use)
The "h" option is problematic. Standard BSD ps uses the option to print a header on each page of output, but older Linux ps uses the option to totally disable the header. This version of ps follows the Linux usage of not printing the header unless the BSD personality has been selected, in which case it prints a header on each page of output. Regardless of the current personality, you can use the long options --headers and --no-headers to enable printing headers each page and disable headers entirely, respectively.
Terminals (ttys, or screens of text output) can be specified in several forms: /dev/ttyS1, ttyS1, S1. Obsolete "ps t" (your own terminal) and "ps t?" (processes without a terminal) syntax is supported, but modern options ("T", "-t" with list, "x", "t" with list) should be used instead.
The BSD "O" option can act like "-O" (user-defined output format with some common fields predefined) or can be used to specify sort order. Heuristics are used to determine the behavior of this option. To ensure that the desired behavior is obtained, specify the other option (sorting or formatting) in some other way.
For sorting, BSD "O" option syntax is O[+|-]k1[,[+|-]k2[,...]] Order the process listing according to the multilevel sort specified by the sequence of short keys from SORT KEYS, k1, k2, ... The ’+’ is quite optional, merely re-iterating the default direction on a key. ’-’ reverses direction only on the key it precedes. The O option must be the last option in a single command argument, but specifications in successive arguments are catenated.
GNU sorting syntax is --sortX[+|-]key[,[+|-]key[,...]] Choose a multi-letter key from the SORT KEYS section. X may be any convenient separator character. To be GNU-ish use ’=’. The ’+’ is really optional since default direction is increasing numerical or lexicographic order. For example, ps jax --sort=uid,-ppid,+pid
This ps works by reading the virtual files in /proc. This ps does not need to be suid kmem or have any privileges to run. Do not give this ps any special permissions.
This ps needs access to a namelist file for proper WCHAN display. The namelist file must match the current Linux kernel exactly for correct output.
To produce the WCHAN field, ps needs to read the System.map file created when the kernel is compiled. The search path is:
$PS_SYSTEM_MAP
/boot/System.map-’uname -r’
/boot/System.map
/lib/modules/’uname -r’/System.map
/usr/src/linux/System.map
/System.map
The member used_math of task_struct is not shown, since crt0.s checks to see if math is present. This causes the math flag to be set for all processes, and so it is worthless. (Somebody fix libc or the kernel please.)
Programs swapped out to disk will be shown without command line arguments, and unless the c option is given, in brackets.
%CPU shows the cputime/realtime percentage. It will not add up to 100% unless you are lucky. It is time used divided by the time the process has been running.
The SIZE and RSS fields don’t count the page tables and the task_struct of a proc; this is at least 12k of memory that is always resident. SIZE is the virtual size of the proc (code+data+stack).
Processes marked <defunct> are dead processes (so-called "zombies") that remain because their parent has not destroyed them properly. These processes will be destroyed by init(8) if the parent process exits.
PROCESS FLAGS
PROCESS STATE CODES
For BSD formats and when the "stat" keyword is used, additional letters may be displayed:
SORT
KEYS
Note that the values used in sorting are the internal values
ps uses and not the ’cooked’ values used in some
of the output format fields. Pipe ps output into the sort(1)
command if you want to sort the cooked values.
AIX FORMAT
DESCRIPTORS
This ps supports AIX format descriptors, which work somewhat
like the formatting codes of printf(1) and printf(3). For
example, the normal default output can be produced with
this: ps -eo "%p %y %x %c"
STANDARD
FORMAT SPECIFIERS
These may be used to control both output format and sorting.
For example: ps -eo pid,user,args --sort user
ENVIRONMENT
VARIABLES
The following environment variables could affect ps:
In general, it is a bad idea to set these variables. The two exceptions are CMD_ENV (or PS_PERSONALITY), to set the desired default personality, and POSIXLY_CORRECT (or UNIX95), which should be set for Unix98 standard compliance.
To see every process on the system using standard syntax:
ps -e
To see every process on the system using BSD syntax:
ps ax
To see every process except those running as root (real & effective ID)
ps -U root -u root -N
To see every process with a user-defined format:
ps -eo pid,tt,user,fname,tmout,f,wchan
Odd display with AIX field descriptors:
ps -o "%u : %U : %p : %a"
Print only the process IDs of syslogd:
ps -C syslogd -o pid=
top(1) pstree(1) proc(5)
This ps can be set to conform to version 2 of the Single Unix Specification.
ps was
originally written by Branko Lankester
<lankeste@fwi.uva.nl>.
Michael K. Johnson <johnsonm@redhat.com> re-wrote it
significantly to use the proc filesystem, changing a few
things in the process.
Michael Shields <shields@msrl.com> added the pid-list
feature.
Charles Blake <cblake@bbn.com> added multi-level
sorting, the dirent-style library, the device name-to-number
mmaped database, the approximate binary search directly on
System.map, and many code and documentation cleanups.
David Mosberger-Tang wrote the generic BFD support for
psupdate.
Albert Cahalan <acahalan@cs.uml.edu> rewrote ps for
full Unix98 and BSD support, along with some ugly hacks for
obsolete and foreign syntax.
Michael K. Johnson <johnsonm@redhat.com> is the current maintainer.
Please send bug reports to <procps-list@redhat.com>
![]() |
ps(1) | ![]() |