---
name: "oldps"
section: "1"
platform: "linux"
package: "procps"
version: "1:2.0.7-8.woody1"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/oldps"
---

# oldps(1)

report process status

## NAME

ps - report process status

## SYNOPSIS

ps \[**lujsvmaxScewhrnu**\] \[**t***xx*\] \[**O**\[**+**\|**-**\]*k1*\[\[**+**\|**-**\]*k2*...\]\] \[*pids*\]

there are also three long options:

**--sort*X***\[**+**\|**-**\]***key***\[,\[**+**\|**-**\]***key***\[,**...**\]\]

**--help**

**--version**

More long options are on the way...

## 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

The command-line options for this version of **ps** are derived from the BSD version of **ps**, not the System V version.

The command-line arguments should **not** be preceeded by a \`-' character, because in the future, a \`-' will be used to indicate Unix98-standard command-line arguments, while no \`-' will indicate the current \`\`extended BSD'' style of command line arguments.

For now, ps will give you a warning if you use a \`-' for a short option, but it will still work.  If you have shell scripts which use BSD-style arguments to ps, take heed of the warning and fix them, or else your scripts will fail to function correctly at some point in the future. If you want to turn off the warnings, set the **I\_WANT\_A\_BROKEN\_PS** environment variable.

There are also some \`\`long options'' in GNU style; see below for those.

- **l**

  long format

- **u**

  user format: gives user name and start time

- **j**

  jobs format: pgid sid

- **s**

  signal format

- **v**

  vm format

- **m**

  displays memory info (combine with **p** flag to get number of pages).

- **f**

  "forest" family tree format for command line

- **a**

  show processes of other users too

- **x**

  show processes without controlling terminal

- **S**

  add child cpu time and page faults

- **c**

  command name from task\_struct

- **e**

  show environment after command line and \` + '

- **w**

  wide output: don't truncate command lines to fit on one line. To be exact, every w that is specified will add another possible line to the output. If the space isn't needed it isn't used. You may up to 100 **w**'s.

- **h**

  no header

- **r**

  running procs only

- **n**

  numeric output for **USER** and **WCHAN**.

- **t***xx*

  only procs with controlling tty *xx*; for *xx* you may use either the name of a device file under "/dev" or that name with either *tty* or *cu* sliced off.  This is the reverse heuristic that ps uses to print out the abbreviated tty name in the **TT** field, e.g. **ps t1**.

- **O**\[**+**\|**-**\]***k1***\[,\[**+**\|**-**\]***k2***\[,**...**\]\]

  Order the process listing according to the multi-level sort specified by the sequence of *short* keys from **SORT KEYS**, *k1*, *k2*, ... Default order specifications exist for each of the various formats of **ps**. These are over-ridden by a user specified ordering.  The \`+' is quite optional, merely re-iterating the default direction on a key.  \`-' reverses direction only on the key it precedes.  As with **t** and *pids*, the O option must be the last option in a single command argument, but specifications in successive arguments are catenated.

- *pids*

  List only the specified processes; they are comma-delimited.  The  list must be given immediately after the last option in a single command-line argument, with no intervening space, e.g. **ps j1,4,5**. Lists specified in subsequent arguments are catenated, e.g. **ps l 1,2 3,4 5 6** will list all of the processes 1-6 in long format.  If pids are given, they are listed no matter what.  If a tty is given matching processes are listed no matter what.  These two features override the 'a' and 'x' flags.

## LONG COMMAND-LINE OPTIONS

These options are preceeded by a double-hyphen.

- **--sort*X***\[**+**\|**-**\]***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. E.g.: **ps jax --sort=uid,-ppid,+pid**

- **--help**

  Get a help message that summarizes the usage and gives a list of supported sort keys.  This list may be more up to date than this man page.

- **--version**

  Display version and source of this program.

## 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.  If someone wants to volunteer to write special comparison functions for the cooked values, ... ;-)

SHORT   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

  ## FIELD DESCRIPTIONS

- **PRI**

  This is the counter field in the task struct.  It is the time in **HZ** of the process's possible timeslice.

- **NI**

  Standard unix nice value; a positive value means less cpu time.

- **SIZE**

  Virtual image size; size of text+data+stack.

- **RSS**

  Resident set size; kilobytes of program in memory.

- **WCHAN**

  Name of the kernel function where the process is sleeping, with the \`**sys\_**' stripped from the function name.  If */etc/psdatabase* does not exist, it is just a hex number instead.

- **STAT**

  Information about the status of the process.  The first field is **R** for runnable, **S** for sleeping, **D** for uninterruptible sleep, **T** for stopped or traced, or **Z** for a zombie process.  The second field contains **W** if the process has no resident pages.  The third field is **N** if the process has a positive nice value (**NI** field).

- **TT**

  Controlling tty.

- **PAGEIN**

  Number of major page faults (page faults that cause pages to be read from disk, including pages read from the buffer cache).

- **TRS**

  Text resident size.

- **SWAP**

  Kilobytes (or pages if **p** is used) on swap device.

- **SHARE**

  Shared memory.

## UPDATING

This **proc**-based **ps** works by reading the files in the **proc** filesystem, mounted on **/proc**. This **ps** does not need to be suid **kmem** or have any privileges to run. *Do not give this ps any special permissions.*

You will need to put in place the appropriate System.map file when you install a new kernel in order to get meaningful information from the **WCHAN** field.  This should be done every time you compile a new kernel.  You should also run 'ps' as root once and then any time the tty devices in the "/dev" directory change.

As of procps-1.00, ps/top read System.map directly if it is available.  The search path for kernel address-to-symbol resolution is:

```
            $PS_SYSTEM_MAP
            /boot/System.map-`uname -r`
            /boot/System.map
            /lib/modules/`uname -r`/System.map
            /etc/psdatabase
            /boot/psdatabase-`uname -r`
            /boot/psdatabase,
            /lib/modules/`uname -r`/psdatabase
```

## NOTES

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

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

**%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).

## 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.  Michael K. Johnson \<johnsonm@redhat.com\> is the current maintainer.

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