OOPS(8)                                                   OOPS(8)

     NAME
          oops - process status

     SYNOPSIS
          oops [ acegklstuvwx# ] [ core ] [ swap ] [ namelist ]

     DESCRIPTION
          Oops prints information about processes.  Normally, only the
          invoker's processes are candidates to be printed by oops.
          Specifying a causes other user's processes to be candidates
          to be printed; specifying x includes processes without con-
          trol terminals in the candidate pool.

          All output formats include, for each process, the process id
          PID, control terminal of the process TT, cpu time used by
          the process TIME (this includes both user and system time),
          the state STAT of the process, and an indication of the com-
          mand which is running.  The state is given by a sequence of
          four letters, e.g. ``RWNA''.  The first letter indicates the
          runnability of the process: R for a runnable process, T for
          a stopped process, P for a process in page wait, D for one
          in disk (or other short term) wait, S for one sleeping for
          less than about 20 seconds, and I for an idle (sleeping
          longer than about 20 seconds) process.  The second letter is
          W if the process is swapped out, blank if it is resident in
          memory.  The third letter is a blank if the process is run-
          ning with normal scheduling priority, N if the priority is
          reduced (nice), < if the priority is raised.  The final let-
          ter is an A if special paging behaviour has been requested.

          Here are the options:

          a    asks for information about all processes with terminals
               (ordinarily only one's own processes are displayed).

          c    causes the system's internal idea of the command name
               to be used, rather than the command arguments in the
               process' address space.  This is more reliable, if less
               informative, since the process is free to destroy the
               latter information.

          e    asks for the environment (environ(7)) to be printed.

          g    includes process group leaders (usually shells) which
               are normally excluded.

          k    causes the file /vmcore is used in place of /dev/kmem
               and /dev/mem.  This is used for postmortem system
               debugging.

     OOPS(8)                                                   OOPS(8)

          l    asks for a long listing, with fields PPID, CP, PRI, NI,
               ADDR, SIZE, RSS and WCHAN as described below.

          s    adds the size SSIZ of the kernel stack of each process
               (for use by system maintainers) to the basic output
               format.

          tx   restricts output to processes whose controlling tty is
               x (which should be specified as printed by oops, e.g.
               t3 for tty3, tco for console, td0 for ttyd0, t? for
               processes with no tty, etc).  This option must be the
               last one given.

          u    allegedly user oriented output is produced.  This
               includes fields USER, %CPU, NICE, SIZE, and RSS as
               described below.

          v    virtual memory statistics; includes fields RE, SL,
               PAGEIN, SIZE, RSS, SRS, TSIZ, TRS, %CPU and %MEM,
               described below.

          w    use a wide output format (132 columns rather than 80);
               if repeated, use arbitrarily wide output.  This infor-
               mation is used to decide how much of long argument
               lists to print.

          x    asks about even processes with no terminal.

          #    A process number may be given, in which case the output
               is restricted to that process.  This option must also
               be last.

          A second argument tells oops where to look for core if the k
          option is given, instead of /vmcore. A third argument is the
          name of a swap file to use instead of the default /dev/drum.
          If a fourth argument is given, it is taken to be the file
          containing the system's namelist.  Otherwise, /unix is used.

          Fields which are not common to all output formats:
          USER      the owner of the process
          %CPU      cpu utilization of the process; this is a decaying
                    average over up to a minute of previous (real)
                    time.  Since the time base over which this is com-
                    puted varies (since processes may be very young)
                    it is possible for the sum of all %CPU fields to
                    exceed 100%.
          NICE      (or NI) process scheduling increment (see nice(2))
          SIZE      virtual size of the process (in 1024 byte units)
          RSS       real memory (resident set) size of the process (in
                    1024 byte units)
          SRS       number of real memory pages (RSS) if and when
                    swapped

     OOPS(8)                                                   OOPS(8)

          TSIZ      size of text (shared program) image
          TRS       size of resident (real memory) set of text
          %MEM      percentage of real memory used by this process.
          RE        residency time of the process (seconds in core)
          SL        sleep time of the process (seconds blocked)
          PAGEIN    number of disk i/o's resulting from references by
                    the process to pages not loaded in core.
          UID       numerical user-id of process owner
          PPID      numerical id of parent of process
          CP        short-term cpu utilization factor (used in
                    scheduling)
          PRI       process priority (non-positive when in non-
                    interruptible wait)
          ADDR      swap address of the process
          WCHAN     event on which process is waiting (an address in
                    the system), with the initial part of the address
                    trimmed off; e.g. 0x80004000 prints as 4000.

          F         flags associated with process as in
                    /usr/include/sys/proc.h:
                SLOAD       000001  in core
                SSYS        000002  swapper or pager process
                SLOCK       000004  process being swapped out
                SSWAP       000008  save area flag
                STRC        000010  process is being traced
                SWTED       000020  another tracing flag
                SULOCK      000040  user settable lock in core
                SPAGE       000080  process in page wait state
                SKEEP       000100  another flag to prevent swap out
                SDLYU       000200  delayed unlock of pages
                SWEXIT      000400  working on exiting
                SPHYSIO     000800  doing physical i/o (bio.c)
                SPAGI       008000  init data space on demand, from inode
                SSEQL       010000  user warned of sequential vm behavior
                SUANOM      020000  user warned of anomalous vm behavior
                STIMO       040000  timing out during sleep
                SDETACH     080000  detached inherited by init
                SNUSIG      100000  using new signal mechanism

          A process that has exited and has a parent, but has not yet
          been waited for by the parent is marked <defunct>; a process
          which is blocked trying to exit is marked <exiting>.  Oops
          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, so the names cannot be counted on too much.

     FILES
          /unix         system namelist
          /dev/kmem     kernel memory
          /dev/drum     swap device

     OOPS(8)                                                   OOPS(8)

          /vmcore       core file
          /dev          searched to find swap device and tty names

     SEE ALSO
          kill(1), ps(1), pstat(8)

     BUGS
          Things can change while oops is running; the picture it
          gives is only a close approximation to reality.
          Oops duplicates ps(1); it is useful mainly for examining
          kernel crash dumps, or when /proc is not mounted.