PS(1) | General Commands Manual | PS(1) |
ps
— process
status
ps |
[-AaCcEefhjlMmrSTvwXx ]
[-O fmt |
-o fmt]
[-G
gid[,gid...]]
[-g
grp[,grp...]]
[-u
uid[,uid...]]
[-p
pid[,pid...]]
[-t
tty[,tty...]]
[-U
user[,user...]] |
ps |
[-L ] |
The ps
utility displays a header line,
followed by lines containing information about all of your processes that
have controlling terminals.
A different set of processes can be selected for display by using
any combination of the -a
,
-G
, -g
,
-p
, -T
,
-t
, -U
, and
-u
options. If more than one of these options are
given, then ps
will select all processes which are
matched by at least one of the given options.
For the processes which have been selected for display,
ps
will usually display one line per process. The
-M
option may result in multiple output lines (one
line per thread) for some processes. By default all of these output lines
are sorted first by controlling terminal, then by process ID. The
-m
, -r
, and
-v
options will change the sort order. If more than
one sorting option was given, then the selected processes will be sorted by
the last sorting option which was specified.
For the processes which have been selected for display, the
information to display is selected based on a set of keywords (see the
-L
, -O
, and
-o
options). The default output format includes, for
each process, the process' ID, controlling terminal, CPU time (including
both user and system time), state, and associated command.
The options are as follows:
-A
-a
-x
option is also specified.-C
-c
-d
-A
, but excludes session leaders.-E
-e
-A
.-f
-u
option is also used, display the user name
rather then the numeric uid. When -o
or
-O
is used to add to the display following
-f
, the command field is not truncated as severely
as it is in other formats.-G
-g
-h
-j
user
, pid
,
ppid
, pgid
,
sess
, jobc
,
state
, tt
,
time
, and command
.-L
-O
and
-o
options.-l
uid
, pid
,
ppid
, flags
,
cpu
, pri
,
nice
, vsz=SZ
,
rss
, wchan
,
state=S
, paddr=ADDR
,
tty
, time
, and
command=CMD
.-M
-m
-O
=
’) sign and a string. This causes
the printed header to use the specified string instead of the standard
header.-o
-o
option. Keywords may be appended
with an equals (‘=
’) sign and a
string. This causes the printed header to use the specified string instead
of the standard header. If all keywords have empty header texts, no header
line is written.-p
-r
-S
-T
-t
-U
-u
-v
pid
, state
,
time
, sl
,
re
, pagein
,
vsz
, rss
,
lim
, tsiz
,
%cpu
, %mem
, and
command
. The -v
option
implies the -m
option.-w
-w
option is specified
more than once, ps
will use as many columns as
necessary without regard for your window size. When output is not to a
terminal, an unlimited number of columns are always used.-X
-x
-X
option. If both -X
and
-x
are specified in the same command, then
ps
will use the one which was specified last.A complete list of the available keywords is given below. Some of these keywords are further specified as follows:
%cpu
%cpu
fields to exceed 100%.%mem
flags
<sys/proc.h>
:
P_ADVLOCK |
0x00001 | Process may hold a POSIX advisory lock | |
P_CONTROLT |
0x00002 | Has a controlling terminal | |
P_LP64 |
0x00004 | Process is LP64 | |
P_NOCLDSTOP |
0x00008 | No SIGCHLD when children stop | |
P_PPWAIT |
0x00010 | Parent is waiting for child to exec/exit | |
P_PROFIL |
0x00020 | Has started profiling | |
P_SELECT |
0x00040 | Selecting; wakeup/waiting danger | |
P_CONTINUED |
0x00080 | Process was stopped and continued | |
P_SUGID |
0x00100 | Had set id privileges since last exec | |
P_SYSTEM |
0x00200 | System proc: no sigs, stats or swapping | |
P_TIMEOUT |
0x00400 | Timing out during sleep | |
P_TRACED |
0x00800 | Debugged process being traced | |
P_WAITED |
0x01000 | Debugging process has waited for child | |
P_WEXIT |
0x02000 | Working on exiting | |
P_EXEC |
0x04000 | Process called exec | |
P_OWEUPC |
0x08000 | Owe process an addupc() call at next ast | |
P_WAITING |
0x40000 | Process has a wait() in progress | |
P_KDEBUG |
0x80000 Kdebug tracing on for this process |
lim
lstart
%c
’ format described in
strftime(3).nice
rss
start
%l:ps.1p
” format described in
strftime(3). If the command started
less than 7 days ago, the start time is displayed using the
“%a6.15p
” format. Otherwise, the
start time is displayed using the
“%e%b%y
” format.state
RWNA
”. The first character
indicates the run state of the process:
I
R
S
T
U
Z
Additional characters after these, if any, indicate additional state information:
+
<
>
A
VA_ANOM
, from
vadvise(2), for example,
lisp(1) in a garbage collect).E
L
N
S
VA_SEQL
, from
vadvise(2), for example, a large
image processing program using virtual memory to sequentially address
voluminous data).s
V
W
X
tt
con
”. This is followed by a
‘-
’ if the process can no longer
reach that controlling terminal (i.e., it has been revoked).wchan
When printing using the command keyword, a process that has exited
and has a parent that has not yet waited for the process (in other words, a
zombie) is listed as
“<defunct>
”, and a process which
is blocked while trying to exit is listed as
“<exiting>
”. If the arguments
cannot be located (usually because it has not been set, as is the case of
system processes and/or kernel threads) the command name is printed within
square brackets. The process can change the arguments shown with
setproctitle(3). Otherwise,
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. The ucomm (accounting)
keyword can, however, be depended on. If the arguments are unavailable or do
not agree with the ucomm keyword, the value for the ucomm keyword is
appended to the arguments in parentheses.
The following is a complete list of the available keywords and their meanings. Several of them have aliases (keywords which are synonyms).
%cpu
pcpu
)%mem
pmem
)acflag
acflg
)args
comm
command
cpu
etime
flags
f
)gid
group
)inblk
inblock
)jobc
ktrace
ktracep
lim
logname
lstart
majflt
minflt
msgrcv
msgsnd
nice
ni
)nivcsw
nsigs
nsignals
)nswap
nvcsw
nwchan
oublk
oublock
)p_ru
paddr
pagein
pgid
pid
ppid
pri
prsna
re
rgid
rss
ruid
ruser
sess
sig
pending
)sigmask
blocked
)sl
start
state
stat
)svgid
svuid
tdev
time
cputime
)tpgid
tsess
tsiz
tt
tty
ucomm
uid
upr
usrpri
)user
utime
putime
)vsz
vsize
)wchan
wq
wqb
wqr
wql
xstat
The following environment variables affect the execution of
ps
:
COLUMNS
ps
attempts to automatically determine
the terminal width.In legacy mode, ps
functions as described
above, with the following differences:
-e
-E
.-g
-l
uid
, pid
,
ppid
, cpu
,
pri
, nice
,
vsz
, rss
,
wchan
, state
,
tt, time
, and
command
.-u
user
, pid
,
%cpu
, %mem
,
vsz
, rss
,
tt
, state
,
start
, time
, and
command
. The -u
option
implies the -r
option.The biggest change is in the interpretation of the
-u
option, which now displays processes belonging to
the specified username(s). Thus, "ps -aux" will fail (unless you
want to know about user "x"). As a convenience, however, "ps
aux" still works as it did in Tiger.
For more information about legacy mode, see compat(5).
The ps
utility supports the
Version 3 of the Single UNIX Specification
(“SUSv3”) standard.
The ps
command appeared in
Version 4 AT&T UNIX.
Since ps
cannot run faster than the system
and is run as any other scheduled process, the information it displays can
never be exact.
The ps
utility does not correctly display
argument lists containing multibyte characters.
March 20, 2005 | macOS 14.6 |