PS(1)                  Linux User's Manual                  PS(1)

       ps - report process status

       ps [options]

       ps  gives a snapshot of the current processes. If you want
       a repetitive update of this status, use top. This man page
       documents the /proc-based version of ps, or tries to.

       This version of ps accepts several kinds of options.
              Unix98 options may be grouped and must be preceeded
              by a dash.
              BSD options may be grouped and  must  not  be  used
              with a dash.
              GNU long options are preceeded by two dashes.
       Options of different types may be freely mixed.

       Set  the  I_WANT_A_BROKEN_PS environment variable to force
       BSD syntax even when options are preceeded by a dash.  The
       PS_PERSONALITY environment variable (described below) pro-
       vides more detailed control of ps behavior.

       Switch       Description
       -A           selects all processes
       -N           negate selection
       -a           select all with a tty except session leaders
       -d           select all, but omit session leaders
       -e           selects all processes
       T            Select all processes on this terminal
       a            Select all processes on a terminal,  includ-
                    ing those of other users
       g            really all, even group leaders (does nothing
                    w/o SunOS settings)
       r            restrict output to running processes
       x            Select processes without controlling ttys
       --deselect   negate selection

       Switch    Description
       -C        Select by command name
       -G        select by RGID (supports names)
       -U        select by RUID (supports names)
       -g        select by session leader OR by group name
       -p        select by PID
       -s        Select processes belonging to the sessions given
       -t        select by tty
       -u        select by effective user ID (supports names)
       U         Select processes for specified users
       p         Select by process ID
       t         Select by tty
       --Group   select by real group name or ID
       --User    select by real user name or ID
       --group   select by effective group name or ID
       --pid     select by process ID
       --sid     select by session ID
       --tty     select by terminal
       --user    select by effective user name or ID
       -123      implied --sid
       123       implied --pid

       Switch     Description
       -O         is preloaded "-o"
       -c         different scheduler info for -l option
       -f         does full listing
       -j         jobs format
       -l         long format
       -o         user-defined format
       -y         do not show flags; show rss in place of addr
       O          is preloaded "o" (overloaded)
       X          Old Linux i386 register format
       j          job control format
       l          Display long format
       o          Specify user-defined format
       s          Display signal format
       u          Display user-oriented format
       v          Display virtual memory format
       --format   user-defined format

       Switch         Description
       -H             show process heirarchy (forest)
       -m             shows threads
       -n             sets namelist file
       -w             wide output
       C              Use raw CPU time for %CPU instead of decaying average
       N              Specify namelist file
       O              Sorting order (overloaded)
       S              include some dead child process data (as a  sum  with
                      the parent)
       c              true command name
       e              show environment after the command
       f              ASCII-art process heirarchy (forest)
       h              Do not print header lines (repeat header lines in BSD
       m              all threads
       n              Numeric output for WCHAN and USER
       w              wide output
       --cols         set screen width
       --columns      set screen width
       --cumulative   include some dead child process data (as a  sum  with
                      the parent)
       --forest       ASCII art process tree
       --html         HTML escaped output
       --headers      repeat header lines
       --no-headers   print no header line at all
       --lines        set screen height
       --nul          unjustified output with NULs
       --null         unjustified output with NULs
       --rows         set screen height
       --sort         specify sorting order
       --width        set screen width
       --zero         unjustified output with NULs

       Switch      Description
       -V          prints version
       L           List all format specifiers
       V           show version info
       --help      print help message
       --info      print debugging info
       --version   prints version

       Switch   Description
       A        Increases the argument space (DecUnix)
       M        use alternate core (try -n or N instead)
       W        get swap info from ... not /dev/drum (try -n or N instead)
       k        use /vmcore as c-dumpfile (try -n or N instead)

       The  "-g"  option can select by session leader OR by group
       name.  Selection by session leader is  specified  by  many
       standards,  but selection by group is the logical behavior
       that several other operating systems  use.  This  ps  will
       select  by  session  leader  when  the  list is completely
       numeric (as sessions are). Group ID numbers will work only
       when some group names are also specified.

       The "m" option should not be used. Use "-m" or "-o" with a
       list.  ("m" displays memory info, shows threads, or  sorts
       by memory use)

       The  "h"  option is problematic.  Standard BSD ps uses the
       option to print a header on each page of output, but older
       Linux  ps  uses  the option to totally disable the header.
       This version of ps follows the Linux usage of not printing
       the  header  unless the BSD personality has been selected,
       in which case it prints a header on each page  of  output.
       Regardless  of  the  current  personality, you can use the
       long options --headers and --no-headers to enable printing
       headers  each  page  and disable headers entirely, respec-

       Terminals (ttys, or screens of text output) can be  speci-
       fied in several forms: /dev/ttyS1, ttyS1, S1. Obsolete "ps
       t" (your own terminal) and "ps t?"  (processes  without  a
       terminal)  syntax  is  supported, but modern options ("T",
       "-t" with  list,  "x",  "t"  with  list)  should  be  used

       The  BSD "O" option can act like "-O" (user-defined output
       format with some common fields predefined) or can be  used
       to  specify  sort order.  Heuristics are used to determine
       the behavior of this option. To ensure  that  the  desired
       behavior is obtained, specify the other option (sorting or
       formatting) in some other way.

       For    sorting,    BSD    "O"     option     syntax     is
       O[+|-]k1[,[+|-]k2[,...]]    Order   the   process  listing
       according to the multilevel sort specified by the sequence
       of short keys from SORT KEYS, k1, k2, ... The `+' is quite
       optional, merely re-iterating the default direction  on  a
       key.  `-'  reverses direction only on the key it precedes.
       The O option must be the last option in a  single  command
       argument,  but  specifications in successive arguments are

       GNU  sorting  syntax  is  --sortX[+|-]key[,[+|-]key[,...]]
       Choose  a  multi-letter  key from the SORT KEYS section. X
       may be any convenient separator character. To  be  GNU-ish
       use  `='.  The `+' is really optional since default direc-
       tion is increasing numerical or lexicographic  order.  For
       example, ps jax --sort=uid,-ppid,+pid

       This  ps works by reading the virtual files in /proc. This
       ps does not need to be suid kmem or have any privileges to
       run. Do not give this ps any special permissions.

       This  ps  needs access to a namelist file for proper WCHAN
       display.  The namelist file must match the  current  Linux
       kernel exactly for correct output.

       To  produce  the  WCHAN  field,  ps needs to read the Sys- file created when  the  kernel  is  compiled.  The
       search path is:
              /boot/`uname -r`
              /lib/modules/`uname -r`/
       The  member  used_math  of task_struct is not shown, since
       crt0.s checks to see if math is present. This  causes  the
       math flag to be set for all processes, and so it is worth-
       less. (Somebody fix libc or the kernel please.)

       Programs swapped out to disk will be shown without command
       line  arguments,  and  unless  the  c  option is given, in

       %CPU shows the cputime/realtime percentage.  It  will  not
       add  up  to  100%  unless  you  are lucky. It is time used
       divided by the time the process has been running.

       The SIZE and RSS fields don't count the  page  tables  and
       the  task_struct of a proc; this is at least 12k of memory
       that is always resident. SIZE is the virtual size  of  the
       proc (code+data+stack).

       Processes  marked  <defunct> are dead processes (so-called
       "zombies")  that  remain  because  their  parent  has  not
       destroyed them properly. These processes will be destroyed
       by init(8) if the parent process exits.

       ALIGNWARN    001   print alignment warning msgs
       STARTING     002   being created
       EXITING      004   getting shut down
       PTRACED      010   set if ptrace (0) has been called
       TRACESYS     020   tracing system calls
       FORKNOEXEC   040   forked but didn't exec
       SUPERPRIV    100   used super-user privileges
       DUMPCORE     200   dumped core
       SIGNALED     400   killed by a signal

       D   uninterruptible sleep (usually IO)
       R   runnable (on run queue)
       S   sleeping
       T   traced or stopped
       Z   a defunct ("zombie") process

       For BSD formats and when the "stat" keyword is used, addi-
       tional letters may be displayed:
       W   has no resident pages
       <   high-priority process
       N   low-priority task
       L   has pages locked into memory (for real-time and custom IO)

       Note that the values used in sorting are the internal val-
       ues ps uses and not the `cooked' values used  in  some  of
       the  output format fields. Pipe ps output into the sort(1)
       command if you want to sort the cooked values.

       KEY   LONG         DESCRIPTION
       c     cmd          simple name of executable
       C     cmdline      full command line
       f     flags        flags as in long format F field
       g     pgrp         process group ID
       G     tpgid        controlling tty process group ID
       j     cutime       cumulative user time
       J     cstime       cumulative system time
       k     utime        user time
       K     stime        system time
       m     min_flt      number of minor page faults
       M     maj_flt      number of major page faults
       n     cmin_flt     cumulative minor page faults
       N     cmaj_flt     cumulative major page faults
       o     session      session ID
       p     pid          process ID
       P     ppid         parent process ID
       r     rss          resident set size
       R     resident     resident pages
       s     size         memory size in kilobytes
       S     share        amount of shared pages
       t     tty          the minor device number of tty
       T     start_time   time process was started
       U     uid          user ID number
       u     user         user name
       v     vsize        total VM size in bytes
       y     priority     kernel scheduling priority

       This ps supports AIX format descriptors, which work  some-
       what like the formatting codes of printf(1) and printf(3).
       For example, the normal default  output  can  be  produced
       with this:   ps -eo "%p %y %x %c"

       %C     pcpu     %CPU
       %G     group    GROUP
       %P     ppid     PPID
       %U     user     USER
       %a     args     COMMAND
       %c     comm     COMMAND
       %g     rgroup   RGROUP
       %n     nice     NI
       %p     pid      PID
       %r     pgid     PGID
       %t     etime    ELAPSED
       %u     ruser    RUSER
       %x     time     TIME
       %y     tty      TTY
       %z     vsz      VSZ

       These  may be used to control both output format and sort-
       For example:  ps -eo pid,user,args --sort user

       CODE          HEADER
       %cpu          %CPU
       %mem          %MEM
       alarm         ALARM
       args          COMMAND
       blocked       BLOCKED
       bsdstart      START
       bsdtime       TIME
       c             C
       caught        CAUGHT
       cmd           CMD
       comm          COMMAND
       command       COMMAND
       cputime       TIME
       drs           DRS
       dsiz          DSIZ
       egid          EGID
       egroup        EGROUP
       eip           EIP
       esp           ESP
       etime         ELAPSED
       euid          EUID
       euser         EUSER
       f             F
       fgid          FGID
       fgroup        FGROUP
       flag          F
       flags         F
       fname         COMMAND
       fsgid         FSGID
       fsgroup       FSGROUP
       fsuid         FSUID
       fsuser        FSUSER
       fuid          FUID
       fuser         FUSER
       gid           GID
       group         GROUP
       ignored       IGNORED
       intpri        PRI
       lim           LIM
       longtname     TTY
       lstart        STARTED
       m_drs         DRS
       m_trs         TRS
       maj_flt       MAJFL
       majflt        MAJFLT
       min_flt       MINFL
       minflt        MINFLT
       ni            NI
       nice          NI
       nwchan        WCHAN
       opri          PRI
       pagein        PAGEIN
       pcpu          %CPU
       pending       PENDING
       pgid          PGID
       pgrp          PGRP
       pid           PID
       pmem          %MEM
       ppid          PPID
       pri           PRI
       rgid          RGID
       rgroup        RGROUP
       rss           RSS
       rssize        RSS
       rsz           RSZ
       ruid          RUID
       ruser         RUSER
       s             S
       sess          SESS
       session       SESS
       sgi_p         P
       sgi_rss       RSS
       sgid          SGID
       sgroup        SGROUP
       sid           SID
       sig           PENDING
       sig_block     BLOCKED
       sig_catch     CATCHED
       sig_ignore    IGNORED
       sig_pend      SIGNAL
       sigcatch      CAUGHT
       sigignore     IGNORED
       sigmask       BLOCKED
       stackp        STACKP
       start         STARTED
       start_stack   STACKP
       start_time    START
       stat          STAT
       state         S
       stime         STIME
       suid          SUID
       suser         SUSER
       svgid         SVGID
       svgroup       SVGROUP
       svuid         SVUID
       svuser        SVUSER
       sz            SZ
       time          TIME
       timeout       TMOUT
       tmout         TMOUT
       tname         TTY
       tpgid         TPGID
       trs           TRS
       trss          TRSS
       tsiz          TSIZ
       tt            TT
       tty           TT
       tty4          TTY
       tty8          TTY
       ucomm         COMMAND
       uid           UID
       uid_hack      UID
       uname         USER
       user          USER
       vsize         VSZ
       vsz           VSZ
       wchan         WCHAN

       The following environment variables could affect ps:
       COLUMNS              Override default display width
       LINES                Override default display height
       PS_PERSONALITY       Set to one of posix,old,linux,bsd,sun,digital
       CMD_ENV              Set to one of posix,old,linux,bsd,sun,digital
       I_WANT_A_BROKEN_PS   Force obsolete command line interpretation
       LC_TIME              Date format
       PS_FORMAT            Default output format override
       PS_SYSMAP            Default namelist ( location
       PS_SYSTEM_MAP        Default namelist ( location
       POSIXLY_CORRECT      Don't find excuses to ignore bad "features"
       UNIX95               Don't find excuses to ignore bad "features"
       _XPG                 Cancel CMD_ENV=irix non-standard behavior

       In general, it is a bad idea to set these  variables.  The
       two exceptions are CMD_ENV (or PS_PERSONALITY), to set the
       desired  default  personality,  and  POSIXLY_CORRECT   (or
       UNIX95),  which  should be set for Unix98 standard compli-

       PS_PERSONALITY   Description
       none             "Do the right thing"
       aix              like AIX ps
       bsd              like FreeBSD ps
       compaq           like Digital Unix ps
       debian           like the old Debian ps
       digital          like Digital Unix ps
       gnu              like the old Debian ps
       hp               like HP-UX ps
       hpux             like HP-UX ps
       irix             like Irix ps
       linux            deviate from Unix98 for convenience only
       old              like the original Linux ps
       posix            standard
       sco              like SCO ps
       sgi              like Irix ps
       sun              like SunOS 4 ps
       sunos            like SunOS 4 ps
       sysv             standard
       unix             standard
       unix95           standard
       unix98           standard

       To see every process on the system using standard syntax:
              ps -e
       To see every process on the system using BSD syntax:
              ps ax
       To see every process except those running as root (real  &
       effective ID)
              ps -U root -u root -N
       To see every process with a user-defined format:
              ps -eo pid,tt,user,fname,tmout,f,wchan
       Odd display with AIX field descriptors:
              ps -o "%u : %U : %p : %a"
       Print only the process IDs of syslogd:
              ps -C syslogd -o pid=

       top(1) pstree(1) proc(5)

       This  ps  can be set to conform to version 2 of the Single
       Unix Specification.

       ps   was   originally   written   by   Branko    Lankester
       Michael  K. Johnson <> re-wrote it sig-
       nificantly to use the  proc  filesystem,  changing  a  few
       things in the process.
       Michael Shields <> added the pid-list fea-
       Charles Blake <> added multi-level  sorting,
       the dirent-style library, the device name-to-number mmaped
       database, the approximate binary search directly  on  Sys-, and many code and documentation cleanups.
       David  Mosberger-Tang  wrote  the  generic BFD support for
       Albert Cahalan <> rewrote ps  for  full
       Unix98  and  BSD  support,  along with some ugly hacks for
       obsolete and foreign syntax.

       Michael K. Johnson <>  is  the  current

       Please send bug reports to <>

Linux                     March 11, 1999                        1