PS(1)PS(1)NAMEps - process status
SYNOPSISps [ aceglnstuvwxU# ]
DESCRIPTION
Ps prints information about processes. Normally, only your processes
are candidates to be printed by ps; specifying a causes other users'
processes to be candidates to be printed; specifying x 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 three letters, e.g. ``RWN''. The first
letter indicates the runnability of the process: R for runnable
processes, U for uninterruptible processes, S for those sleeping for
less than about 20 seconds, I for idle (sleeping longer than about 20
seconds), T for stopped processes, H for halted processes, P for
processes in page wait, and D for those in disk (or other short term)
waits, processes. 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)
not swapped. 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 blank.
Here are the options:
a asks for information about all processes with terminals
(ordinarily only one's own processes are displayed).
c 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.
e asks for the environment to be printed as well as the arguments to
the command.
g asks for all processes. Without this option, ps 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.
l asks for a long listing, with fields PPID, CP, PRI, NI, ADDR,
VSIZE, RSIZE and WCHAN as described below.
m prints out the threads corresponding to each task.
n 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 UID field.
s adds the size SSIZ of the kernel stack of each process (for use by
system maintainers) to the basic output format.
tx restricts output to processes whose controlling tty is x (which
should be specified as printed by ps, e.g. t3 for tty3, co for
console, da for ttyda, ? for processes with no tty, and ´ a´ or
´ b´ for ttya and ttyb respectively. This option must be the last
one given.
u A user oriented output is produced. This includes fields USER,
%CPU, NICE, VSIZE, and RSIZE as described below.
v A version of the output containing virtual memory statistics is
output. This includes fields RE, SL, PAGEIN, VSIZE, RSIZE, LIM,
TSIZ, TRS, %CPU and %MEM, described below. Because the NeXT
computer is a Mach system (which doesn't necessarily record the
same information as a UNIX 4.3BSD system) several of these fields
will always be 0.
w 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.
x asks even about processes with no terminal.
U is a flag retained for backwards compatibility. This flag does
nothing on the NeXT system.
# A process number may be given, (indicated here by #), in which
case the output 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, /mach is used.
Fields which are not common to all output formats:
USER name of the owner of the process
%CPU 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%.
NICE (or NI) process scheduling increment (see setpriority(2))
VSIZE virtual size of the process (in bytes)
RSIZE real memory (resident set) size of the process (in bytes)
LIM soft limit on memory used, specified via a call to
setrlimit(2); if no limit has been specified then shown as xx
TSIZ size of text (shared program) image
TRS size of resident (real memory) set of text
%MEM percentage of real memory used by this process.
RE residency time of the process (seconds in core)
SL sleep time of the process (seconds blocked)
PAGEIN number of disk i/o's resulting from references by the process
to pages not loaded in core.
UID numerical user-id of process owner
PPID numerical id of parent of process
CP short-term cpu utilization factor (used in scheduling)
PRI process priority (non-positive when in non-interruptible
wait)
ADDR swap address of the process
WCHAN 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 n flag). In this
case, the initial part of the address is trimmed off and is
printed hexadecimally, e.g., 0x80004000 prints as 4000.
F flags associated with process as in <sys/proc.h>:
SLOAD 00000001 in core
SSYS 00000002 swapper or pager process
SLOCK 00000004 process being swapped out
SSWAP 00000008 save area flag
STRC 00000010 process is being traced
SWTED 00000020 another tracing flag
SULOCK 00000040 user settable lock in core
SPAGE 00000080 process in page wait state
SKEEP 00000100 another flag to prevent swap out
SOMASK 00000200 restore old mask after taking signal
SWEXIT 00000400 working on exiting
SPHYSIO 00000800 doing physical i/o
SVFORK 00001000 process resulted from vfork()
SVFDONE 00002000 another vfork flag
SNOVM 00004000 no vm, parent in a vfork()
SPAGI 00008000 init data space on demand from inode
SSEQL 00010000 user warned of sequential vm behavior
SUANOM 00020000 user warned of anomalous vm behavior
STIMO 00040000 timing out during sleep
SACTIVE 00080000 process is executing
SOUSIG 00100000 using old signal mechanism
SOWEUPC 00200000 owe process and addupc() call at next ast
SSEL 00400000 selecting; wakeup/waiting danger
SLOGIN 00800000 a login process (legitimate child of init)
SLKDONE 20000000 record-locking has been done
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>; Ps 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.
FILES
/mach system namelist /dev searched to find swap
device and tty names
SEE ALSOkill(1), w(1)BUGS
Things can change while ps is running; the picture it gives is only a
close approximation to reality.
4th Berkeley Distribution August 23, 1989 PS(1)