| 1 | .\" Copyright (c) 1980 Regents of the University of California. |
| 2 | .\" All rights reserved. The Berkeley software License Agreement |
| 3 | .\" specifies the terms and conditions for redistribution. |
| 4 | .\" |
| 5 | .\" @(#)ps.1 6.1 (Berkeley) %G% |
| 6 | .\" |
| 7 | .TH PS 1 "" |
| 8 | .UC 4 |
| 9 | .SH NAME |
| 10 | ps \- process status |
| 11 | .SH SYNOPSIS |
| 12 | .B ps |
| 13 | [ |
| 14 | .B acegklstuvwxU# |
| 15 | ] |
| 16 | .SH DESCRIPTION |
| 17 | .I Ps |
| 18 | prints information about processes. |
| 19 | Normally, only your processes are candidates to be printed by |
| 20 | .I ps; |
| 21 | specifying |
| 22 | .B a |
| 23 | causes other users processes to be candidates to be printed; |
| 24 | specifying |
| 25 | .B x |
| 26 | includes processes without control terminals in the candidate pool. |
| 27 | .PP |
| 28 | All output formats include, for each process, the process id PID, |
| 29 | control terminal of the process TT, cpu time used by the process TIME |
| 30 | (this includes both user and system time), the state STAT of the process, |
| 31 | and an indication of the COMMAND which is running. |
| 32 | The state is given by a sequence of four letters, e.g. ``RWNA''. |
| 33 | The first letter indicates the runnability of the process: |
| 34 | R for runnable processes, |
| 35 | T for stopped processes, |
| 36 | P for processes in page wait, |
| 37 | D for those in disk (or other short term) waits, |
| 38 | S for those sleeping for less than about 20 seconds, |
| 39 | and I for idle (sleeping longer than about 20 seconds) |
| 40 | processes. |
| 41 | The second letter indicates whether a process is swapped out, |
| 42 | showing W if it is, or a blank if it is loaded (in-core); |
| 43 | a process which has specified a soft limit on memory requirements |
| 44 | and which is exceeding that limit shows >; such a process is (necessarily) |
| 45 | not swapped. |
| 46 | The third letter indicates whether a process is running with altered |
| 47 | CPU scheduling priority (nice); if the process priority is reduced, |
| 48 | an N is shown, if the process priority has been artificially raised then |
| 49 | a `<' is shown; processes running without special treatment have just a |
| 50 | blank. |
| 51 | The final letter indicates any special treatment of the process for virtual |
| 52 | memory replacement; the letters correspond to options to the |
| 53 | .IR vadvise (2) |
| 54 | call; currently the possibilities are A standing for VA_ANOM, |
| 55 | S for VA_SEQL and blank for VA_NORM; an A typically represents a |
| 56 | .IR lisp (1) |
| 57 | in garbage collection, S is typical of large image processing programs |
| 58 | which are using virtual memory to sequentially address voluminous data. |
| 59 | .PP |
| 60 | Here are the options: |
| 61 | .TP 5 |
| 62 | .B a |
| 63 | asks for information about all processes with terminals (ordinarily |
| 64 | only one's own processes are displayed). |
| 65 | .TP 5 |
| 66 | .B c |
| 67 | prints the command name, as stored internally in the system for purposes |
| 68 | of accounting, rather than the command arguments, which are kept |
| 69 | in the process' address space. This is more reliable, if less informative, |
| 70 | since the process is free to destroy the latter information. |
| 71 | .TP 5 |
| 72 | .B e |
| 73 | Asks for the environment to be printed as well as the arguments to the command. |
| 74 | .TP 5 |
| 75 | .B g |
| 76 | Asks for all processes. |
| 77 | Without this option, |
| 78 | .I ps |
| 79 | only prints ``interesting'' processes. |
| 80 | Processes are deemed to be uninteresting if they are process group leaders. |
| 81 | This normally eliminates top-level command interpreters and processes |
| 82 | waiting for users to login on free terminals. |
| 83 | .TP 5 |
| 84 | .B k |
| 85 | causes the file |
| 86 | .I /vmcore |
| 87 | is used in place of |
| 88 | .IR /dev/kmem " and " /dev/mem. |
| 89 | This is used for |
| 90 | postmortem system debugging. |
| 91 | .TP 5 |
| 92 | .B l |
| 93 | asks for a long listing, with fields PPID, CP, PRI, NI, ADDR, SIZE, RSS and |
| 94 | WCHAN as described below. |
| 95 | .TP 5 |
| 96 | .B s |
| 97 | Adds the size SSIZ of the kernel stack of each process (for use by system |
| 98 | maintainers) to the basic output format. |
| 99 | .TP 5 |
| 100 | \fBt\fIx\fR |
| 101 | restricts output to processes whose controlling tty is \fIx\fR |
| 102 | (which should be specified as printed by |
| 103 | .I ps, |
| 104 | e.g. |
| 105 | .I t3 |
| 106 | for tty3, |
| 107 | .I tco |
| 108 | for console, |
| 109 | .I td0 |
| 110 | for ttyd0, |
| 111 | .I t? |
| 112 | for processes with no tty, |
| 113 | .I t |
| 114 | for processes at the current tty, |
| 115 | etc). |
| 116 | This option must be the last one given. |
| 117 | .TP 5 |
| 118 | .B u |
| 119 | A user oriented output is produced. |
| 120 | This includes fields USER, %CPU, NICE, SIZE, and RSS as described below. |
| 121 | .TP 5 |
| 122 | .B v |
| 123 | A version of the output containing virtual memory statistics is output. |
| 124 | This includes fields RE, SL, PAGEIN, SIZE, RSS, LIM, TSIZ, TRS, %CPU |
| 125 | and %MEM, described below. |
| 126 | .TP 5 |
| 127 | .B w |
| 128 | Use a wide output format (132 columns rather than 80); if repeated, |
| 129 | e.g. ww, use arbitrarily wide output. |
| 130 | This information is used to decide how much of long commands to print. |
| 131 | .TP 5 |
| 132 | .B x |
| 133 | asks even about processes with no terminal. |
| 134 | .TP |
| 135 | .B U |
| 136 | causes ps to update a private database where is keeps system |
| 137 | information. Thus ``ps U'' should be included in the /etc/rc file. |
| 138 | .TP 5 |
| 139 | .B # |
| 140 | A process number may be given, |
| 141 | (indicated here by #), |
| 142 | in which case the output |
| 143 | is restricted to that process. |
| 144 | This option must also be last. |
| 145 | .PP |
| 146 | A second argument is taken |
| 147 | to be the file containing the system's |
| 148 | namelist. Otherwise, /vmunix is used. |
| 149 | A third argument tells |
| 150 | .I ps |
| 151 | where to look for |
| 152 | .I core |
| 153 | if the |
| 154 | .B k |
| 155 | option is given, instead of /vmcore. |
| 156 | If a fourth argument is given, it |
| 157 | is taken to be the name of a swap file to use instead of |
| 158 | the default /dev/drum. |
| 159 | .PP |
| 160 | Fields which are not common to all output formats: |
| 161 | .PD 0 |
| 162 | .IP USER 10 |
| 163 | name of the owner of the process |
| 164 | .IP %CPU 10 |
| 165 | cpu utilization of the process; this is a decaying average over up to |
| 166 | a minute of previous (real) time. Since the time base over which this |
| 167 | is computed varies (since processes may be very young) it is possible |
| 168 | for the sum of all %CPU fields to exceed 100%. |
| 169 | .IP NICE 10 |
| 170 | (or NI) process scheduling increment (see |
| 171 | .IR setpriority (2)) |
| 172 | .IP SIZE 10 |
| 173 | virtual size of the process (in 1024 byte units) |
| 174 | .IP RSS 10 |
| 175 | real memory (resident set) size of the process (in 1024 byte units) |
| 176 | .IP LIM 10 |
| 177 | soft limit on memory used, specified via a call to |
| 178 | .IR setrlimit (2); |
| 179 | if no limit has been specified then shown as \fIxx\fR |
| 180 | .IP TSIZ 10 |
| 181 | size of text (shared program) image |
| 182 | .IP TRS 10 |
| 183 | size of resident (real memory) set of text |
| 184 | .IP %MEM 10 |
| 185 | percentage of real memory used by this process. |
| 186 | .IP RE 10 |
| 187 | residency time of the process (seconds in core) |
| 188 | .IP SL 10 |
| 189 | sleep time of the process (seconds blocked) |
| 190 | .IP PAGEIN 10 |
| 191 | number of disk i/o's resulting from references by the process |
| 192 | to pages not loaded in core. |
| 193 | .IP UID 10 |
| 194 | numerical user-id of process owner |
| 195 | .IP PPID 10 |
| 196 | numerical id of parent of process |
| 197 | .IP CP 10 |
| 198 | short-term cpu utilization factor (used in scheduling) |
| 199 | .IP PRI 10 |
| 200 | process priority (non-positive when in non-interruptible wait) |
| 201 | .IP ADDR 10 |
| 202 | swap address of the process |
| 203 | .IP WCHAN 10 |
| 204 | event on which process is waiting (an address in the system), with |
| 205 | the initial part of the address trimmed off e.g. 80004000 prints |
| 206 | as 4000. |
| 207 | .sp |
| 208 | .IP F 10 |
| 209 | flags associated with process as in |
| 210 | .RI < sys/proc.h >: |
| 211 | .br |
| 212 | .PP |
| 213 | .sp |
| 214 | .nf |
| 215 | .ta 6n 18n 26n |
| 216 | SLOAD 000001 in core |
| 217 | SSYS 000002 swapper or pager process |
| 218 | SLOCK 000004 process being swapped out |
| 219 | SSWAP 000008 save area flag |
| 220 | STRC 000010 process is being traced |
| 221 | SWTED 000020 another tracing flag |
| 222 | SULOCK 000040 user settable lock in core |
| 223 | SPAGE 000080 process in page wait state |
| 224 | SKEEP 000100 another flag to prevent swap out |
| 225 | SDLYU 000200 delayed unlock of pages |
| 226 | SWEXIT 000400 working on exiting |
| 227 | SPHYSIO 000800 doing physical i/o (bio.c) |
| 228 | SVFORK 001000 process resulted from vfork() |
| 229 | SVFDONE 002000 another vfork flag |
| 230 | SNOVM 004000 no vm, parent in a vfork() |
| 231 | SPAGI 008000 init data space on demand from inode |
| 232 | SANOM 010000 system detected anomalous vm behavior |
| 233 | SUANOM 020000 user warned of anomalous vm behavior |
| 234 | STIMO 040000 timing out during sleep |
| 235 | SDETACH 080000 detached inherited by init |
| 236 | SOUSIG 100000 using old signal mechanism |
| 237 | .fi |
| 238 | .PD |
| 239 | .PP |
| 240 | A process that has exited and has a parent, but has not |
| 241 | yet been waited for by the parent is marked <defunct>; a process |
| 242 | which is blocked trying to exit is marked <exiting>; |
| 243 | .I Ps |
| 244 | makes an educated guess as to the file name |
| 245 | and arguments given when the process was created |
| 246 | by examining memory or the swap area. |
| 247 | The method is inherently somewhat unreliable and in any event |
| 248 | a process is entitled to destroy this information, |
| 249 | so the names cannot be counted on too much. |
| 250 | .SH FILES |
| 251 | .ta \w'/etc/psdatabase 'u |
| 252 | /vmunix system namelist |
| 253 | .br |
| 254 | /dev/kmem kernel memory |
| 255 | .br |
| 256 | /dev/drum swap device |
| 257 | .br |
| 258 | /vmcore core file |
| 259 | .br |
| 260 | /dev searched to find swap device and tty names |
| 261 | .br |
| 262 | /etc/psdatabase system namelist and device information |
| 263 | .SH "SEE ALSO" |
| 264 | kill(1), w(1) |
| 265 | .SH BUGS |
| 266 | Things can change while |
| 267 | .I ps |
| 268 | is running; the picture it gives is only a close |
| 269 | approximation to reality. |