---
name: "ps_fields"
section: "7"
platform: "linux"
package: "procps"
version: "1.12.2"
release: "Debian 1.3 (Bo)"
platforms: ["linux"]
url: "https://new.carta.tech/ps_fields"
---

# ps\_fields(7)

field descriptions used by ps and top Here descriptions for all fields used by ps or top are given. Each field is associated to two strings, the field header, which is displayed by the program to indicate which informatioon is provided and the field tag, which is used in the -o or --format command line options as well as in the $PS\_FORMAT and $TOP\_FORMAT environment variables to indicate which fields are to be displayed. in both command line options (which can be given multiple times) and the environment variables the syntax of the fields is a comma-separated list of tags (case-insensitive) with an optional fields size assignment: tag1\[=n1\],tag2\[=n2\],... The format here is:

## NAME

ps\_fields - field descriptions used by ps and top

Here descriptions for all fields used by ps or top are given. Each field is associated to two strings, the  *field header*, which is displayed by the program to indicate which informatioon is provided and the  *field tag*, which is used in the  **-o** or **--format** command line options as well as in the  **$PS\_FORMAT** and **$TOP\_FORMAT** environment variables to indicate which fields are to be displayed.  in both command line options (which can be given multiple times) and the environment variables the syntax of the fields is a comma-separated list of tags (case-insensitive) with an optional fields size assignment:  *tag1\[=n1\],tag2\[=n2\],...*

The format here is:

- **HEADER (tag)**

  description.

  (tag) is only listed if it differs from a lower case version of the header. Sometimes similar fields are bundled for a common description.

- **USER, RUSER, SUSER, FSUSER, UID, RUID, SUID, FSUID**

  the effective, real, saved, filesystem user names and ids of the process

- **GROUP, RGROUP, SGROUP, FSGROUP, GID, RGID, SGID, FSGID**

  the effective, real, saved, filesystem group names and ids of the process

- **PID, PPID**

  the process number of the process and its parent process

- **PGID**

  the process group id of the process.

- **TPGID**

  the terminal process group id (i.e. the process id of the process currently owning the controlling terminal) or -1 if the process doesn't have any controlling terminal.

- **SID**

  the session id of the process.

- **NI (nice)**

  the nice value (lower values mean higher priority) of the process

- **PRI**

  the scheduler priority of a process. Higher values mean higher priority

- **TIME**

  the cpu time (both user and system) of the process in seconds, if in cumulative mode, the cpu times of all terminated children is added. In cumulative mode, this field is labeled  **CTIME**.

- **ELAPSED (etime)**

  the real time between the start of the process and the current time.

- **UTIME, STIME**

  as TIME , but just cpu time in user resp. kernel space. In cumulative mode a leading  **C** will be added to the field headers.

- **%CPU (pcpu)**

  CPU usage in percent for the process. Note that this value differs between ps and top:  ps calculates this value basically as TIME/ELAPSED, while top calculates cpu usage of the process between two updates. So in ps this is a global property of the process, while in top the local property will be shown.

- **TT (tty)**

  the controlling tty of the process (or ?, if it hasn't one)

- **COMMAND (comm)**

  The command name of the process.

- **COMMAND (args)**

  The full command line (with arguments) of the process. Should be used together with one or more  **-w** flags to ps.

- **VSZ**

  This is the virtual size of the process.(this used to be labeled VSIZE, but POSIX wants VSZ).

- **RSS**

  The resident set size of the process. Note that this field may differ a little from the RES field, which is differently obtained from the kernel.

- **%MEM (pmem)**

  percentage of real memory used by the process as derived from RSS.

- **STAT (state)**

  A short description of the process's state:  **R** for running, **S** for sleeping,  **D** for uninteruptible sleeping (usually I/O), **T** for stopped or traced process. An additional  **W** indicates that the process has no resident pages, a **N** indicates a nice level greater than 0, a **\<** a nice level less than 0 (i.e. a superpriviledged task). A trailing **\>** indicates that the process exceeded a soft limit.

- **START (start\_time)**

  starting time of the process.

- **FLAGS**

  process flags as described in \<linux/sched.h\>. Note that at this time (Linux 2.0.?) these flags are not unique.

- **MINFL (min\_flt), MAJFL (maj\_flt)**

  Number of minor resp. major page faults. If in cumulative mode, those of all reaped children are added and a leading  **C** is added to the header.

- **TMOUT (timeout)**

  ??

- **ALARM**

  ??

- **S\_CODE (start\_code), E\_CODE (end\_code)**

  Address of beginning resp. end of the code segment.

- **STACKP (start\_stack)**

  Address of the process' stack bottom.

- **ESP, EIP**

  kernel stack pointers.

- **WCHAN**

  Name (if a valid kernel symbol table can be found) or address of the kernel wait channel the process is sleeping in. For the kernel symbol table libproc scans the following files:

  ```
              $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
  ```

  So usually you don't have to use  *psupdate* if you install the map link file from the kernel.

- **BLOCKED (sig\_block), IGNORED (sig\_ignore), CATCHED (sig\_catch), SIGNAL (sig\_pend)**

  Masks describing which signals are blocked, ignored, caught or pending. Note that there is an alternative display of signals available with the BSD personality of ps.

- **ENVIRONMENT (environ)**

  displays the environment of the process. As this ususally is quite large, it should be combined with one or more  **-w** flags to ps.

- **LCK (vm\_lock)**

  pages locked in i/o in kb.

- **DATA (vm\_data)**

  data size.

- **STACK (vm\_stack)**

  stack size.

- **EXE (vm\_exe)**

  executable size.

- **LIB (vm\_lib)**

  library size. This is, differently from the LRS field the size of the complete library used, not just of those pages the process actually uses. So it may happen that LIB is larger than VSZ! The next fields describe similar data as some of the fields above but are calculated differently (and are, usually, more precise) at the cost of a little more calculation time.

- **SIZE (m\_size)**

  The virtual size of the process.

- **RES (m\_res)**

  The resident size of the process.

- **SHRD (m\_share)**

  The size of all shared pages (libraries, code and data).

- **TRS (m\_trs)**

  Text resident size.

- **DRS (m\_drs)**

  Data resident size.

- **DT (m\_dt)**

  Number of dirty pages.

- **LRS (m\_lrs)**

  Library resident size, i.e. size of all shared library pages used by the process. Due to its determination (pages above 0x60000000 in the process's memory) this makes sense only for a.out shared libraries.

- **SWAP (m\_swap)**

  The non-resident size of the process.

## NOTES

The fields user, ruser, group, rgroup, pid, ppid, pgid, pcpu, vsz, nice, etime, time, tty, comm, args  and their associated headers are as of POSIX 1003.2.

## BUGS

The  **comm** field displays only the basename of the command, not the full path as POSIX wants. This is, however, considered a feature. Use  **args** for full information.
