.\" Copyright (c) 1980 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\" @(#)ps.1 6.4 (Berkeley) %G%
prints information about processes.
Normally, only your processes are candidates to be printed by
causes other users' processes to be candidates to be printed;
includes processes without control terminals in the candidate pool.
All output formats include, for each process, the process id PID,
control terminal of the process TT, cpu time used by the process TIME
(this includes both user and system time), the state STAT of the process,
and an indication of the COMMAND which is running.
The state is given by a sequence of four letters, e.g. ``RWNA''.
The first letter indicates the runnability of the process:
R for runnable processes,
P for processes in page wait,
D for those in disk (or other short term) waits,
S for those sleeping for less than about 20 seconds,
and I for idle (sleeping longer than about 20 seconds)
The second letter indicates whether a process is swapped out,
showing W if it is, or a blank if it is loaded (in-core);
a process which has specified a soft limit on memory requirements
and which is exceeding that limit shows >; such a process is (necessarily)
The third letter indicates whether a process is running with altered
CPU scheduling priority (nice); if the process priority is reduced,
an N is shown, if the process priority has been artificially raised then
a `<' is shown; processes running without special treatment have just a
The final letter indicates any special treatment of the process for virtual
memory replacement; the letters correspond to options to the
call; currently the possibilities are A standing for VA_ANOM,
S for VA_SEQL and blank for VA_NORM; an A typically represents a
in garbage collection, S is typical of large image processing programs
which are using virtual memory to sequentially address voluminous data.
asks for information about all processes with terminals (ordinarily
only one's own processes are displayed).
prints the command name, as stored internally in the system for purposes
of accounting, rather than the command arguments, which are kept
in the process' address space. This is more reliable, if less informative,
since the process is free to destroy the latter information.
Asks for the environment to be printed as well as the arguments to the command.
only prints ``interesting'' processes.
Processes are deemed to be uninteresting if they are process group leaders.
This normally eliminates top-level command interpreters and processes
waiting for users to login on free terminals.
.IR /dev/kmem " and " /dev/mem.
postmortem system debugging.
asks for a long listing, with fields PPID, CP, PRI, NI, ADDR, SIZE, RSS and
WCHAN as described below.
Asks for numerical output.
In a long listing, the WCHAN field is printed numerically rather than
symbolically, or, in a user listing, the USER field is replaced by a
Adds the size SSIZ of the kernel stack of each process (for use by system
maintainers) to the basic output format.
restricts output to processes whose controlling tty is \fIx\fR
(which should be specified as printed by
for processes with no tty,
for processes at the current tty,
This option must be the last one given.
A user oriented output is produced.
This includes fields USER, %CPU, NICE, SIZE, and RSS as described below.
A version of the output containing virtual memory statistics is output.
This includes fields RE, SL, PAGEIN, SIZE, RSS, LIM, TSIZ, TRS, %CPU
and %MEM, described below.
Use a wide output format (132 columns rather than 80); if repeated,
e.g. ww, use arbitrarily wide output.
This information is used to decide how much of long commands to print.
asks even about processes with no terminal.
causes ps to update a private database where it keeps system
information. Thus ``ps U'' should be included in the /etc/rc file.
A process number may be given,
is restricted to that process.
This option must also be last.
A second argument is taken
to be the file containing the system's
namelist. Otherwise, /vmunix is used.
option is given, instead of /vmcore.
If a fourth argument is given, it
is taken to be the name of a swap file to use instead of
Fields which are not common to all output formats:
name of the owner of the process
cpu utilization of the process; this is a decaying average over up to
a minute of previous (real) time. Since the time base over which this
is computed varies (since processes may be very young) it is possible
for the sum of all %CPU fields to exceed 100%.
(or NI) process scheduling increment (see
virtual size of the process (in 1024 byte units)
real memory (resident set) size of the process (in 1024 byte units)
soft limit on memory used, specified via a call to
if no limit has been specified then shown as \fIxx\fR
size of text (shared program) image
size of resident (real memory) set of text
percentage of real memory used by this process.
residency time of the process (seconds in core)
sleep time of the process (seconds blocked)
number of disk i/o's resulting from references by the process
to pages not loaded in core.
numerical user-id of process owner
numerical id of parent of process
short-term cpu utilization factor (used in scheduling)
process priority (non-positive when in non-interruptible wait)
swap address of the process
event on which process is waiting (an address in the system).
A symbol is chosen that classifies the address, unless numerical
output is requested (see the
In this case, the initial part of the address is
trimmed off and is printed hexadecimally, e.g., 0x80004000 prints as 4000.
flags associated with process as in
SSYS 000002 swapper or pager process
SLOCK 000004 process being swapped out
SSWAP 000008 save area flag
STRC 000010 process is being traced
SWTED 000020 another tracing flag
SULOCK 000040 user settable lock in core
SPAGE 000080 process in page wait state
SKEEP 000100 another flag to prevent swap out
SDLYU 000200 delayed unlock of pages
SWEXIT 000400 working on exiting
SPHYSIO 000800 doing physical i/o (bio.c)
SVFORK 001000 process resulted from vfork()
SVFDONE 002000 another vfork flag
SNOVM 004000 no vm, parent in a vfork()
SPAGI 008000 init data space on demand from inode
SANOM 010000 system detected anomalous vm behavior
SUANOM 020000 user warned of anomalous vm behavior
STIMO 040000 timing out during sleep
SDETACH 080000 detached inherited by init
SOUSIG 100000 using old signal mechanism
A process that has exited and has a parent that has not
yet waited for the process is marked <defunct>; a process
which is blocked trying to exit is marked <exiting>;
makes an educated guess as to the file name
and arguments given when the process was created
by examining memory or the swap area.
The method is inherently somewhat unreliable and in any event
a process is entitled to destroy this information,
so the names cannot be counted on too much.
.ta \w'/etc/psdatabase 'u
/dev searched to find swap device and tty names
/etc/psdatabase system namelist, device, and wait channel information
is running; the picture it gives is only a close
approximation to reality.