1.\" Copyright (c) 1980, 1990, 1991, 1993, 1994 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)ps.1 8.3 (Berkeley) 4/18/94 33.\" $FreeBSD$ 34.\" 35.Dd April 18, 1994 36.Dt PS 1 37.Os 38.Sh NAME 39.Nm ps 40.Nd process status 41.Sh SYNOPSIS 42.Nm 43.Op Fl aCcefhjlmrSTuvwxZ 44.Op Fl M Ar core 45.Op Fl N Ar system 46.Op Fl O Ar fmt 47.Op Fl o Ar fmt 48.Op Fl p Ar pid 49.Op Fl t Ar tty 50.Oo Fl U Ar username Ns Xo 51.Op , Ns Ar username Ns No ... 52.Xc 53.Oc 54.Nm 55.Op Fl L 56.Sh DESCRIPTION 57The 58.Nm 59utility 60displays a header line followed by lines containing information about your 61processes that have controlling terminals. 62This information is sorted by controlling terminal, then by process 63.Tn ID . 64.Pp 65The information displayed is selected based on a set of keywords (see the 66.Fl L 67.Fl O 68and 69.Fl o 70options). 71The default output format includes, for each process, the process' 72.Tn ID , 73controlling terminal, cpu time (including both user and system time), 74state, and associated command. 75.Pp 76The process filesystem (see 77.Xr procfs 5 ) 78should be mounted when 79.Nm 80is executed, otherwise not all information will be available. 81.Pp 82The options are as follows: 83.Bl -tag -width indent 84.It Fl a 85Display information about other users' processes as well as your own. 86This can be disabled by setting the 87.Va security.bsd.see_other_uids 88sysctl to zero. 89.It Fl c 90Change the ``command'' column output to just contain the executable name, 91rather than the full command line. 92.It Fl C 93Change the way the cpu percentage is calculated by using a ``raw'' 94cpu calculation that ignores ``resident'' time (this normally has 95no effect). 96.It Fl e 97Display the environment as well. 98.It Fl f 99Show commandline and environment information about swapped out processes. 100This option is honored only if the uid of the user is 0. 101.It Fl h 102Repeat the information header as often as necessary to guarantee one 103header per page of information. 104.It Fl j 105Print information associated with the following keywords: 106user, pid, ppid, pgid, jobc, state, tt, time and command. 107.It Fl L 108List the set of available keywords. 109.It Fl l 110Display information associated with the following keywords: 111uid, pid, ppid, cpu, pri, nice, vsz, rss, mwchan, state, tt, time 112and command. 113.It Fl M 114Extract values associated with the name list from the specified core 115instead of the default 116.Pa /dev/kmem . 117.It Fl m 118Sort by memory usage, instead of by process 119.Tn ID . 120.It Fl N 121Extract the name list from the specified system instead of the default 122.Pa /boot/kernel/kernel . 123.It Fl O 124Add the information associated with the space or comma separated list 125of keywords specified, after the process 126.Tn ID , 127in the default information 128display. 129Keywords may be appended with an equals (``='') sign and a string. 130This causes the printed header to use the specified string instead of 131the standard header. 132.It Fl o 133Display information associated with the space or comma separated 134list of keywords specified. 135Multiple keywords may also be given in the form of more than one 136.Fl o 137option. 138Keywords may be appended with an equals (``='') sign and a string. 139This causes the printed header to use the specified string instead of 140the standard header. 141.It Fl p 142Display information associated with the specified process 143.Tn ID . 144.It Fl r 145Sort by current cpu usage, instead of by process 146.Tn ID . 147.It Fl S 148Change the way the process time is calculated by summing all exited 149children to their parent process. 150.It Fl T 151Display information about processes attached to the device associated 152with the standard input. 153.It Fl t 154Display information about processes attached to the specified terminal 155device. 156.It Fl U 157Display the processes belonging to the specified 158.Ar username Ns (s) . 159.It Fl u 160Display information associated with the following keywords: 161user, pid, %cpu, %mem, vsz, rss, tt, state, start, time and command. 162The 163.Fl u 164option implies the 165.Fl r 166option. 167.It Fl v 168Display information associated with the following keywords: 169pid, state, time, sl, re, pagein, vsz, rss, lim, tsiz, 170%cpu, %mem and command. 171The 172.Fl v 173option implies the 174.Fl m 175option. 176.It Fl w 177Use 132 columns to display information, instead of the default which 178is your window size. 179If the 180.Fl w 181option is specified more than once, 182.Nm 183will use as many columns as necessary without regard for your window size. 184.It Fl x 185Display information about processes without controlling terminals. 186.It Fl Z 187Add lvl to the list of keywords for which 188.Nm 189will display information. 190.El 191.Pp 192A complete list of the available keywords are listed below. 193Some of these keywords are further specified as follows: 194.Bl -tag -width mtxname 195.It %cpu 196The cpu utilization of the process; this is a decaying average over up to 197a minute of previous (real) time. 198Since the time base over which this is computed varies (since processes may 199be very young) it is possible for the sum of all 200.Tn \&%CPU 201fields to exceed 100%. 202.It %mem 203The percentage of real memory used by this process. 204.It flags 205The flags associated with the process as in 206the include file 207.Aq Pa sys/proc.h : 208.Bl -column P_NOCLDSTOP P_NOCLDSTOP 209.It Dv "P_ADVLOCK" Ta No "0x00001 Process may hold a POSIX advisory lock" 210.It Dv "P_CONTROLT" Ta No "0x00002 Has a controlling terminal" 211.It Dv "P_INMEM" Ta No "0x00004 Loaded into memory" 212.It Dv "P_NOCLDSTOP" Ta No "0x00008 No SIGCHLD when children stop" 213.It Dv "P_PPWAIT" Ta No "0x00010 Parent is waiting for child to exec/exit" 214.It Dv "P_PROFIL" Ta No "0x00020 Has started profiling" 215.It Dv "P_SELECT" Ta No "0x00040 Selecting; wakeup/waiting danger" 216.It Dv "P_SINTR" Ta No "0x00080 Sleep is interruptible" 217.It Dv "P_SUGID" Ta No "0x00100 Had set id privileges since last exec" 218.It Dv "P_SYSTEM" Ta No "0x00200 System proc: no sigs, stats or swapping" 219.It Dv "P_TIMEOUT" Ta No "0x00400 Timing out during sleep" 220.It Dv "P_TRACED" Ta No "0x00800 Debugged process being traced" 221.It Dv "P_WAITED" Ta No "0x01000 Debugging process has waited for child" 222.It Dv "P_WEXIT" Ta No "0x02000 Working on exiting" 223.It Dv "P_EXEC" Ta No "0x04000 Process called exec" 224.It Dv "P_OWEUPC" Ta No "0x20000 Owe process an addupc() call at next ast" 225.It Dv "P_SWAPPING" Ta No "0x40000 Process is being swapped" 226.El 227.It lim 228The soft limit on memory used, specified via a call to 229.Xr setrlimit 2 . 230.It lstart 231The exact time the command started, using the ``%c'' format described in 232.Xr strftime 3 . 233.It lvl 234The LOMAC level of the process. 235.It mtxname 236The name of the 237.Xr mutex 9 238that the process is currently blocked on. 239If the name is invalid or unknown, then 240.Dq ???\& 241is displayed. 242.It mwchan 243The event name if the process is blocked normally, or the mutex name if 244the process is blocked on a mutex. See the wchan and mtxname keywords 245for details. 246.It nice 247The process scheduling increment (see 248.Xr setpriority 2 ) . 249.It rss 250the real memory (resident set) size of the process (in 1024 byte units). 251.It start 252The time the command started. 253If the command started less than 24 hours ago, the start time is 254displayed using the ``%l:ps.1p'' format described in 255.Xr strftime 3 . 256If the command started less than 7 days ago, the start time is 257displayed using the ``%a6.15p'' format. 258Otherwise, the start time is displayed using the ``%e%b%y'' format. 259.It state 260The state is given by a sequence of letters, for example, 261.Dq Tn RWNA . 262The first letter indicates the run state of the process: 263.Pp 264.Bl -tag -width indent -compact 265.It D 266Marks a process in disk (or other short term, uninterruptible) wait. 267.It I 268Marks a process that is idle (sleeping for longer than about 20 seconds). 269.It J 270Marks a process which is in 271.Xr jail 2 . 272The hostname of the prison can be found in 273.Ql Li /proc/<pid>/status . 274.It M 275Marks a process that is waiting to acquire a mutex. 276.It R 277Marks a runnable process. 278.It S 279Marks a process that is sleeping for less than about 20 seconds. 280.It T 281Marks a stopped process. 282.It Z 283Marks a dead process (a ``zombie''). 284.El 285.Pp 286Additional characters after these, if any, indicate additional state 287information: 288.Pp 289.Bl -tag -width indent -compact 290.It + 291The process is in the foreground process group of its control terminal. 292.It < 293The process has raised 294.Tn CPU 295scheduling priority. 296.It > 297The process has specified a soft limit on memory requirements and is 298currently exceeding that limit; such a process is (necessarily) not 299swapped. 300.It A 301the process has asked for random page replacement 302.Pf ( Dv MADV_RANDOM , 303from 304.Xr madvise 2 , 305for example, 306.Xr lisp 1 307in a garbage collect). 308.It E 309The process is trying to exit. 310.It L 311The process has pages locked in core (for example, for raw 312.Tn I/O ) . 313.It N 314The process has reduced 315.Tn CPU 316scheduling priority (see 317.Xr setpriority 2 ) . 318.It S 319The process has asked for 320.Tn FIFO 321page replacement 322.Pf ( Dv MADV_SEQUENTIAL , 323from 324.Xr madvise 2 , 325for example, a large image processing program using virtual memory to 326sequentially address voluminous data). 327.It s 328The process is a session leader. 329.It V 330The process is suspended during a 331.Xr vfork . 332.It W 333The process is swapped out. 334.It X 335The process is being traced or debugged. 336.El 337.It tt 338An abbreviation for the pathname of the controlling terminal, if any. 339The abbreviation consists of the three letters following 340.Pa /dev/tty , 341or, for the console, ``con''. 342This is followed by a ``-'' if the process can no longer reach that 343controlling terminal (i.e., it has been revoked). 344.It wchan 345The event (an address in the system) on which a process waits. 346When printed numerically, the initial part of the address is 347trimmed off and the result is printed in hex, for example, 0x80324000 prints 348as 324000. 349.El 350.Pp 351When printing using the command keyword, a process that has exited and 352has a parent that has not yet waited for the process (in other words, a zombie) 353is listed as ``<defunct>'', and a process which is blocked while trying 354to exit is listed as ``<exiting>''. 355The 356.Nm 357utility 358makes an educated guess as to the file name and arguments given when the 359process was created by examining memory or the swap area. 360The method is inherently somewhat unreliable and in any event a process 361is entitled to destroy this information, so the names cannot be depended 362on too much. 363The ucomm (accounting) keyword can, however, be depended on. 364.Sh KEYWORDS 365The following is a complete list of the available keywords and their 366meanings. 367Several of them have aliases (keywords which are synonyms). 368.Pp 369.Bl -tag -width sigignore -compact 370.It %cpu 371percentage cpu usage (alias pcpu) 372.It %mem 373percentage memory usage (alias pmem) 374.It acflag 375accounting flag (alias acflg) 376.It args 377command and arguments 378.It comm 379command 380.It command 381command and arguments 382.It cpu 383short-term cpu usage factor (for scheduling) 384.It etime 385elapsed running time 386.It flags 387the process flags, in hexadecimal (alias f) 388.It inblk 389total blocks read (alias inblock) 390.It jobc 391job control count 392.It ktrace 393tracing flags 394.It lim 395memoryuse limit 396.It logname 397login name of user who started the process 398.It lstart 399time started 400.It lvl 401LOMAC level 402.It majflt 403total page faults 404.It minflt 405total page reclaims 406.It msgrcv 407total messages received (reads from pipes/sockets) 408.It msgsnd 409total messages sent (writes on pipes/sockets) 410.It mtxname 411.Xr mutex 9 412currently blocked on (as a symbolic name) 413.It mwchan 414wait channel or mutex currently blocked on 415.It nice 416nice value (alias ni) 417.It nivcsw 418total involuntary context switches 419.It nsigs 420total signals taken (alias nsignals) 421.It nswap 422total swaps in/out 423.It nvcsw 424total voluntary context switches 425.It nwchan 426wait channel (as an address) 427.It oublk 428total blocks written (alias oublock) 429.It paddr 430swap address 431.It pagein 432pageins (same as majflt) 433.It pgid 434process group number 435.It pid 436process 437.Tn ID 438.It poip 439pageouts in progress 440.It ppid 441parent process 442.Tn ID 443.It pri 444scheduling priority 445.It re 446core residency time (in seconds; 127 = infinity) 447.It rgid 448real group 449.Tn ID 450.It rgroup 451group name (from rgid) 452.It rlink 453reverse link on run queue, or 0 454.It rss 455resident set size 456.It rtprio 457realtime priority (101 = not a realtime process) 458.It ruid 459real user 460.Tn ID 461.It ruser 462user name (from ruid) 463.It sid 464session 465.Tn ID 466.It sig 467pending signals (alias pending) 468.It sigcatch 469caught signals (alias caught) 470.It sigignore 471ignored signals (alias ignored) 472.It sigmask 473blocked signals (alias blocked) 474.It sl 475sleep time (in seconds; 127 = infinity) 476.It start 477time started 478.It state 479symbolic process state (alias stat) 480.It svgid 481saved gid from a setgid executable 482.It svuid 483saved uid from a setuid executable 484.It tdev 485control terminal device number 486.It time 487accumulated cpu time, user + system (alias cputime) 488.It tpgid 489control terminal process group 490.Tn ID 491.\".It trss 492.\"text resident set size (in Kbytes) 493.It tsid 494control terminal session 495.Tn ID 496.It tsiz 497text size (in Kbytes) 498.It tt 499control terminal name (two letter abbreviation) 500.It tty 501full name of control terminal 502.It uprocp 503process pointer 504.It ucomm 505name to be used for accounting 506.It uid 507effective user 508.Tn ID 509.It upr 510scheduling priority on return from system call (alias usrpri) 511.It user 512user name (from uid) 513.It vsz 514virtual size in Kbytes (alias vsize) 515.It wchan 516wait channel (as a symbolic name) 517.It xstat 518exit or stop status (valid only for stopped or zombie process) 519.El 520.Sh ENVIRONMENT 521The following environment variables affect the execution of 522.Nm : 523.Bl -tag -width ".Ev COLUMNS" 524.It Ev COLUMNS 525If set, specifies the user's preferred output width in column positions. 526By default, 527.Nm 528attempts to automatically determine the terminal width. 529.El 530.Sh FILES 531.Bl -tag -width /var/db/kvm_kernel.db -compact 532.It Pa /dev/kmem 533default kernel memory 534.It Pa /dev/lomac 535interface used to query the 536.Xr lomac 4 537KLD 538.It Pa /var/run/dev.db 539/dev name database 540.It Pa /var/db/kvm_kernel.db 541system namelist database 542.It Pa /boot/kernel/kernel 543default system namelist 544.It Pa /proc 545the mount point of 546.Xr procfs 5 547.El 548.Sh SEE ALSO 549.Xr kill 1 , 550.Xr w 1 , 551.Xr kvm 3 , 552.Xr strftime 3 , 553.Xr lomac 4 , 554.Xr procfs 5 , 555.Xr pstat 8 , 556.Xr sysctl 8 , 557.Xr mutex 9 558.Sh HISTORY 559The 560.Nm 561command appeared in 562.At v4 . 563.Sh BUGS 564Since 565.Nm 566cannot run faster than the system and is run as any other scheduled 567process, the information it displays can never be exact. 568