PS(1) MachTen Programmer’s Manual PS(1)

NAME
ps - process status

SYNOPSIS
ps [ aceglnstuvwxU# ]

DESCRIPTION
Ps prints information about processes. Normally, only
your processes are candidates to be printed by ps; speci-
fying a causes other users’ processes to be candidates to
be printed; specifying x includes processes without con-
trol 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 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 sec-
onds, and I for idle (sleeping longer than about 20 sec-
onds) processes. Additional characters after these, if
any, indicate additional state information. The letter W
indicates that 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. An additional letter may indi-
cate 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.

Here are the options:

a asks for information about all processes with termi-
nals (ordinarily only one’s own processes are dis-
played).

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 infor-
mative, since the process is free to destroy the lat-
ter 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 F, UID, PID,
PPID, PRI, NI, ADDR, SIZE, RSS, STAT, TT, TIME and
COMMAND as described below.

n Asks for numerical output. In a user listing, the
USER field is replaced by a UID field.

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, t for processes at the current
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 information is used to decide how much of long
commands to 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 pro-
cess. This option must also be last.

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 decay-
ing 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 set-
priority(2))
SIZE (or SZ) virtual size of the process (in 1024
byte units)
RSS real memory (resident set) size of the process
(in 1024 byte units)
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
PRI process priority (non-positive when in non-
interruptible wait)
ADDR text address of the process
F flags associated with process as in
<sys/proc.h>:

SLOAD 000001 in core
SSWAP 000008 save area flag
STRC 000010 process is being traced
SWTED 000020 another tracing flag
SULOCK 000040 user settable lock in core
SWEXIT 000400 working on exiting
SPHYSIO 000800 doing physical i/o (bio.c)
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>; 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 unreli-
able and in any event a process is entitled to destroy
this information, so the names cannot be counted on too
much.

FILES
/vmunix system namelist
/dev/kmem kernel memory
/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.

MachTen March 10, 1988 3