From ef0b63de31ec4c5c49f9de0f2dd5608036962088 Mon Sep 17 00:00:00 2001 From: albert <> Date: Tue, 10 Aug 2004 04:30:27 +0000 Subject: [PATCH] string.h and maybe a release --- NEWS | 2 + proc/pwcache.c | 1 + ps/ps.1 | 1923 ++++++++++++++++++++++++++++++++++++------------ 3 files changed, 1462 insertions(+), 464 deletions(-) diff --git a/NEWS b/NEWS index ed395827..4e3cd08f 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ avoid warning about -lncurses when not linking (more) new names for shared libraries (packagers: watch out!) "make install" no longer rebuilds everything wchan now '*' for multi-threaded processes +ps: new man page -- thanks Nicolas Francois +ps: STAT shows l for multi-threaded processes vmstat: some overflow problems fixed -- thanks Holger Kiehl sysctl: man page fix diff --git a/proc/pwcache.c b/proc/pwcache.c index 41694c17..77e6619d 100644 --- a/proc/pwcache.c +++ b/proc/pwcache.c @@ -8,6 +8,7 @@ // See file COPYING for information on distribution conditions. #include +#include #include #include #include diff --git a/ps/ps.1 b/ps/ps.1 index 6cb9d43d..3e2b8236 100644 --- a/ps/ps.1 +++ b/ps/ps.1 @@ -1,546 +1,1541 @@ +'\" t +.\" (The preceding line is a note to broken versions of man to tell .\" Man page for ps. .\" Quick hack conversion by Albert Cahalan, 1998. .\" Licensed under version 2 of the Gnu General Public License. .\" -.\" This man page is a horrid hack because *roff sucks. -.\" The whole system is way obsolete. The internal header -.\" stuff must die, and will when I figure out how to kill it. -.\" I've already killed the wasteful left margin and screwy -.\" old perfect justification. Gross! You'd think someone -.\" invented this crap in 1973. Oh yeah, they did. Sorry. +.TH PS 1 "July 28, 2004" "Linux" "Linux User's Manual" +.SH NAME +ps \- report a snapshot of the current processes. .\" -.TH PS 1 "July 5, 1998" "Linux" "Linux User's Manual" -.SH \fRNAME\fR -ps \- report process status -.ad r +.\" To render this page: +.\" groff -t -b -man -X -P-resolution -P100 -Tps nicolas-ps.1 & +.\" groff -t -b -man -X -TX100 nicolas-ps.1 & +.\" tbl ps.1 | troff -Ww -man -z +.\" groff -t -man -Tps ps.1 | ps2pdf - - > ps.pdf +.\" +.\" The '70s called. They want their perfect justification, +.\" hyphenation, and double-spaced sentences back. .na -.ss 12 0 -.in 0 .nh -.nf +.if n .ss 12 0 +.\" +.\" See /usr/share/groff/current/tmac/an-old.tmac for what these do. +.\" Setting them to zero provides extra space, but only do that for +.\" plain text output. PostScript and such will remain indented. +.if n .nr IN 0n +.if n .nr an-prevailing-indent 0n +.\" +.\" +.\" ColSize is used for the format spec table. +.\" It's the left margin, minus the right, minus +.\" the space needed for the 1st two columns. +.\" Making it messy: inches, ens, points, scaled points... +.\" +.nr ColSize ((\n(.lu-\n(.iu/\n(.Hu-20u)n) +.\" +.\" This is for command options +.nr OptSize (16u) +.\" +.\" l=\n(.l +.\" i=\n(.i +.\" o=\n(.o +.\" H=\n(.H +.\" s=\n(.s +.\" ColSize=\n[ColSize] +.\" +.\" Macro for easy option formatting: .opt \-x +.de opt +. TP \\n[OptSize] +. BI \\$* +.. +.\" +.SH SYNOPSIS +\fBps\fR [\fIoptions\fR] +.PP +.PP +.SH DESCRIPTION +.B ps +displays information about a selection of the active processes. +If you want a repetitive update of the selection and the +displayed information, use\ \fItop\fR(1) instead. +.P +By default, \fBps\fR selects all processes with the same effective user +ID (EUID) as the curent user and associated with the same terminal as the +invoker. It displays the process ID (PID), the terminal (tty) associated +with the process (TTY), the cumulated CPU time in [dd\-]hh:mm:ss format +(TIME), and the executable name (CMD). The use of BSD\-style options +will add process state (STAT) to the default display. The use of BSD\-style +options will also change the process selection to include processes +on other terminals (TTYs) that are owned by you; alternately, this may +be described as setting the selection to be the set of all processes +filtered to exclude processes owned by other users or not on a terminal. +Output is unsorted by default. +.P +Except as described below, process selection options are additive. +The default selection is discarded, and then the selected processes +are added to the set of processes to be displayed. +A\ process will thus be shown if it meets any of the selection +criteria. +.PP +.PP +.SH "COMMAND\-LINE OPTIONS" +This version of \fBps\fR accepts several kinds of options: +.PD 0 +.IP 1 4 +UNIX options, which may be grouped and must be preceeded by a dash. +.IP 2 4 +BSD options, which may be grouped and must not be used with a dash. +.IP 3 4 +GNU long options, which are preceeded by two dashes. +.PD +.PP +Options of different types may be freely mixed, but conflicts can appear. +There are some synonomous options, which are functionally identical, due +to the many standards and \fBps\fR implementations that this \fBps\fR is +compatible with. +.P +Note that "\fBps\ \-aux\fR" is distinct from "\fBps\ aux\fR". +The POSIX and UNIX standards require that "\fBps\ \-aux\fR" print all +processes owned by a user named "x", as well as printing all processes +that would be selected by the \fB\-a\fR option. If the user named "x" does +not exist, this \fBps\fR may interpret the command as "\fBps\ aux\fR" +instead and print a warning. This behavior is intended to aid in +transitioning old scripts and habits. It is fragile, subject to change, +and thus should not be relied upon. +.PP +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.SH "EXAMPLES" +.TP 3 +To see every process on the system using standard syntax: +.B ps\ \-e +.br +.B ps\ \-ef +.br +.B ps\ \-eF +.br +.B ps\ \-ely +.TP +To see every process on the system using BSD syntax: +.B ps\ ax +.br +.B ps\ axu +.TP +To print a process tree: +.B ps\ -ejH +.br +.B ps\ axjf +.TP +To get info about threads: +.B ps\ -eLf +.br +.B ps\ axms +.TP +To get security info: +.B ps\ -eo euser,ruser,suser,fuser,f,comm,label +.br +.B ps\ axZ +.br +.B ps\ -eM +.TP +To see every process except those running as root (real\ &\ effective\ ID) +.B ps\ \-U\ root\ \-u\ root\ \-N +.TP +To see every process with a user\-defined format: +.B ps\ \-eo\ pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm +.br +.B ps\ axo\ stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm +.br +.B ps\ \-eopid,tt,user,fname,tmout,f,wchan +.TP +Odd display with AIX field descriptors: +.B ps\ \-o\ "%u\ :\ %U\ :\ %p\ :\ %a" +.TP +Print only the process IDs of syslogd: +.B ps\ \-C\ syslogd\ \-o\ pid= +.TP +Print only the name of PID 42: +.B ps\ \-p\ 42\ \-o\ comm= +.PP +.PP +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.SH "SIMPLE PROCESS SELECTION" +.TP \n[OptSize] +.B \-A +Select all processes. Identical to \fB\-e\fR. -SYNOPSIS -ps [options] +.TP +.B \-N +Select all processes except those that fulfill the specified conditions. +.opt T +Select all processes associated with this terminal. Identical to the +\fBt\fR option without any argument. -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. +.TP +.B \-a +Select all processes except session leaders (see \fIgetsid\fR(2)) and +processes not associated with a terminal. +.TP +.B a +Lift the BSD\-style "only yourself" restriction, which is imposed upon +the set of all processes when some BSD\-style (without\ "\-") options +are used or when the \fBps\fR personality setting is BSD\-like. +The set of processes selected in this manner is +in addition to the set of processes selected by other means. +An alternate description is that this option causes \fBps\fR to +list all processes with a terminal (tty), or to list all processes +when used together with the \fBx\fR option. -COMMAND-LINE OPTIONS +.TP +.B \-d +Select all processes except session leaders. -This version of ps accepts several kinds of options. +.TP +.B \-e +Select all processes. Identical to \fB\-A\fR. -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. +.\" Current "g" behavior: add in the session leaders, which would +.\" be excluded in the sunos4 personality. Supposed "g" behavior: +.\" add in the group leaders -- at least according to the SunOS 4 +.\" man page on the FreeBSD site. Uh oh. I think I had tested SunOS +.\" though, so maybe the code is correct. +.TP +.B g +Really all, even session leaders. This flag is obsolete and may be +discontinued in a future release. It is normally implied by the \fBa\fR flag, +and is only useful when operating in the sunos4 personality. -Options of different types may be freely mixed. +.TP +.B r +Restrict the selection to only running processes. -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. +.TP +.B x +Lift the BSD\-style "must have a tty" restriction, which is imposed upon +the set of all processes when +some BSD\-style options are used or when the \fBps\fR personality +setting is BSD\-like. The set of processes selected in this manner is +in addition to the set of processes selected by other means. +An alternate description is that this option causes \fBps\fR to +list all processes owned by you (same EUID as \fBps\fR), +or to list all processes when used together with the \fBa\fR option. -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 +.TP +.B \-\-deselect +Select all processes except those that fulfill the specified conditions. -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 ---pid select by process ID ---ppid select by parent 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 +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH "PROCESS SELECTION BY LIST" +These options accept a single argument in the form of a blank\-separated +or comma\-separated list. They can be used multiple times. +For\ example:\ \fBps\ \-p\ "1\ 2"\ \-p\ 3,4\fR +.P +.TP \n[OptSize] +.BI \-C \ cmdlist +Select by command name. +.br +This selects the processes whose executable name is given in +\fIcmdlist\fR. -OUTPUT FORMAT CONTROL --O is preloaded "-o" --F extra full format --M add column for security data --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 -Z add column for security data -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 display security context format (NSA SELinux, etc.) +.TP +.BI \-G \ grplist +Select by real group ID (RGID) or name. +.br +This selects the processes whose real group name or ID is in the +\fIgrplist\fR list. The real group ID identifies the group of the user +who created the process, see \fIgetgid\fR(2). -OUTPUT MODIFIERS --H show process hierarchy (forest) --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) -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 +.TP +.BI U \ userlist +Select by effective user ID (EUID) or name. +.br +This selects the processes whose effective user name +or ID is in \fIuserlist\fR. +The effective user\ ID describes the user whose file +access permissions are used by the process +(see\ \fIgeteuid\fR(2)). +Identical to \fB\-u\fR and\ \fB\-\-user\fR. -THREAD DISPLAY --L show threads, possibly with LWP and NLWP columns --T show threads, possibly with SPID column --m show threads after processes -H show threads as if they were processes -m show threads after processes +.TP +.BI \-U \ userlist +select by real user ID (RUID) or name. +.br +It selects the processes whose real user name or ID is in the +\fIuserlist\fR list. +The real user ID identifies the user who created the process, +see\ \fIgetuid\fR(2). -INFORMATION --V print version -L list all format specifiers -V show version info ---help print help message ---info print debugging info ---version print version +.TP +.BI \-g \ grplist +Select by session OR by effective group name. +.br +Selection by session is specified by many standards, +but selection by effective group is the logical behavior that +several other operating systems use. +This \fBps\fR will select by session when the list +is completely numeric (as\ sessions\ are). +Group ID numbers will work only when some group names are also specified. +See the \fB\-s\fR and \fB\-\-group\fR options. -OBSOLETE -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) +.TP +.BI p \ pidlist +Select by process ID. Identical to \fB\-p\fR and\ \fB\-\-pid\fR. +.TP +.BI \-p \ pidlist +Select by PID. +.br +This selects the processes whose process ID numbers appear in +\fIpidlist\fR. Identical to \fBp\fR and\ \fB\-\-pid\fR. +.TP +.BI \-s \ sesslist +Select by session ID. +.br +This selects the processes +with a session ID specified in\ \fIsesslist\fR. -NOTES +.TP +.BI t \ ttylist +Select by tty. Nearly identical to \fB\-t\fR and \fB\-\-tty\fR, +but can also be used with an empty \fIttylist\fR to indicate +the terminal associated with \fBps\fR. +Using the \fBT\fR option is considered cleaner than using \fBT\fR with +an\ empty\ \fIttylist\fR. -User-defined format options ("o", "-o", "O", and "-O") offer -a way to specify individual output columns. Headers may be -renamed ("ps -o pid,ruser=RealUser -o comm=Command") as desired. -If all column headers are empty ("ps -o pid= -o comm=") then the +.TP +.BI \-t \ ttylist +Select by tty. +.br +This selects the processes associated with the terminals +given in \fIttylist\fR. +Terminals (ttys, or screens for text output) can be specified in several +forms: /dev/ttyS1, ttyS1, S1. +A\ plain "\-" may be used to select processes not attached to any terminal. + +.TP +.BI \-u \ userlist +Select by effective user ID (EUID) or name. +.br +This selects the processes whose effective user name or ID is in +\fIuserlist\fR. The effective user ID describes the user whose file +access permissions are used by the process (see\ \fIgeteuid\fR(2)). +Identical to \fBU\fR and \fB\-\-user\fR. + +.TP +.BI \-\-Group \ grplist +Select by real group ID (RGID) or name. Identical to \fB\-G\fR. + +.TP +.BI \-\-User \ userlist +Select by real user ID (RUID) or name. Identical to \fB\-U\fR. + +.TP +.BI \-\-group \ grplist +Select by effective group ID (EGID) or name. +.br +This selects the processes whose effective group name or ID is in +\fIgrouplist\fR. The effective group ID describes the group whose file +access permissions are used by the process (see\ \fIgeteuid\fR(2)). +The \fB\-g\fR option is often an alternative to\ \fB\-\-group\fR. + +.TP +.BI \-\-pid \ pidlist +Select by process\ ID. Identical to \fB\-p\fR\ and\ \fBp\fR. + +.TP +.BI \-\-ppid \ pidlist +Select by parent process\ ID. +This selects the processes +with a parent\ process\ ID in \fRpidlist\fR. +That\ is, it selects processes that are children +of those listed in \fRpidlist\fR. + +.TP +.BI \-\-sid \ sesslist +Select by session\ ID. Identical to\ \fB\-s\fR. + +.TP +.BI \-\-tty \ ttylist +Select by terminal. Identical to \fB\-t\fR and\ \fBt\fR. + +.TP +.BI \-\-user \ userlist +Select by effective user ID (EUID) or name. +Identical to \fB\-u\fR and\ \fBU\fR. + +.TP +\fB\-\fI123\fR +Identical to \fB\-\-sid\ \fI123\fR. + +.TP +.B \fI123\fR +Identical to \fB\-\-pid\ \fI123\fR. + +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH "OUTPUT FORMAT CONTROL" +These options are used to choose the information displayed by \fBps\fR. +The output may differ by personality. +.PP + +.TP \n[OptSize] +.B \-F +extra full format. See the \fB\-f\fR option, which \fB\-F\fR implies. + +.TP +.BI \-O \ format +is like \fB\-o\fR, but preloaded with some default columns. +Identical to \fB\-o\ pid,\fIformat\fB,state,tname,time,command\fR +or \fB\-o\ pid,\fIformat\fB,tname,time,cmd\fR, see\ \fB\-o\fR\ below. + +.TP +.BI O \ format +is preloaded \fBo\fR (overloaded). +.br +The BSD \fBO\fR option can act like \fB\-O\fR (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 (sorting or +formatting), specify the option in some other way +(e.g. with \fB\-O\fR or \fB\-\-sort\fR). +When used as a formatting option, it is identical to \fB\-O\fR, with the +BSD\ personality. + +.TP +.B \-M +Add a column of security data. (for\ SE\ Linux) + +.TP +.B X +Register format. + +.TP +.B Z +Add a column of security data. (for\ SE\ Linux) + +.TP +.B \-c +Show different scheduler information for the \fB\-l\fR option. + +.TP +.B \-f +does full\-format listing. This option can be combined with many +other UNIX\-style options to add additional columns. It also causes +the command arguments to be printed. When used with \fB\-L\fR, the +NLWP (number of threads) and LWP (thread ID) columns will be added. + +.TP +.B j +BSD job control format. + +.TP +.B \-j +jobs format + +.TP +.B l +display BSD long format. + +.TP +.B \-l +long format. The \fB\-y\fR option is often useful with this. + +.TP +.BI o \ format +specify user\-defined format. Identical to \fB\-o\fR and +\fB\-\-format\fR. + +.TP +.BI \-o \ format +user\-defined format. +.br +\fIformat\fR is a single argument in the form of a +blank\-separated or comma\-separated list, which offers +a way to specify individual output columns. +The recognized keywords are described in the \fBSTANDARD FORMAT +SPECIFIERS\fR section below. +Headers may be +renamed (\fBps\ \-o\ pid,ruser=RealUser\ \-o\ comm=Command\fR) as desired. +If all column headers are empty (\fBps\ \-o\ pid=\ \-o\ comm=\fR) then the header line will not be output. Column width will increase as needed for wide headers; this may be used to widen up columns -such as WCHAN ("ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm"). -Explicit width control ("ps opid,wchan:42,cmd") is offered too. -The behavior of "ps -o pid=X,comm=Y" varies with personality; +such as WCHAN (\fBps\ \-o\ pid,wchan=WIDE\-WCHAN\-COLUMN\ \-o\ comm\fR). +Explicit width control (\fBps\ opid,wchan:42,cmd\fR) is offered too. +The behavior of \fBps\ \-o\ pid=X,comm=Y\fR varies with personality; output may be one column named "X,comm=Y" or two columns -named "X" and "Y". Use multiple -o options when in doubt. -Use the $PS_FORMAT environment variable to specify a default +named "X" and "Y". Use multiple \fB\-o\fR options when in doubt. +Use the \fBPS_FORMAT\fR environment variable to specify a default as desired; DefSysV and DefBSD are macros that may be used to choose the default UNIX or BSD columns. -The following user-defined format specifiers may contain -spaces: comm, args, cmd, comm, command, fname, ucmd, ucomm, -lstart, bsdstart, start +.TP +.B s +display signal format -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. +.TP +.B u +display user\-oriented format -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) +.TP +.B v +display virtual memory format -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 +.TP +.B \-y +Do not show flags; show rss in place of addr. +This option can only be used with \fB\-l\fR. + +.TP +.BI \-\-format \ format +user\-defined format. Identical to \fB\-o\fR and \fBo\fR. + +.TP +.B \-\-context +Display security context format. (for\ SE\ Linux) + +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH "OUTPUT MODIFIERS" + +.\" .TP +.\" .B C +.\" use raw CPU time for %CPU instead of decaying average + +.TP \n[OptSize] +.B \-H +show process hierarchy (forest) + +.TP +.BI N \ namelist +Specify namelist file. Identical to \fB\-n\fR, see \fB\-n\fR above. + +.TP +.BI O \ order +Sorting order. (overloaded) +.br +The BSD \fBO\fR option can act like \fB\-O\fR (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 (sorting or +formatting), specify the option in some other way (e.g. with \fB\-O\fR +or \fB\-\-sort\fR). + +For sorting, obsolete BSD \fBO\fR option syntax is +\fBO\fR[\fB+\fR|\fB\-\fR]\fIk1\fR[,[\fB+\fR|\fB\-\fR]\fIk2\fR[,...]]. +It orders the processes listing according to the multilevel sort specified by +the sequence of one\-letter short keys \fIk1\fR, \fIk2\fR, ... described +in the \fBOBSOLETE SORT KEYS\fR section below. +The\ "+" is currently optional, +merely re\-iterating the default direction on a key, +but may help to distinguish an \fBO\fR sort from an \fBO\fR format. +The\ "\-" reverses direction only on the key it precedes. + +.TP +.B S +Sum up some information, such as CPU usage, from dead child processes +into their parent. This is useful for examining a system where a +parent process repeatedly forks off short\-lived children to do work. + +.TP +.B c +Show the true command name. This is derived from the name of the +executable file, rather than from the argv value which could be +modified by a user. Command arguments are not shown. + +.TP +.B e +Show the environment after the command. + +.TP +.B f +ASCII\-art process hierarchy (forest) + +.TP +.B h +No header. (or, one header per screen in the BSD personality) +.br +The \fBh\fR option is problematic. Standard BSD \fBps\fR uses +this option to print a header on each page of output, but older +Linux \fBps\fR uses this option to totally disable the header. +This version of \fBps\fR 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 \fB\-\-headers\fR +and \fB\-\-no\-headers\fR to enable printing headers each page or 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. +.TP +.BI k \ spec +specify sorting order. Sorting syntax is +[\fB+\fR|\fB\-\fR]\fIkey\fR[,[\fB+\fR|\fB\-\fR]\fIkey\fR[,...]] +Choose a multi\-letter key from the \fBSTANDARD FORMAT SPECIFIERS\fR section. +The\ "+" is optional since default direction is increasing numerical or +lexicographic order. Identical to \fB\-\-sort\fR. Examples: +.br +\fBps\ jaxkuid,\-ppid,+pid\fR +.br +\fBps\ axk\ comm\ o\ comm,args\fR +.br +\fBps\ kstart_time\ \-ef\fR -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. +.TP +.BI \-n \ namelist +set namelist file. Identical to \fBN\fR. +.br +The namelist file is needed for a proper WCHAN display, and must match +the current Linux kernel exactly for correct output. +Without this option, the default search path for the namelist is: -For sorting, obsolete 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. + $PS_SYSMAP +.br + $PS_SYSTEM_MAP +.br + /proc/*/wchan +.br + /boot/System.map\-\`uname\ \-r\` +.br + /boot/System.map +.br + /lib/modules/\`uname\ \-r\`/System.map +.br + /usr/src/linux/System.map +.br + /System.map -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 +.TP +.B n +Numeric output for WCHAN and USER. (including all types of UID and GID) -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. +.TP +.B \-w +Wide output. Use this option twice for unlimited width. -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. +.TP +.B w +Wide output. Use this option twice for unlimited width. -To produce the WCHAN field, ps needs to read the System.map file created -when the kernel is compiled. The search path is: +.TP +.BI \-\-cols \ n +set screen width -$PS_SYSTEM_MAP -/boot/System.map-`uname -r` -/boot/System.map -/lib/modules/`uname -r`/System.map -/usr/src/linux/System.map +.TP +.BI \-\-columns \ n +set screen width -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. (Somebody fix libc or the kernel please) +.TP +.B \-\-cumulative +include some dead child process data (as a sum with the parent) + +.TP +.B \-\-forest +ASCII art process tree + +.TP +.B \-\-headers +repeat header lines, one per page of output + +.TP +.B \-\-no\-headers +print no header line at all + +.TP +.BI \-\-lines \ n +set screen height + +.TP +.BI \-\-rows \ n +set screen height + +.TP +.BI \-\-sort \ spec +specify sorting order. Sorting syntax is +[\fB+\fR|\fB\-\fR]\fIkey\fR[,[\fB+\fR|\fB\-\fR]\fIkey\fR[,...]] +Choose a multi\-letter key from the \fBSTANDARD FORMAT SPECIFIERS\fR section. +The\ "+" is optional since default direction is increasing numerical or +lexicographic order. Identical to\ \fBk\fR. +For example: \fBps\ jax\ \-\-sort=uid,\-ppid,+pid\fR + +.TP +.BI \-\-width \ n +set screen width + +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH "THREAD DISPLAY" +.PD 0 + +.TP \n[OptSize] +.B H +Show threads as if they were processes + +.TP +.B \-L +Show threads, possibly with LWP and NLWP columns + +.TP +.B \-T +Show threads, possibly with SPID column + +.TP +.B m +Show threads after processes + +.TP +.B \-m +Show threads after processes + +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH "OTHER INFORMATION" +.PD 0 + +.TP \n[OptSize] +.B L +List all format specifiers. + +.TP +.B \-V +Print the procps version. + +.TP +.B V +Print the procps version. + +.TP +.B \-\-help +Print a help message. + +.TP +.B \-\-info +Print debugging info. + +.TP +.B \-\-version +Print the procps version. + +.\" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +.PD +.PP +.SH NOTES +This \fBps\fR works by reading the virtual files in\ /proc. +This \fBps\fR does not need to be setuid kmem or have any privileges to run. +Do not give this \fBps\fR any special permissions. + +This \fBps\fR needs access to namelist data for proper WCHAN display. +For kernels prior to 2.6, the System.map file must be installed. + +CPU usage is currently expressed as the percentage of time spent +running during the entire lifetime of a process. +This is not ideal, and\ it does not conform to the +standards that \fBps\fR otherwise conforms\ to. +CPU\ usage is unlikely to add up to exactly\ 100%. Programs swapped out to disk will be shown without command line arguments, -and unless the c option is given, in brackets. +and unless the \fBc\fR option is given, +in\ brackets. -%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 some parts of a process including the +page tables, kernel stack, struct thread_info, and struct task_struct. +This is usually at least 20\ KiB of memory that is always resident. +SIZE is the virtual size of the process (code+data+stack). -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 are dead processes (so-called "zombies") that +Processes marked 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. +will be destroyed by \fIinit\fR(8) if the parent process exits. -PROCESS FLAGS - -FORKNOEXEC 1 forked but didn't exec -SUPERPRIV 4 used super-user privileges - - -PROCESS STATE CODES - -D uninterruptible sleep (usually IO) -R runnable (on run queue) -S sleeping -T traced or stopped -W paging (2.4 kernels and older only) -X dead -Z a defunct ("zombie") process - -For BSD formats and when the "stat" keyword is used, additional +.SH "PROCESS FLAGS" +The sum of these values is displayed in the "F" column, +which is provided by the \fBflags\fR output specifier. +.PD 0 +.TP 5 +1 +forked but didn't exec +.TP +4 +used super\-user privileges +.PD +.PP +.SH "PROCESS STATE CODES" +Here are the different values that the \fBs\fR, \fBstat\fR and +\fBstate\fR output specifiers (header\ "STAT"\ or\ "S") will display to +describe the state of a process. +.PD 0 +.TP 5 +D +Uninterruptible sleep (usually\ IO) +.TP +R +Running or runnable (on\ run\ queue) +.TP +S +Interruptible sleep (waiting for an event to complete) +.TP +T +Stopped, either by a job control signal or because it is being traced. +.TP +W +paging (not valid since the 2.6.xx kernel) +.TP +X +dead (should never be seen) +.TP +Z +Defunct ("zombie") process, terminated but not reaped by its parent. +.PD +.PP +For BSD formats and when the \fBstat\fR keyword is used, additional characters may be displayed: +.PD 0 +.TP 5 +< +high\-priority (not nice to other users) +.TP +N +low\-priority (nice to other users) +.TP +L +has pages locked into memory (for real\-time and custom\ IO) +.TP +s +is a session leader +.TP +l +is multi-threaded (using CLONE_THREAD, like NPTL pthreads\ do) +.TP ++ +is in the foreground process group +.PD +.PP +.PP +.SH "OBSOLETE SORT KEYS" +These keys are used by the BSD \fBO\fR option (when it is used for +sorting). The GNU \fB\-\-sort\fR option doesn't use these keys, but the +specifiers described below in the \fBSTANDARD FORMAT SPECIFIERS\fR +section. Note that the values used in sorting are the internal +values \fBps\fR uses and not the "cooked" values used in some of +the output format fields (e.g. sorting on tty will sort into +device number, not according to the terminal name displayed). +Pipe \fBps\fR output into the \fIsort\fR(1) command if you want +to sort the cooked values. -< high-priority task -N low-priority task -L has pages locked into memory (for real-time and custom IO) -s is a session leader -+ is in the foreground process group +.TS +l l lw(3i). +\fBKEY LONG DESCRIPTION\fR +c cmd simple name of executable +C pcpu cpu utilization +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 +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 device number of the controling tty +T start_time time process was started +U uid user ID number +u user user name +v vsize total VM size in kB +y priority kernel scheduling priority +.\"K stime system time (conflict, system vs. start time) +.TE +.PP +.PP +.SH "AIX FORMAT DESCRIPTORS" +This \fBps\fR supports AIX format descriptors, which work somewhat like the +formatting codes of \fIprintf\fR(1) and \fIprintf\fR(3). For example, the normal +default output can be produced with this: \fBps\ \-eo\ "%p\ %y\ %x\ %c"\fR. +The\ \fBNORMAL\fR codes are described in the next section. +.TS +l l l. +\fBCODE NORMAL HEADER\fR +%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 +.TE -SORT KEYS +.SH "STANDARD FORMAT SPECIFIERS" +Here are the different keywords that may be used to control the output +format (e.g. with option \fB\-o\fR) or to sort the selected processes +with the GNU\-style \fB\-\-sort\fR option. -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. +For example: \fBps\ \-eo\ pid,user,args\ \-\-sort\ user\fR -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 kB -y priority kernel scheduling priority +This version of \fBps\fR tries to recognize most of the keywords used in +other implementations of \fBps\fR. +The following user\-defined format specifiers may contain +spaces: \fBargs\fR, \fBcmd\fR, \fBcomm\fR, \fBcommand\fR, \fBfname\fR, +\fBucmd\fR, \fBucomm\fR, +\fBlstart\fR, \fBbsdstart\fR, \fBstart\fR. -AIX FORMAT DESCRIPTORS +Some keywords may not be available for sorting. -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" +.\" ####################################################################### +.\" lB1 lB1 lB1 lB1 s s s +.\" lB1 l1 l1 l1 s s s. +.\" +.\" lB1 lB1 lBw(5.5i) +.\" lB1 l1 l. +.\" +.TS +expand; +lB1 lB1 lBw(\n[ColSize]n) +lB1 l1 l. +CODE HEADER DESCRIPTION -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 +%cpu %CPU T{ +cpu utilization of the process in "##.#" format. It is the CPU time +used divided by the time the process has been running (cputime/realtime +ratio), expressed as a percentage. It will not add up to 100% unless you +are lucky. (alias\ \fBpcpu\fR). +T} +%mem %MEM T{ +ratio of the process's resident set size to the physical memory on +the machine, expressed as a percentage. (alias\ \fBpmem\fR). +T} -STANDARD FORMAT SPECIFIERS +args COMMAND T{ +command with all its arguments as a string. May chop as desired. +Modifications to the arguments are not shown. The output in this column +may contain spaces. (alias\ \fBcmd\fR,\ \fBcommand\fR). +T} -These may be used to control both output format and sorting. -For example: ps -eo pid,user,args --sort user +blocked BLOCKED T{ +mask of the blocked signals, see \fIsignal\fR(7). +According to the width of the field, +a\ 32\-bit or 64\-bit mask in hexadecimal format is displayed. +(alias\ \fBsig_block\fR,\ \fBsigmask\fR). +T} -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 -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 -priority 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 -ucmd CMD -ucomm COMMAND -uid UID -uid_hack UID -uname USER -user USER -vsize VSZ -vsz VSZ -wchan WCHAN +bsdstart START T{ +time the command started. If the process was started less +than 24 hours ago, the output format is "\ HH:MM", +else it is "mmm\ dd" +(where mmm is the three letters of the month). +T} +bsdtime TIME T{ +accumulated cpu time, user\ +\ system. The display format is usualy +"MMM:SS", but can be shifted to the right if the process used more than 999 +minutes of cpu time. +T} +c C T{ +integer value of the processor utilisation percentage. (see\ \fB%cpu\fR). +T} +caught CAUGHT T{ +mask of the caught signals, see \fIsignal\fR(7). According to the +width of the field, a 32 or 64 bits mask in hexadecimal format is +displayed. (alias\ \fBsig_catch\fR,\ \fBsigcatch\fR). +T} -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. +class CLS T{ +scheduling class of the process. (alias\ \fBpolicy\fR,\ \fBcls\fR). +Field's possible values are: +.br +\- not reported +.br +TS SCHED_OTHER +.br +FF SCHED_FIFO +.br +RR SCHED_RR +.br +? unknown value +T} -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. +cls CLS T{ +scheduling class of the process. (alias\ \fBpolicy\fR,\ \fBclass\fR). +Field's possible values are: +.br +\- not reported +.br +TS SCHED_OTHER +.br +FF SCHED_FIFO +.br +RR SCHED_RR +.br +? unknown value +T} +cmd CMD T{ +see \fBargs\fR. (alias\ \fBargs\fR,\ \fBcommand\fR). +T} -PERSONALITY - 390 like the S/390 OpenEdition ps - aix like AIX ps - bsd like FreeBSD ps (totally non-standard) - 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 ***** RECOMMENDED ***** - old like the original Linux ps (totally non-standard) - posix standard - sco like SCO ps - sgi like Irix ps - sun like SunOS 4 ps (totally non-standard) - sunos like SunOS 4 ps (totally non-standard) - sysv standard - unix standard - unix95 standard - unix98 standard +comm COMMAND T{ +command name (only\ the executable\ name). The output in this +column may contain spaces. (alias\ \fBucmd\fR,\ \fBucomm\fR). +T} +command COMMAND T{ +see \fBargs\fR. (alias\ \fBargs\fR,\ \fBcmd\fR). +T} -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= +cp CP T{ +per\-mill CPU usage. (see\ \fB%cpu\fR). +T} -SEE ALSO -top(1) pgrep(1) pstree(1) proc(5) +cputime TIME T{ +cumulative CPU time, "[dd\-]hh:mm:ss" format. (alias\ \fBtime\fR). +T} -STANDARDS -This ps conforms to version 2 of the Single Unix Specification. +egid EGID T{ +effective group ID number of the process as a decimal integer. +(alias\ \fBgid\fR). +T} -AUTHOR -ps was originally written by Branko Lankester . Michael -K. Johnson re-wrote it significantly to use the proc +egroup EGROUP T{ +effective group ID of the process. This will be the textual group ID, +if it can be obtained and the field width permits, or a decimal +representation otherwise. (alias\ \fBgroup\fR). +T} + +eip EIP T{ +instruction pointer. +T} + +esp ESP T{ +stack pointer. +T} + +etime ELAPSED T{ +elapsed time since the process was started, +in\ the form\ [[dd\-]hh:]mm:ss. +T} + +euid EUID T{ +effective user\ ID. (alias\ \fBuid\fR). +T} + +euser EUSER T{ +effective user\ name. This will be the textual +user\ ID, if\ it can be obtained and the field width permits, +or\ a\ decimal representation otherwise. +The\ \fBn\fR\ option can be used +to force the decimal representation. +(alias\ \fBuname\fR,\ \fBuser\fR). +T} + +f F T{ +flags associated with the process, see the \fBPROCESS FLAGS\fR section. +(alias\ \fBflag\fR,\ \fBflags\fR). +T} + +fgid FGID T{ +filesystem access group\ ID. (alias\ \fBfsgid\fR). +T} + +fgroup FGROUP T{ +filesystem access group\ ID. +This will be the textual user\ ID, if\ it can be obtained +and the field width permits, +or\ a\ decimal representation otherwise. +(alias\ \fBfsgroup\fR). +T} + +flag F T{ +see\ \fBf\fR. (alias\ \fBf\fR,\ \fBflags\fR). +T} + +flags F T{ +see\ \fBf\fR. (alias\ \fBf\fR,\ \fBflag\fR). +T} + +fname COMMAND T{ +first 8 bytes of the base name of the process's executable file. +The output in this column may contain spaces. +T} + +fuid FUID T{ +filesystem access user\ ID. (alias\ \fBfsuid\fR). +T} + +fuser FUSER T{ +filesystem access user\ ID. This will be the textual user\ ID, +if\ it can be obtained and the field width permits, +or\ a\ decimal representation otherwise. +T} + +gid GID T{ +see\ \fBegid\fR. (alias\ \fBegid\fR). +T} + +group GROUP T{ +see\ \fBegroup\fR. (alias\ \fBegroup\fR). +T} + +ignored IGNORED T{ +mask of the ignored signals, see \fIsignal\fR(7). According to the +width of the field, a\ 32\-bit or 64\-bit mask in hexadecimal format +is displayed. (alias \fBsig_ignore\fR, \fBsigignore\fR). +T} + +label LABEL T{ +security label, most commonly used for SE\ Linux context data. +This is for the \fIMandatory Access Control\fR ("MAC") found on +high\-security systems. +T} + +lstart STARTED T{ +time the command started. +T} + +lwp LWP T{ +lwp (light weight process, or thread) ID of the lwp being reported. +(alias\ \fBspid\fR,\ \fBtid\fR). +T} + +ni NI T{ +nice value. This ranges from 19 (nicest) to \-20 (not\ nice to\ others), +see\ \fInice\fR(1). (alias\ \fBnice\fR). +T} + +nice NI T{ +see\ \fBni\fR. (alias\ \fBni\fR). +T} + +nlwp NLWP T{ +number of lwps (threads) in the process. (alias\ \fBthcount\fR). +T} + +nwchan WCHAN T{ +address of the kernel function where the process is sleeping +(use \fBwchan\fR if you want the kernel function name). +Running tasks will display a dash ('\-') in this column. +T} + +pcpu %CPU T{ +see\ \fB%cpu\fR. (alias\ \fB%cpu\fR). +T} + +pending PENDING T{ +mask of the pending signals. See\ \fIsignal\fR(7). Signals pending on +the process are distinct from signals pending on individual threads. +Use the \fBm\fR option or the \fB\-m\fR option to see both. +According to the width of the field, a\ 32\-bit or 64\-bit mask in +hexadecimal format is displayed. (alias\ \fBsig\fR). +T} + +pgid PGID T{ +process group\ ID or, equivalently, the process\ ID of the +process group leader. (alias\ \fBpgrp\fR). +T} + +pgrp PGRP T{ +see\ \fBpgid\fR. (alias\ \fBpgid\fR). +T} + +pid PID T{ +process\ ID number of the process. +T} + +pmem %MEM T{ +see\ \fB%mem\fR. (alias\ \fB%mem\fR). +T} + +policy POL T{ +scheduling class of the process. (alias\ \fBclass\fR,\ \fBcls\fR). +Possible values are: +.br +\- not reported +.br +TS SCHED_OTHER +.br +FF SCHED_FIFO +.br +RR SCHED_RR +.br +? unknown value +T} + +ppid PPID T{ +parent process ID. +T} + +psr PSR T{ +processor that process is currently assigned to. +T} + +rgid RGID T{ +real group ID. +T} + +rgroup RGROUP T{ +real group name. This will be the textual group\ ID, if\ it can be +obtained and the field width permits, +or\ a\ decimal representation otherwise. +T} + +rss RSS T{ +resident set size, the non\-swapped physical memory that +a task has used (in\ kiloBytes). +(alias\ \fBrssize\fR,\ \fBrsz\fR). +T} + +rssize RSS T{ +see\ \fBrss\fR. (alias\ \fBrss\fR,\ \fBrsz\fR). +T} + +rsz RSZ T{ +see\ \fBrss\fR. (alias\ \fBrss\fR,\ \fBrssize\fR). +T} + +rtprio RTPRIO T{ +realtime priority. +T} + +ruid RUID T{ +real user\ ID. +T} + +ruser RUSER T{ +real user\ ID. This will be the textual user\ ID, +if\ it can be obtained and the field width permits, +or\ a\ decimal representation otherwise. +T} + +s S T{ +minimal state display (one\ character). +See\ section \fBPROCESS STATE CODES\fR for the different values. +See\ also \fBstat\fR if you want additionnal +information displayed. (alias\ \fBstate\fR). +T} + +sched SCH T{ +scheduling policy of the process. The policies sched_other, sched_fifo, +and sched_rr are respectively displayed as 0,\ 1,\ and\ 2. +T} + +sess SESS T{ +session\ ID or, equivalently, the process\ ID of the session\ leader. +(alias\ \fBsession\fR,\ \fBsid\fR). +T} + +sgi_p P T{ +processor that the process is currently executing on. +Displays "*" if the process is not currently running or runnable. +T} + +sgid SGID T{ +saved group\ ID. +(alias\ \fBsvgid\fR). +T} + +sgroup SGROUP T{ +saved group\ name. This will be the textual group\ ID, +if\ it can be obtained and the field width permits, +or\ a\ decimal representation otherwise. +T} + +sid SID T{ +see\ \fBsess\fR. (alias\ \fBsess\fR,\ \fBsession\fR). +T} + +sig PENDING T{ +see\ \fBpending\fR. (alias\ \fBpending\fR,\ \fBsig_pend\fR). +T} + +sigcatch CAUGHT T{ +see\ \fBcaught\fR. (alias\ \fBcaught\fR,\ \fBsig_catch\fR). +T} + +sigignore IGNORED T{ +see\ \fBignored\fR. (alias\ \fBignored\fR,\ \fBsig_ignore\fR). +T} + +sigmask BLOCKED T{ +see\ \fBblocked\fR. (alias\ \fBblocked\fR,\ \fBsig_block\fR). +T} + +size SZ T{ +approximate amount of swap space that would be required +if the process were to dirty all writable pages and then +be swapped out. +This number is very\ rough! +T} + +spid SPID T{ +see \fBlwp\fR. (alias\ \fBlwp\fR,\ \fBtid\fR). +T} + +stackp STACKP T{ +address of the bottom (start) of stack for the process. +T} + +start STARTED T{ +time the command started. +If the process was started less than 24 hours ago, +the output format is "HH:MM:SS", +else it is "\ \ mmm\ dd" +(where mmm is a three\-letter month\ name). +T} + +start_time START T{ +starting time or date of the process. +Only the year will be displayed if the process was not +started the same year \fBps\fR was invoked, +or\ "mmmdd" if\ it was not started the same day, +or\ "HH:MM" otherwise. +T} + +stat STAT T{ +multi\-character process state. +See\ section \fBPROCESS STATE CODES\fR +for the different values meaning. +See also \fBs\fR and \fBstate\fR if you just want +the first character displayed. +T} + +state S T{ +see\ \fBs\fR. (alias\ \fBs\fR). +T} + +suid SUID T{ +saved user\ ID. (alias\ \fBsvuid\fR). +T} + +suser SUSER T{ +saved user name. This will be the textual user\ ID, +if\ it can be obtained and the field width permits, +or\ a\ decimal representation otherwise. +(alias\ \fBsvuser\fR). +T} + +svgid SVGID T{ +see\ \fBsgid\fR. (alias\ \fBsgid\fR). +T} + +svuid SVUID T{ +see\ \fBsuid\fR. (alias\ \fBsuid\fR). +T} + +sz SZ T{ +size in physical pages of the core image of the process. +This includes text, data, and stack space. +T} + +thcount THCNT T{ +see \fBnlwp\fR. (alias\ \fBnlwp\fR). +number of kernel threads owned by the process. +T} + +tid TID T{ +see\ \fBlwp\fR. (alias\ \fBlwp\fR). +T} + +time TIME T{ +cumulative CPU\ time, "[dd\-]hh:mm:ss" format. (alias\ \fBcputime\fR). +T} + +tname TTY T{ +controlling tty (terminal). +(alias\ \fBtt\fR,\ \fBtty\fR). +T} + +tpgid TPGID T{ +ID of the foreground process group on the tty (terminal) that +the process is connected to, or \-1 if the process is not connected +to a tty. +T} + +tt TT T{ +controlling tty (terminal). (alias\ \fBtname\fR,\ \fBtty\fR). +T} + +tty TT T{ +controlling tty (terminal). (alias\ \fBtname\fR,\ \fBtt\fR). +T} + +ucmd CMD T{ +see \fBcomm\fR. (alias\ \fBcomm\fR,\ \fBucomm\fR). +T} + +ucomm COMMAND T{ +see \fBcomm\fR. (alias\ \fBcomm\fR,\ \fBucmd\fR). +T} + +uid UID T{ +see \fBeuid\fR. (alias\ \fBeuid\fR). +T} + +uname USER T{ +see \fBeuser\fR. (alias\ \fBeuser\fR,\ \fBuser\fR). +T} + +user USER T{ +see \fBeuser\fR. (alias\ \fBeuser\fR,\ \fBuname\fR). +T} + +vsize VSZ T{ +virtual memory usage of entire process. +vm_lib\ +\ vm_exe\ +\ vm_data\ +\ vm_stack +T} + +vsz VSZ T{ +see \fBvsize\fR. (alias\ \fBvsize\fR). +T} + +wchan WCHAN T{ +name of the kernel function in which the process is sleeping, +a\ "\-"\ if the process is running, +or a "*"\ if the process is multi\-threaded and +\fBps\fR is not displaying threads. +T} +.TE +.\" ####################################################################### +.PP +.PP +.SH "ENVIRONMENT VARIABLES" +The following environment variables could affect \fBps\fR: +.TP 3 +.B COLUMNS +Override default display width. +.TP +.B LINES +Override default display height. +.TP +.B PS_PERSONALITY +Set to one of posix, old, linux, bsd, sun, digital... +(see\ section\ \fBPERSONALITY\fR\ below). +.TP +.B CMD_ENV +Set to one of posix, old, linux, bsd, sun, digital... +(see\ section\ \fBPERSONALITY\fR\ below). +.TP +.B I_WANT_A_BROKEN_PS +Force obsolete command line interpretation. +.TP +.B LC_TIME +Date format. +.TP +.B PS_COLORS +Not currently supported. +.TP +.B PS_FORMAT +Default output format override. +.TP +.B PS_SYSMAP +Default namelist (System.map) location. +.TP +.B PS_SYSTEM_MAP +Default namelist (System.map) location. +.TP +.B POSIXLY_CORRECT +Don't find excuses to ignore bad "features". +.TP +.B POSIX2 +When set to "on", acts as \fBPOSIXLY_CORRECT\fR. +.TP +.B UNIX95 +Don't find excuses to ignore bad "features". +.TP +.B _XPG +Cancel \fBCMD_ENV\fI=irix\fR non\-standard behavior. +.PP +In general, it\ is a bad idea to set these variables. +The one exception is \fBCMD_ENV\fR or \fBPS_PERSONALITY\fR, +which could be set to Linux for normal systems. +Without that setting, +\fBps\fR follows the useless and bad parts of the Unix98 standard. +.PP +.PP +.SH "PERSONALITY" +.TS +l l. +390 like the S/390 OpenEdition \fBps\fR +aix like AIX \fBps\fR +bsd like FreeBSD \fBps\fR (totally\ non\-standard) +compaq like Digital Unix \fBps\fR +debian like the old Debian \fBps\fR +digital like Tru64 (was Digital\ Unix, was OSF/1) \fBps\fR +gnu like the old Debian \fBps\fR +hp like HP\-UX \fBps\fR +hpux like HP\-UX \fBps\fR +irix like Irix \fBps\fR +linux ***** RECOMMENDED ***** +old like the original Linux \fBps\fR (totally\ non\-standard) +os390 like OS/390 Open Edition \fBps\fR +posix standard +s390 like OS/390 Open Edition \fBps\fR +sco like SCO \fBps\fR +sgi like Irix \fBps\fR +solaris2 like Solaris 2+ (SunOS 5) \fBps\fR +sunos4 like SunOS 4 (Solaris 1) \fBps\fR (totally\ non\-standard) +svr4 standard +sysv standard +tru64 like Tru64 (was Digital\ Unix, was OSF/1) \fBps\fR +unix standard +unix95 standard +unix98 standard +.TE +.PP +.PP +.SH "SEE ALSO" +\fItop\fR(1), \fIpgrep\fR(1), \fIpstree\fR(1), \fIproc\fR(5). +.PP +.PP +.SH STANDARDS +This \fBps\fR conforms to: +.PP +.PD 0 +.IP 1 4 +Version 2 of the Single Unix Specification +.IP 2 4 +The Open Group Technical Standard Base Specifications, Issue\ 6 +.IP 3 4 +IEEE Std 1003.1, 2004\ Edition +.IP 4 4 +X/Open System Interfaces Extension [UP\ XSI] +.IP 5 4 +ISO/IEC 9945:2003 +.PD +.PP +.SH AUTHOR +\fBps\fR was originally written by Branko Lankester . Michael +K. Johnson re\-wrote it significantly to use the proc filesystem, changing a few things in the process. Michael Shields - added the pid-list feature. Charles Blake - added multi-level sorting, the dirent-style library, the -device name-to-number mmaped database, the approximate binary search + added the pid\-list feature. Charles Blake + 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 - rewrote ps for full Unix98 and BSD support, along with +Mossberger\-Tang wrote the generic BFD support for psupdate. Albert Cahalan + rewrote ps for full Unix98 and BSD support, along with some ugly hacks for obsolete and foreign syntax. -Please send bug reports to +Please send bug reports to . +No\ subscription is required or suggested.