| PS(1) | General Commands Manual | PS(1) | 
ps — process
    status
| ps | [ -AaCcEefhjlMmrSTvwXx]
      [-Ofmt |-ofmt]
      [-Ggid[,gid...]]
      [-ggrp[,grp...]]
      [-uuid[,uid...]]
      [-ppid[,pid...]]
      [-ttty[,tty...]]
      [-Uuser[,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-juser, pid,
      ppid, pgid,
      sess, jobc,
      state, tt,
      time, and command.-L-O and
      -o options.-luid, 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-vpid, 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%.%memflags<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 | 
limlstart%c’ format described in
      strftime(3).nicerssstart%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.stateRWNA”. The first character
      indicates the run state of the process:
    
    IRSTUZAdditional characters after these, if any, indicate additional state information:
+<>AVA_ANOM, from vadvise(2),
          for example, lisp(1) in a garbage collect).ELNSVA_SEQL, from vadvise(2),
          for example, a large image processing program using virtual memory to
          sequentially address voluminous data).sVWXttcon”. This is followed by a
      ‘-’ if the process can no longer
      reach that controlling terminal (i.e., it has been revoked).wchanWhen 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).
%cpupcpu)%mempmem)acflagacflg)argscommcommandcpuetimeflagsf)gidgroup)inblkinblock)jobcktracektraceplimlognamelstartmajfltminfltmsgrcvmsgsndniceni)nivcswnsigsnsignals)nswapnvcswnwchanoublkoublock)p_rupaddrpageinpgidpidppidpriprsnarergidrssruidrusersesssigpending)sigmaskblocked)slstartstatestat)svgidsvuidtdevtimecputime)tpgidtsesstsizttttyucommuiduprusrpri)userutimeputime)vszvsize)wchanwqwqbwqrwqlxstatThe following environment variables affect the execution of
    ps:
COLUMNSps attempts to automatically determine
      the terminal width.In legacy mode, ps functions as described
    above, with the following differences:
-e-E.-g-luid, pid,
      ppid, cpu,
      pri, nice,
      vsz, rss,
      wchan, state,
      tt, time, and
    command.-uuser, 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 | Mac OS X 12 |