PS(1) GENIX Programmer's Manual PS(1)
NAME
ps - process status
SYNOPSIS
ps [acegklstuvwx#]
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 stat 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, T for stopped 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) 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 processes priority is reduced, a N is shown, if the
process priority has been artificially raised then a '<' is shown;
process running without special treatment have just a blank. The
final letter indicates any special treatment of the process for vir-
tual memory replacement; the letters correspond to options to the
vadvise (2) call; currently the possibilities are A standing for
VA_ANOM, S for VA_SEQL and blank for VA_NORM ; an A typically
represents a lisp (1) in garbage collection, S is typical of large
image processing programs which are using virtual memory to sequen-
tially address voluminous data.
Here are the options:
a asks for information about all processes with terminals (ordi-
narily 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.
Printed 11/16/83 1
PS(1) GENIX Programmer's Manual PS(1)
g asks for all processes. Without this option, ps only prints
"interesting" processes. Processes are deemed to be unin-
teresting if they are process group leaders. This normally
eliminates top-level command interpreters and processes waiting
for users to login on free terminals.
k causes the file / vmcore is used in place of / dev/kmen and
/dev/men . This is used for post-mortem system debugging.
l asks for a long listing, with fields PPID, CP, PRI, NI, ADDR,
SIZE, RSS and WCHAN as described below.
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, tco
for console, td0 for ttyd0, t? for processes with no tty, etc).
This option must be the last one given.
u A user oriented output is produced. This includes fields USER,
%CPU, NICE, SIZE, and RSS as described below.
v 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.
w Use a wide output format (132 columns rather than 80); if
repeated, e.g. ww, use arbitrarily wide output. This informa-
tion is used to decide how much of long commands print.
x asks even about processes with no terminal.
# 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 tells ps where to look for core if the k option is
given, instead of /vmcore. A third argument is the name of a swap
file to use instead of the default /dev/drum. If a fourth argument
is given, it is taken to be the file containing the system's namel-
ist. Otherwise, /vmunix 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 nice(2))
Printed 11/16/83 2
PS(1) GENIX Programmer's Manual PS(1)
SIZE vitual size of the process (in 1024 byte unites)
RSS real memory (resident set) size of the process (in 1024
byte unites)
LIM soft limit on memory used, specified via a call to
vlimit(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 pro-
cess to pages not to 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 sys-
tem), with the initial part of the address trimmed off
e.g. 80004000 prints as 4000.
F flags associated with process as in
/usr/include/sys/proc.h:
SLOAD 000001 in core
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
SNUSIG 100000 using new signal mechanism
A process that has exited and has a parent, but has not yet been
waited for by the parent 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
Printed 11/16/83 3
PS(1) GENIX Programmer's Manual PS(1)
entitled to destroy this information, so the names cannot be counted
on too much.
FILES
/vmunix system namelist
/dev/kmem kernel memory
/dev/drum swap device
/vmcore core file
/dev searched to find swap device and tty names
SEE ALSO
kill(1), w(1)
BUGS
Things can change while ps is running; the picture it gives is only
a close approximation to reality.
Printed 11/16/83 4