ps — report
process status
ps |
[-aAcdefFjHlLmPWyZ] [-g
grplist] [-h
lgrplist] [-n
namelist] [-o
format]... [-p
proclist] [-s
sidlist] [-t
term] [-u
uidlist] [-U
uidlist] [-G
gidlist] [-z
zonelist] |
The ps command prints information about
active processes. Without options, ps prints
information about processes that have the same effective user ID and the
same controlling terminal as the invoker. The output contains only the
process ID, terminal identifier, cumulative execution time, and the command
name. Otherwise, the information that is displayed is controlled by the
options.
Some options accept lists as arguments. Items in a list can be
either separated by commas or else enclosed in quotes and separated by
commas or spaces. Values for proclist and
grplist must be numeric.
The ps command also accepts BSD-style
options (e.g. aux). See ps(1B).
The following options are supported:
-a
- Lists information about all processes most frequently requested: all those
except session leaders and processes not associated with a terminal.
This option is ignored when the -e
option is also specified.
-A
- Lists information for all processes. Identical to
-e, below.
-c
- Prints information in a format that reflects scheduler properties as
described in priocntl(1). The
-c option affects the output of the
-f and -l options, as
described below.
-d
- Lists information about all processes except session leaders.
-e
- Lists information about every process now running.
When the -e option is specified,
options -z, -t,
-u, -U,
-g, -G,
-p, -h,
-s, and -a have no
effect.
-f
- Generates a full listing. (See below for significance of columns in a full
listing.)
-F
- Generates a full listing but shows up to 4096 characters of the current
command arguments for a process (which may have been changed since the
process was launched).
-g
grplist
- Lists only process data whose group leader's ID number(s) appears in
grplist. (A group leader is a process whose process
ID number is identical to its process group ID number.)
This option is ignored when the -e
option is also specified.
-G
gidlist
- Lists information for processes whose real group ID numbers are given in
gidlist. The gidlist must be a
single argument in the form of a blank- or comma-separated list.
This option is ignored when the -e
option is also specified.
-h
lgrplist
- Lists only the processes homed to the specified
lgrplist. Nothing is listed for any invalid group
specified in lgrplist.
This option is ignored when the -e
option is also specified.
-H
- Prints the home lgroup of the process under an additional column header,
LGRP.
-j
- Prints session ID and process group ID.
-l
- Generates a long listing. (See below).
-L
- Prints information about each light weight process (lwp) in each selected
process. (See below).
-m
- Prints microstate information about the process or, when
-L is specified, each thread. See below for a list
of the output fields this adds.
-n
namelist
- Specifies the name of an alternative system namelist
file in place of the default. This option is accepted for compatibility,
but is ignored.
-o
format
- Prints information according to the format specification given in
format. This is fully described in
DISPLAY FORMATS. Multiple
-o options can be specified; the format
specification is interpreted as the space-character-separated
concatenation of all the format
option-arguments.
-p
proclist
- Lists only process data whose process ID numbers are given in
proclist.
This option is ignored when the -e
option is also specified.
-P
- Prints the number of the processor to which the process or lwp is bound,
if any, under an additional column header,
PSR.
-s
sidlist
- Lists information on all session leaders whose IDs appear in
sidlist.
This option is ignored when the -e
option is also specified.
-t
term
- Lists only process data associated with term.
Terminal identifiers are specified as a device file name, and an
identifier. For example,
term/a,
or
pts/0.
This option is ignored when the -e
option is also specified.
-u
uidlist
- Lists only process data whose effective user ID number or login name is
given in uidlist. In the listing, the numerical user
ID is printed unless you give the
-f option, which
prints the login name.
This option is ignored when the -e
option is also specified.
-U
uidlist
- Lists information for processes whose real user ID numbers or login names
are given in uidlist. The
uidlist must be a single argument in the form of a
blank- or comma-separated list.
This option is ignored when the -e
option is also specified.
-W
- Truncate long names even when
ps would normally
print them in full. A trailing asterisk marks a long name that has been
truncated to fit the column.
-y
- Under a long listing (
-l), omits the obsolete
F and ADDR columns and includes an
RSS column to report the resident set size of the
process. Under the -y option, both
RSS and SZ (see below) is reported in
units of kilobytes instead of pages.
-z
zonelist
- Lists only processes in the specified zones. Zones can be specified either
by name or ID. This option is only useful when executed in the global
zone.
This option is ignored when the -e
option is also specified.
-Z
- Prints the name of the zone with which the process is associated under an
additional column header, ZONE. The
ZONE column width is limited to 8 characters. Use
ps -eZ for a quick way to
see information about every process now running along with the associated
zone name. Use
ps -eo zone,uid,pid,ppid,time,comm,...
to see zone names wider than 8 characters.
Many of the options shown are used to select processes to list. If
any are specified, the default list is ignored and
ps selects the processes represented by the
inclusive OR of all the selection-criteria options.
Under the -f option,
ps tries to determine the command name and arguments
given when the process was created by examining the user block. Failing
this, the command name is printed, as it would have appeared without the
-f option, in square brackets.
The column headings and the meaning of the columns in a
ps listing are given below; the letters
f and l indicate the option (full or
long, respectively) that causes the corresponding heading to appear;
all means that the
heading always appears. Note: These two options determine only what
information is provided for a process; they do not determine which processes
are listed.
- F (l)
- Flags (hexadecimal and additive) associated with the process. These flags
are available for historical purposes; no meaning should be currently
ascribed to them.
- S (l)
- The state of the process:
- O
- Process is running on a processor.
- S
- Sleeping: process is waiting for an event to complete.
- R
- Runnable: process is on run queue.
- T
- Process is stopped, either by a job control signal or because it is
being traced.
- W
- Waiting: process is waiting for CPU usage to drop to the CPU-caps
enforced limits.
- Z
- Zombie state: process terminated and parent not waiting.
- UID
(f,l)
- The effective user ID number of the process (the login name is printed
under the
-f option). A trailing asterisk marks a
long name that has been truncated to fit the column.
- PID
(all)
- The process ID of the process (this datum is necessary in order to kill a
process.)
- PPID
(f,l)
- The process ID of the parent process.
- C (f,l)
- Processor utilization for scheduling (obsolete). Not printed when the
-c option is used.
- CLS
(f,l)
- Scheduling class. Printed only when the
-c option
is used.
- PRI
(l)
- The priority of the process. Without the
-c
option, higher numbers mean lower priority. With the
-c option, higher numbers mean higher
priority.
- NI (l)
- Nice value, used in priority computation. Not printed when the
-c option is used. Only processes in the certain
scheduling classes have a nice value.
- ADDR
(l)
- The memory address of the process.
- SZ (l)
- The total size of the process in virtual memory, including all mapped
files and devices, in pages. See
pagesize(1).
- WCHAN
(l)
- The address of an event for which the process is sleeping (if blank, the
process is running).
- STIME
(f)
- The starting time of the process, given in hours, minutes, and seconds. (A
process begun more than twenty-four hours before the
ps inquiry is executed is given in months and
days.)
- TTY
(all)
- The controlling terminal for the process (the message,
?, is printed
when there is no controlling terminal).
- TIME
(all)
- The cumulative execution time for the process.
- LTIME (all)
- The execution time for the lwp being reported.
- CMD
(all)
- The command name (or, with the
-f option, the full
command name and its arguments up to a limit of 80 characters or, with the
-F option, up to 4096 characters of the current
process arguments).
The following two additional columns are printed when the
-j option is specified:
- PGID
- The process ID of the process group leader.
- SID
- The process ID of the session leader.
The following two additional columns are printed when the
-L option is specified:
- LWP
- The lwp ID of the lwp being reported.
- NLWP
- The number of lwps in the process (if
-f is also
specified).
Under the -L option, one line is printed
for each lwp in the process and the time-reporting fields
STIME and LTIME show the values for the
lwp, not the process. A traditional single-threaded process contains only
one lwp.
The -m option prints information about the
process or thread microstate accounting. When looking at information for a
process, it is a summation across all threads that currently exist or have
ever existed in the process. Use the -o option for
stable output. Stable output for these fields is printed as a hexadecimal
number of nanoseconds. Otherwise, times are humanized and are displayed in
the following units:
- ns
- nanoseconds
- us
- microseconds
- ms
- milliseconds
- s
- seconds
- m
- minutes
- h
- hours
- d
- days
- y
- years
The following additional columns are printed when the
-m option is specified:
- USERTIME
- Elapsed time spent in user mode.
- SYSTIME
- Elapsed time spent in system mode. Generally due to executing system calls
or page faults.
- TTIME
- Time spent in other system traps.
- TFTIME
- Time spent asleep in user text page faults.
- DFTIME
- Time spent asleep in user data page faults.
- KFTIME
- Time spent asleep in kernel page faults.
- LTIME
- Time spent asleep waiting for a user-mode lock.
- SLPTIME
- Time spent asleep for any other reason.
- WTIME
- Time spent runnable, but waiting for CPU availability.
- STOPTIME
- Time spent stopped for any reason, such as job control, use of
/proc, etc.
A process that has exited and has a parent, but has
not yet been waited for by the parent, is marked
<defunct>.
The -o option allows the output format to
be specified under user control.
The format specification must be a list of names presented as a
single argument, blank- or comma-separated. Each variable has a default
header. The default header can be overridden by appending an equals sign and
the new text of the header. The rest of the characters in the argument is
used as the header text. The fields specified are written in the order
specified on the command line, and should be arranged in columns in the
output. The field widths are selected by the system to be at least as wide
as the header text (default or overridden value). If the header text is
null, such as -o user= the
field width is at least as wide as the default header text. Long names are
not truncated in this mode. If all header text fields are null, no header
line is written.
The following names are recognized in the POSIX locale:
- user
- The effective user ID of the process. This is the textual user ID, if it
can be obtained and the field width permits, or a decimal representation
otherwise.
- ruser
- The real user ID of the process. This is the textual user ID, if it can be
obtained and the field width permits, or a decimal representation
otherwise.
- group
- The effective group ID of the process. This is the textual group ID, if it
can be obtained and the field width permits, or a decimal representation
otherwise.
- rgroup
- The real group ID of the process. This is the textual group ID, if it can
be obtained and the field width permits, or a decimal representation
otherwise.
- pid
- The decimal value of the process ID.
- ppid
- The decimal value of the parent process ID.
- pgid
- The decimal value of the process group ID.
- pcpu
- The ratio of CPU time used recently to CPU time available in the same
period, expressed as a percentage. The meaning of ‘recently’
in this context is unspecified. The CPU time available is determined in an
unspecified manner.
- vsz
- The total size of the process in virtual memory, in kilobytes.
- nice
- The decimal value of the system scheduling priority of the process. See
nice(1).
- etime
- In the POSIX locale, the elapsed time since the process was started, in
the form:
[[dd-]hh:]mm:ss
where
- dd
- is the number of days
- hh
- is the number of hours
- mm
- is the number of minutes
- ss
- is the number of seconds
The dd field is a decimal integer. The
hh, mm, and ss
fields are two-digit decimal integers padded on the left with zeros.
- time
- In the POSIX locale, the cumulative CPU time of the process in the form:
[dd-]hh:mm:ss
The dd, hh,
mm, and ss fields are as described
in the etime specifier.
- tty
- The name of the controlling terminal of the process (if any) in the same
format used by the who(1) command.
- comm
- The name of the command being executed (argv[0] value) as a string.
- args
- The command with all its arguments as a string. The implementation might
truncate this value to the field width; it is implementation-dependent
whether any further truncation occurs. It is unspecified whether the
string represented is a version of the argument list as it was passed to
the command when it started, or is a version of the arguments as they
might have been modified by the application. Applications cannot depend on
being able to modify their argument list and having that modification be
reflected in the output of
ps. However, the
current implementation will display up to 4096 characters of the modified
process arguments when given the -F option,
otherwise this is the initial process arguments limited to 80 bytes.
The following names are recognized in the illumos
implementation:
- f
- Flags (hexadecimal and additive) associated with the process.
- s
- The state of the process.
- c
- Processor utilization for scheduling (obsolete).
- uid
- The effective user ID number of the process as a decimal integer.
- ruid
- The real user ID number of the process as a decimal integer.
- gid
- The effective group ID number of the process as a decimal integer.
- rgid
- The real group ID number of the process as a decimal integer.
- projid
- The project ID number of the process as a decimal integer.
- project
- The project ID of the process as a textual value if that value can be
obtained; otherwise, as a decimal integer.
- zoneid
- The zone ID number of the process as a decimal integer.
- zone
- The zone ID of the process as a textual value if that value can be
obtained; otherwise, as a decimal integer.
- sid
- The process ID of the session leader.
- taskid
- The task ID of the process.
- class
- The scheduling class of the process.
- pri
- The priority of the process. Higher numbers mean higher priority.
- opri
- The obsolete priority of the process. Lower numbers mean higher
priority.
- lwp
- The decimal value of the lwp ID. Requesting this formatting option causes
one line to be printed for each lwp in the process.
- lwpname
- The name of the lwp, if set. Requesting this formatting option causes one
line to be printed for each lwp in the process.
- nlwp
- The number of lwps in the process.
- psr
- The number of the processor to which the process or lwp is bound.
- pset
- The ID of the processor set to which the process or lwp is bound.
- addr
- The memory address of the process.
- osz
- The total size of the process in virtual memory, in pages.
- wchan
- The address of an event for which the process is sleeping (if -1, the
process is running).
- stime
- The starting time or date of the process, printed with no blanks.
- The resident set size of the process, in kilobytes. The
rss value reported by
ps is an
estimate provided by proc(5) that
might underestimate the actual resident set size. Users who wish to get
more accurate usage information for capacity planning should use
pmap(1) -x
instead.
- pmem
- The ratio of the process's resident set size to the physical memory on the
machine, expressed as a percentage.
- fname
- The first 8 bytes of the base name of the process's executable file.
- ctid
- The contract ID of the process contract the process is a member of as a
decimal integer.
- lgrp
- The home lgroup of the process.
- dmodel
- The data model of the process, printed in the same manner as via
pflags(1). The currently supported
data models are _ILP32 and _LP64.
- usertime
- Elapsed time executing in user mode.
- systime
- Elapsed time executing in system mode. Generally due to executing system
calls or page faults.
- ttime
- Time spent in other system traps.
- tftime
- Time spent asleep in user text page faults.
- dftime
- Time spent asleep in user data page faults.
- kftime
- Time spent asleep in kernel page faults.
- ltime
- Time spent asleep waiting for a user-mode lock.
- slptime
- Time spent asleep for any other reason.
- wtime
- Time spent runnable, but waiting for CPU availability.
- stoptime
- Time spent stopped for any reason, such as job control, use of
/proc, etc.
- minf
- Number of minor page faults.
- majf
- Number of major page faults.
- vctx
- Count of voluntary context switches.
- ictx
- Count of involuntary context switches.
- sigs
- Count of signals received.
- sysc
- Count of system calls executed.
Only comm, lwpname, and
args are allowed to contain blank characters; all others,
including the illumos implementation variables, are not.
The following table specifies the default header to be used in the
POSIX locale corresponding to both standard and illumos-specific format
specifiers.
| Format
Specifier |
Default
Header |
| addr |
ADDR |
| args |
COMMAND |
| c |
C |
| class |
CLS |
| comm |
COMMAND |
| ctid |
CTID |
| etime |
ELAPSED |
| f |
F |
| fname |
COMMAND |
| gid |
GID |
| group |
GROUP |
| lgrp |
LGRP |
| lwp |
LWP |
| lwpname |
LWPNAME |
| nice |
NI |
| nlwp |
NLWP |
| opri |
PRI |
| osz |
SZ |
| pcpu |
%CPU |
| pgid |
PGID |
| pid |
PID |
| pmem |
%MEM |
| ppid |
PPID |
| pri |
PRI |
| project |
PROJECT |
| projid |
PROJID |
| psr |
PSR |
| rgid |
RGID |
| rgroup |
RGROUP |
| rss |
RSS |
| ruid |
RUID |
| ruser |
RUSER |
| s |
S |
| sid |
SID |
| stime |
STIME |
| taskid |
TASKID |
| time |
TIME |
| tty |
TT |
| uid |
UID |
| user |
USER |
| vsz |
VSZ |
| wchan |
WCHAN |
| zone |
ZONE |
| zoneid |
ZONEID |
See environ(7) for
descriptions of the following environment variables that affect the
execution of ps: LANG,
LC_ALL, LC_CTYPE,
LC_MESSAGES, LC_TIME, and
NLSPATH.
COLUMNS
- Override the system-selected horizontal screen size, used to determine the
number of text columns to display.
- /dev/pts/*,
/dev/term/*
- terminal (“tty”) character devices
- /etc/passwd
- UID information supplier
- /proc/*
- process control files
The following exit values are returned:
- 0
- Successful completion.
- >0
- An error occurred.
Example
1 Using ps Command
The command:
example% ps -o user,pid,ppid=MOM -o args
writes the following in the POSIX locale:
USER PID MOM COMMAND
helene 34 12 ps -o uid,pid,ppid=MOM -o args
The contents of the
COMMAND field
need not be the same due to possible truncation.
kill(1),
lgrpinfo(1),
nice(1),
pagesize(1),
pmap(1),
priocntl(1),
who(1),
ps(1B),
proc(5),
ttysrch(5),
attributes(7),
environ(7),
resource_controls(7),
standards(7),
zones(7),
getty(8)
Things can change while ps is running. The
snapshot it gives is true only for a split-second, and it might not be
accurate by the time you see it. Some data printed for defunct processes is
irrelevant.
If no options to select processes are specified,
ps reports all processes associated with the
controlling terminal. If there is no controlling terminal, there is no
report other than the header.
ps -eF or
ps -o
stime might not report the actual start of a tty login
session, but rather an earlier time, when a getty was last respawned on the
tty line.
ps is CSI-enabled except for login names
(usernames).