    SYNOPSIS
    ps [options]

    DESCRIPTION
    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.

    COMMAND-LINE OPTIONS

    This version of ps accepts several kinds of options.

    Unix 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) provides more detailed control of ps behavior.

    SIMPLE PROCESS SELECTION
    -A           select all processes
    -N           negate selection
    -a           select all with a tty except session leaders
    -d           select all, but omit session leaders
    -e           select all processes
    T            select all processes on this terminal
    a            select all processes on a terminal, including 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

    PROCESS SELECTION BY LIST
    -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
    -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
    --context    (SELinux only) Display security context format; implies --secsid
    --secsid     (SELinux only) Display Security ID

    OUTPUT MODIFIERS
    -H           show process hierarchy (forest)
    -m           show threads
    -n           set 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 hierarchy (forest)
    h            no header (or, one header per screen in the BSD personality)
    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
    --headers    repeat header lines, one per page of output
    --no-headers print no header line at all
    --lines      set screen height
    --rows       set screen height
    --sort       specify sorting order
    --width      set screen width

    INFORMATION
    -V          print version
    L           list all format specifiers
    V           show version info
    --help      print help message
    --info      print debugging info
    --version   print version

    OBSOLETE
    A           increases the argument space (DecUnix)

    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, respectively.

    Terminals (ttys, or screens for text output) can be specified 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 instead.

    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
    catenated.

    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 direction 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 System.map file created
    when the kernel is compiled. The search path is:

    $PS_SYSTEM_MAP
    /boot/System.map-`uname -r`
    /boot/System.map
    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.

    PROCESS FLAGS

    FORKNOEXEC   1    forked but didn't exec
    SUPERPRIV    2    used super-user privileges
    DUMPCORE     4    dumped core

    PROCESS STATE CODES

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

    For BSD formats and when the "stat" keyword is used, additional
    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)

    SORT KEYS

    Note that the values used in sorting are the internal values 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
    v   vsize      total VM size in kB
    y   priority   kernel scheduling priority

    AIX FORMAT DESCRIPTORS

    This ps supports AIX format descriptors, which work somewhat 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"

    CODE  NORMAL    HEADER
    %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

    STANDARD FORMAT SPECIFIERS

    These may be used to control both output format and sorting.
    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
    context        CONTEXT
    cputime      TIME
    drs          DRS
    dsiz         DSIZ
    egid         EGID
    egroup       EGROUP
    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
    priority     PRI
    rgid         RGID
    rgroup       RGROUP
    rss          RSS
    rssize       RSS
    rsz          RSZ
    ruid         RUID
    ruser        RUSER
    s            S
    secsid       SECSID
    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
    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
    ucmd         CMD
    ucomm        COMMAND
    uid          UID
    uid_hack     UID
    uname        USER
    user         USER
    vsize        VSZ
    vsz          VSZ
    wchan        WCHAN

    ENVIRONMENT VARIABLES
    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_COLORS           Not currently supported.
        PS_FORMAT           Default output format override.
        PS_SYSMAP           Default namelist (System.map) location.
        PS_SYSTEM_MAP       Default namelist (System.map) 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 one exception
    is CMD_ENV or PS_PERSONALITY, which could be set to Linux for normal
    systems. Without that setting, ps follows the useless and bad parts
    of the Unix98 standard.

    PERSONALITY
        390      like the S/390 OpenEdition ps
        aix      like AIX ps
        sunos    like SunOS 4 ps (totally non-standard)
        sysv     standard
        unix     standard
        unix95   standard
        unix98   standard

    EXAMPLES
    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=

    SEE ALSO
    top(1) pgrep(1) pstree(1) proc(5)

    STANDARDS
    This ps conforms to version 2 of the Single Unix Specification.

    AUTHOR
    ps was originally written by Branko Lankester <lankeste@fwi.uva.nl>. Michael
    K. Johnson <johnsonm@redhat.com> re-wrote it significantly to use the proc
    filesystem, changing a few things in the process. Michael Shields
    <mjshield@nyx.cs.du.edu> added the pid-list feature. Charles Blake
    <cblake@bbn.com> added multi-level sorting, the dirent-style library, the
    device name-to-number mmaped database, the approximate binary search
    directly on System.map, and many code and documentation cleanups. David
    Mossberger-Tang wrote the generic BFD support for psupdate. Albert Cahalan
    <acahalan@cs.uml.edu> rewrote ps for full Unix98 and BSD support, along with
    some ugly hacks for obsolete and foreign syntax.

    Please send bug reports to <acahalan@cs.uml.edu>

    Linux                      July 5, 1998                     PS(1)