This version of ps accepts several kinds of options.
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.
Switch | Description |
-A | select all processes |
-N | negate selection |
-a | select all with a tty except session leaders |
-d | select all, but omit session leaders |
-e | select all processes |
T | select all processes on this terminal |
a |
select all processes on a terminal, including those of other users
|
g |
really all, even group leaders (does nothing w/o SunOS settings)
|
r | restrict output to running processes |
x | select processes without controlling ttys |
--deselect | negate selection |
Switch | Description |
-C | select by command name |
-G | select by RGID (supports names) |
-U | select by RUID (supports names) |
-g | select by session leader OR by group name |
-p | select by PID |
-s | select processes belonging to the sessions given |
-t | select by tty |
-u | select by effective user ID (supports names) |
U | select processes for specified users |
p | select by process ID |
t | select by tty |
--Group | select by real group name or ID |
--User | select by real user name or ID |
--group | select by effective group name or ID |
--pid | select by process ID |
--sid | select by session ID |
--tty | select by terminal |
--user | select by effective user name or ID |
-123 | implied --sid |
123 | implied --pid |
Switch | Description |
-O | is preloaded "-o" |
-c | different scheduler info for -l option |
-f | does full listing |
-j | jobs format |
-l | long format |
-o | user-defined format |
-y | do not show flags; show rss in place of addr |
O | is preloaded "o" (overloaded) |
X | old Linux i386 register format |
j | job control format |
l | display long format |
o | specify user-defined format |
s | display signal format |
u | display user-oriented format |
v | display virtual memory format |
--format | user-defined format |
Switch | Description |
-H | show process hierarchy (forest) |
-m | show threads |
-n | set namelist file |
-w | wide output |
C | use raw CPU time for %CPU instead of decaying average |
N | specify namelist file |
O | sorting order (overloaded) |
S |
include some dead child process data (as a sum with the parent)
|
c | true command name |
e | show environment after the command |
f | ASCII-art process hierarchy (forest) |
h |
do not print header lines (repeat header lines in BSD personality)
|
m | all threads |
n | numeric output for WCHAN and USER |
w | wide output |
--cols | set screen width |
--columns | set screen width |
--cumulative |
include some dead child process data (as a sum with the parent)
|
--forest | ASCII art process tree |
--html | HTML escaped output |
--headers | repeat header lines |
--no-headers | print no header line at all |
--lines | set screen height |
--nul | unjustified output with NULs |
--null | unjustified output with NULs |
--rows | set screen height |
--sort | specify sorting order |
--width | set screen width |
--zero | unjustified output with NULs |
Switch | Description |
-V | print version |
L | list all format specifiers |
V | show version info |
--help | print help message |
--info | print debugging info |
--version | print version |
Switch | Description |
A | increase the argument space (DecUnix) |
M | use alternate core (try -n or N instead) |
W | get swap info from ... not /dev/drum (try -n or N instead) |
k | use /vmcore as c-dumpfile (try -n or N instead) |
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:
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.
ALIGNWARN | 001 | print alignment warning msgs |
STARTING | 002 | being created |
EXITING | 004 | getting shut down |
PTRACED | 010 | set if ptrace (0) has been called |
TRACESYS | 020 | tracing system calls |
FORKNOEXEC | 040 | forked but didn't exec |
SUPERPRIV | 100 | used super-user privileges |
DUMPCORE | 200 | dumped core |
SIGNALED | 400 | killed by a signal |
D | uninterruptible sleep (usually IO) |
R | runnable (on run queue) |
S | sleeping |
T | traced or stopped |
Z | a defunct ("zombie") process |
For BSD formats and when the "stat" keyword is used, additional letters may be displayed:
W | has no resident pages |
< | high-priority process |
N | low-priority task |
L | has pages locked into memory (for real-time and custom IO) |
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.
KEY | LONG | DESCRIPTION |
c | cmd | simple name of executable |
C | cmdline | full command line |
f | flags | flags as in long format F field |
g | pgrp | process group ID |
G | tpgid | controlling tty process group ID |
j | cutime | cumulative user time |
J | cstime | cumulative system time |
k | utime | user time |
K | stime | system time |
m | min_flt | number of minor page faults |
M | maj_flt | number of major page faults |
n | cmin_flt | cumulative minor page faults |
N | cmaj_flt | cumulative major page faults |
o | session | session ID |
p | pid | process ID |
P | ppid | parent process ID |
r | rss | resident set size |
R | resident | resident pages |
s | size | memory size in kilobytes |
S | share | amount of shared pages |
t | tty | the minor device number of tty |
T | start_time | time process was started |
U | uid | user ID number |
u | user | user name |
v | vsize | total VM size in bytes |
y | priority | kernel scheduling priority |
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"
CODE | NORMAL | HEADER |
%C | pcpu | %CPU |
%G | group | GROUP |
%P | ppid | PPID |
%U | user | USER |
%a | args | COMMAND |
%c | comm | COMMAND |
%g | rgroup | RGROUP |
%n | nice | NI |
%p | pid | PID |
%r | pgid | PGID |
%t | etime | ELAPSED |
%u | ruser | RUSER |
%x | time | TIME |
%y | tty | TTY |
%z | vsz | VSZ |
These may be used to control both output format and sorting.
For example: ps -eo pid,user,args --sort user
CODE | HEADER |
%cpu | %CPU |
%mem | %MEM |
alarm | ALARM |
args | COMMAND |
blocked | BLOCKED |
bsdstart | START |
bsdtime | TIME |
c | C |
caught | CAUGHT |
cmd | CMD |
comm | COMMAND |
command | COMMAND |
cputime | TIME |
drs | DRS |
dsiz | DSIZ |
egid | EGID |
egroup | EGROUP |
eip | EIP |
esp | ESP |
etime | ELAPSED |
euid | EUID |
euser | EUSER |
f | F |
fgid | FGID |
fgroup | FGROUP |
flag | F |
flags | F |
fname | COMMAND |
fsgid | FSGID |
fsgroup | FSGROUP |
fsuid | FSUID |
fsuser | FSUSER |
fuid | FUID |
fuser | FUSER |
gid | GID |
group | GROUP |
ignored | IGNORED |
intpri | PRI |
lim | LIM |
longtname | TTY |
lstart | STARTED |
m_drs | DRS |
m_trs | TRS |
maj_flt | MAJFL |
majflt | MAJFLT |
min_flt | MINFL |
minflt | MINFLT |
ni | NI |
nice | NI |
nwchan | WCHAN |
opri | PRI |
pagein | PAGEIN |
pcpu | %CPU |
pending | PENDING |
pgid | PGID |
pgrp | PGRP |
pid | PID |
pmem | %MEM |
ppid | PPID |
pri | PRI |
rgid | RGID |
rgroup | RGROUP |
rss | RSS |
rssize | RSS |
rsz | RSZ |
ruid | RUID |
ruser | RUSER |
s | S |
sess | SESS |
session | SESS |
sgi_p | P |
sgi_rss | RSS |
sgid | SGID |
sgroup | SGROUP |
sid | SID |
sig | PENDING |
sig_block | BLOCKED |
sig_catch | CATCHED |
sig_ignore | IGNORED |
sig_pend | SIGNAL |
sigcatch | CAUGHT |
sigignore | IGNORED |
sigmask | BLOCKED |
stackp | STACKP |
start | STARTED |
start_stack | STACKP |
start_time | START |
stat | STAT |
state | S |
stime | STIME |
suid | SUID |
suser | SUSER |
svgid | SVGID |
svgroup | SVGROUP |
svuid | SVUID |
svuser | SVUSER |
sz | SZ |
time | TIME |
timeout | TMOUT |
tmout | TMOUT |
tname | TTY |
tpgid | TPGID |
trs | TRS |
trss | TRSS |
tsiz | TSIZ |
tt | TT |
tty | TT |
tty4 | TTY |
tty8 | TTY |
ucomm | COMMAND |
uid | UID |
uid_hack | UID |
uname | USER |
user | USER |
vsize | VSZ |
vsz | VSZ |
wchan | WCHAN |
The following environment variables could affect ps:
COLUMNS | Override default display width |
LINES | Override default display height |
PS_PERSONALITY | Set to one of posix,old,linux,bsd,sun,digital |
CMD_ENV | Set to one of posix,old,linux,bsd,sun,digital |
I_WANT_A_BROKEN_PS | Force obsolete command line interpretation |
LC_TIME | Date format |
PS_FORMAT | Default output format override |
PS_SYSMAP | Default namelist (System.map) location |
PS_SYSTEM_MAP | Default namelist (System.map) location |
POSIXLY_CORRECT | Don't find excuses to ignore bad "features" |
UNIX95 | Don't find excuses to ignore bad "features" |
_XPG | Cancel CMD_ENV=irix non-standard behavior |
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.
PS_PERSONALITY | Description |
none | "Do the right thing" |
aix | like AIX ps |
bsd | like FreeBSD ps |
compaq | like Digital Unix ps |
debian | like the old Debian ps |
digital | like Digital Unix ps |
gnu | like the old Debian ps |
hp | like HP-UX ps |
hpux | like HP-UX ps |
irix | like Irix ps |
linux | deviate from Unix98 for convenience only |
old | like the original Linux ps |
posix | standard |
sco | like SCO ps |
sgi | like Irix ps |
sun | like SunOS 4 ps |
sunos | like SunOS 4 ps |
sysv | standard |
unix | standard |
unix95 | standard |
unix98 | standard |
To see every process on the system using standard syntax:
Michael K. Johnson <johnsonm@redhat.com> is the current maintainer.
Please send bug reports to <procps-bugs@redhat.com>