2 .\" Copyright (c) 1980, 1990, 1991, 1993, 1994
3 .\" The Regents of the University of California. All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
13 .\" 3. Neither the name of the University nor the names of its contributors
14 .\" may be used to endorse or promote products derived from this software
15 .\" without specific prior written permission.
17 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 .Op Fl aCcdefHhjlmrSTuvwXxZ
39 .Op Fl O Ar fmt | Fl o Ar fmt
40 .Op Fl D Ar up | down | both
41 .Op Fl G Ar gid Ns Op , Ns Ar gid Ns Ar ...
42 .Op Fl J Ar jid Ns Op , Ns Ar jid Ns Ar ...
45 .Op Fl p Ar pid Ns Op , Ns Ar pid Ns Ar ...
46 .Op Fl t Ar tty Ns Op , Ns Ar tty Ns Ar ...
47 .Op Fl U Ar user Ns Op , Ns Ar user Ns Ar ...
55 displays a header line, followed by lines containing information about
57 processes that have controlling terminals.
62 will also display processes that do not have controlling terminals.
64 A different set of processes can be selected for display by using any
66 .Fl a , D , G , J , p , T , t ,
70 If more than one of these options are given, then
72 will select all processes which are matched by at least one of the
75 For the processes which have been selected for display,
77 will usually display one line per process.
80 option may result in multiple output lines (one line per thread) for
82 By default all of these output lines are sorted first by controlling
83 terminal, then by process ID.
88 options will change the sort order.
89 If more than one sorting option was given, then the selected processes
90 will be sorted by the last sorting option which was specified.
92 For the processes which have been selected for display, the information
93 to display is selected based on a set of keywords (see the
98 The default output format includes, for each process, the process' ID,
99 controlling terminal, state, CPU time (including both user and system time)
100 and associated command.
104 process is associated with a terminal, the default output width is that of the
105 terminal; otherwise the output width is unlimited.
110 The options are as follows:
111 .Bl -tag -width indent
115 in a selection of different human and machine readable formats.
118 for details on command line arguments.
120 Display information about other users' processes as well as your own.
122 .Va security.bsd.see_other_uids
123 sysctl is set to zero, this option is honored only if the UID of the user is 0.
127 column output to just contain the executable name,
128 rather than the full command line.
130 Change the way the CPU percentage is calculated by using a
132 CPU calculation that ignores
134 time (this normally has
137 Arrange processes into descendancy order and prefix each command with
138 indentation text showing sibling and parent/child relationships as a tree.
143 options are also used, they control how sibling processes are sorted
144 relative to each other.
145 Note that this option has no effect if the
147 column is not the last column displayed.
149 Expand the list of selected processes based on the process tree.
151 will add the ancestor processes,
153 will add the descendant processes, and
155 will add both the ancestor and the descendant processes.
159 but works well with it.
161 Display the environment as well.
163 Show command-line and environment information about swapped out processes.
164 This option is honored only if the UID of the user is 0.
166 Display information about processes which are running with the specified
169 Show all of the threads associated with each process.
171 Repeat the information header as often as necessary to guarantee one
172 header per page of information.
174 Print information associated with the following keywords:
175 .Cm user , pid , ppid , pgid , sid , jobc , state , tt , time ,
179 Display information about processes which match the specified jail IDs.
180 This may be either the
188 to display only host processes.
193 List the set of keywords available for the
199 Display information associated with the following keywords:
200 .Cm uid , pid , ppid , cpu , pri , nice , vsz , rss , mwchan , state ,
205 Extract values associated with the name list from the specified core
206 instead of the currently running system.
208 Sort by memory usage, instead of the combination of controlling
209 terminal and process ID.
211 Extract the name list from the specified system instead of the default,
212 which is the kernel image the system has booted from.
214 Add the information associated with the space or comma separated list
215 of keywords specified, after the process ID,
216 in the default information
218 Keywords may be appended with an equals
221 This causes the printed header to use the specified string instead of
224 Display information associated with the space or comma separated
225 list of keywords specified.
226 The last keyword in the list may be appended with an equals
228 sign and a string that spans the rest of the argument, and can contain
229 space and comma characters.
230 This causes the printed header to use the specified string instead of
232 Multiple keywords may also be given in the form of more than one
235 So the header texts for multiple keywords can be changed.
236 If all keywords have empty header texts, no header line is written.
238 Display information about processes which match the specified process IDs.
240 Sort by current CPU usage, instead of the combination of controlling
241 terminal and process ID.
243 Change the way the process times, namely cputime, systime, and usertime,
244 are calculated by summing all exited children to their parent process.
246 Display information about processes attached to the device associated
247 with the standard input.
249 Display information about processes attached to the specified terminal
251 Full pathnames, as well as abbreviations (see explanation of the
253 keyword) can be specified.
255 Display the processes belonging to the specified usernames.
257 Display information associated with the following keywords:
258 .Cm user , pid , %cpu , %mem , vsz , rss , tt , state , start , time ,
267 Display information associated with the following keywords:
268 .Cm pid , state , time , sl , re , pagein , vsz , rss , lim , tsiz ,
278 Use at least 132 columns to display information, instead of the default which
279 is the window size if
281 is associated with a terminal.
284 option is specified more than once,
286 will use as many columns as necessary without regard for the window size.
287 Note that this option has no effect if the
289 column is not the last column displayed.
291 When displaying processes matched by other options, skip any processes
292 which do not have a controlling terminal.
293 This is the default behaviour.
295 When displaying processes matched by other options, include processes
296 which do not have a controlling terminal.
297 This is the opposite of the
304 are specified in the same command, then
306 will use the one which was specified last.
310 label to the list of keywords for which
312 will display information.
315 A complete list of the available keywords are listed below.
316 Some of these keywords are further specified as follows:
317 .Bl -tag -width lockname
319 The CPU utilization of the process; this is a decaying average over up to
320 a minute of previous (real) time.
321 Since the time base over which this is computed varies (since processes may
322 be very young) it is possible for the sum of all
324 fields to exceed 100%.
326 The percentage of real memory used by this process.
328 Login class associated with the process.
330 The flags associated with the process as in
333 .Bl -column P_SINGLE_BOUNDARY 0x40000000
334 .It Dv "P_ADVLOCK" Ta No "0x00001" Ta "Process may hold a POSIX advisory lock"
335 .It Dv "P_CONTROLT" Ta No "0x00002" Ta "Has a controlling terminal"
336 .It Dv "P_KPROC" Ta No "0x00004" Ta "Kernel process"
337 .It Dv "P_PPWAIT" Ta No "0x00010" Ta "Parent is waiting for child to exec/exit"
338 .It Dv "P_PROFIL" Ta No "0x00020" Ta "Has started profiling"
339 .It Dv "P_STOPPROF" Ta No "0x00040" Ta "Has thread in requesting to stop prof"
340 .It Dv "P_HADTHREADS" Ta No "0x00080" Ta "Has had threads (no cleanup shortcuts)"
341 .It Dv "P_SUGID" Ta No "0x00100" Ta "Had set id privileges since last exec"
342 .It Dv "P_SYSTEM" Ta No "0x00200" Ta "System proc: no sigs, stats or swapping"
343 .It Dv "P_SINGLE_EXIT" Ta No "0x00400" Ta "Threads suspending should exit, not wait"
344 .It Dv "P_TRACED" Ta No "0x00800" Ta "Debugged process being traced"
345 .It Dv "P_WAITED" Ta No "0x01000" Ta "Someone is waiting for us"
346 .It Dv "P_WEXIT" Ta No "0x02000" Ta "Working on exiting"
347 .It Dv "P_EXEC" Ta No "0x04000" Ta "Process called exec"
348 .It Dv "P_WKILLED" Ta No "0x08000" Ta "Killed, shall go to kernel/user boundary ASAP"
349 .It Dv "P_CONTINUED" Ta No "0x10000" Ta "Proc has continued from a stopped state"
350 .It Dv "P_STOPPED_SIG" Ta No "0x20000" Ta "Stopped due to SIGSTOP/SIGTSTP"
351 .It Dv "P_STOPPED_TRACE" Ta No "0x40000" Ta "Stopped because of tracing"
352 .It Dv "P_STOPPED_SINGLE" Ta No "0x80000" Ta "Only one thread can continue"
353 .It Dv "P_PROTECTED" Ta No "0x100000" Ta "Do not kill on memory overcommit"
354 .It Dv "P_SIGEVENT" Ta No "0x200000" Ta "Process pending signals changed"
355 .It Dv "P_SINGLE_BOUNDARY" Ta No "0x400000" Ta "Threads should suspend at user boundary"
356 .It Dv "P_HWPMC" Ta No "0x800000" Ta "Process is using HWPMCs"
357 .It Dv "P_JAILED" Ta No "0x1000000" Ta "Process is in jail"
358 .It Dv "P_TOTAL_STOP" Ta No "0x2000000" Ta "Stopped for system suspend"
359 .It Dv "P_INEXEC" Ta No "0x4000000" Ta Process is in Xr execve 2
360 .It Dv "P_STATCHILD" Ta No "0x8000000" Ta "Child process stopped or exited"
361 .It Dv "P_INMEM" Ta No "0x10000000" Ta "Loaded into memory"
362 .It Dv "P_SWAPPINGOUT" Ta No "0x20000000" Ta "Process is being swapped out"
363 .It Dv "P_SWAPPINGIN" Ta No "0x40000000" Ta "Process is being swapped in"
364 .It Dv "P_PPTRACE" Ta No "0x80000000" Ta "Vforked child issued ptrace(PT_TRACEME)"
369 associated with the process as in
372 .Bl -column P2_INHERIT_PROTECTED 0x00000001
373 .It Dv "P2_INHERIT_PROTECTED" Ta No "0x00000001" Ta "New children get P_PROTECTED"
374 .It Dv "P2_NOTRACE" Ta No "0x00000002" Ta "No" Xr ptrace 2 attach or coredumps
375 .It Dv "P2_NOTRACE_EXEC" Ta No "0x00000004" Ta Keep P2_NOPTRACE on Xr execve 2
376 .It Dv "P2_AST_SU" Ta No "0x00000008" Ta "Handles SU ast for kthreads"
377 .It Dv "P2_PTRACE_FSTP" Ta No "0x00000010" Ta "SIGSTOP from PT_ATTACH not yet handled"
380 The MAC label of the process.
382 The soft limit on memory used, specified via a call to
385 The exact time the command started, using the
390 The name of the lock that the process is currently blocked on.
391 If the name is invalid or unknown, then
395 The login name associated with the session the process is in (see
398 The event name if the process is blocked normally, or the lock name if
399 the process is blocked on a lock.
400 See the wchan and lockname keywords
403 The process scheduling increment (see
404 .Xr setpriority 2 ) .
406 the real memory (resident set) size of the process (in 1024 byte units).
408 The time the command started.
409 If the command started less than 24 hours ago, the start time is
414 If the command started less than 7 days ago, the start time is
418 Otherwise, the start time is displayed using the
422 The state is given by a sequence of characters, for example,
424 The first character indicates the run state of the process:
426 .Bl -tag -width indent -compact
428 Marks a process in disk (or other short term, uninterruptible) wait.
430 Marks a process that is idle (sleeping for longer than about 20 seconds).
432 Marks a process that is waiting to acquire a lock.
434 Marks a runnable process.
436 Marks a process that is sleeping for less than about 20 seconds.
438 Marks a stopped process.
440 Marks an idle interrupt thread.
442 Marks a dead process (a
446 Additional characters after these, if any, indicate additional state
449 .Bl -tag -width indent -compact
451 The process is in the foreground process group of its control terminal.
453 The process has raised CPU scheduling priority.
459 The process is trying to exit.
461 Marks a process which is in
463 The hostname of the prison can be found in
464 .Pa /proc/ Ns Ao Ar pid Ac Ns Pa /status .
466 The process has pages locked in core (for example, for raw I/O).
468 The process has reduced CPU scheduling priority (see
469 .Xr setpriority 2 ) .
471 The process is a session leader.
473 The process' parent is suspended during a
475 waiting for the process to exec or exit.
477 The process is swapped out.
479 The process is being traced or debugged.
482 An abbreviation for the pathname of the controlling terminal, if any.
483 The abbreviation consists of the three letters following
485 or, for pseudo-terminals, the corresponding entry in
487 This is followed by a
489 if the process can no longer reach that
490 controlling terminal (i.e., it has been revoked).
493 without a preceding two letter abbreviation or pseudo-terminal device number
494 indicates a process which never had a controlling terminal.
495 The full pathname of the controlling terminal is available via the
499 The event (an address in the system) on which a process waits.
500 When printed numerically, the initial part of the address is
501 trimmed off and the result is printed in hex, for example, 0x80324000 prints
505 When printing using the command keyword, a process that has exited and
506 has a parent that has not yet waited for the process (in other words, a zombie)
509 and a process which is blocked while trying
512 If the arguments cannot be located (usually because it has not been set, as is
513 the case of system processes and/or kernel threads) the command name is printed
514 within square brackets.
517 utility first tries to obtain the arguments cached by the kernel (if they were
518 shorter than the value of the
519 .Va kern.ps_arg_cache_limit
521 The process can change the arguments shown with
525 makes an educated guess as to the file name and arguments given when the
526 process was created by examining memory or the swap area.
527 The method is inherently somewhat unreliable and in any event a process
528 is entitled to destroy this information.
529 The ucomm (accounting) keyword can, however, be depended on.
530 If the arguments are unavailable or do not agree with the ucomm keyword,
531 the value for the ucomm keyword is appended to the arguments in parentheses.
533 The following is a complete list of the available keywords and their
535 Several of them have aliases (keywords which are synonyms).
537 .Bl -tag -width ".Cm sigignore" -compact
539 percentage CPU usage (alias
542 percentage memory usage (alias
545 accounting flag (alias
548 command and arguments
554 command and arguments
556 number of copy-on-write faults
558 The processor number on which the process is executing (visible only on SMP
561 data size (in Kbytes)
563 system-call emulation environment (ABI)
565 elapsed running time, format
572 elapsed running time, in decimal integer seconds
574 default FIB number, see
577 the process flags, in hexadecimal (alias
580 the additional set of process flags, in hexadecimal (alias
583 effective group ID (alias
586 group name (from egid) (alias
589 total blocks read (alias
604 lock currently blocked on (as a symbolic name)
606 login name of user who started the session
610 thread (light-weight process) ID (alias
617 total messages received (reads from pipes/sockets)
619 total messages sent (writes on pipes/sockets)
621 wait channel or lock currently blocked on
626 total involuntary context switches
628 number of threads (light-weight processes) tied to a process
630 total signals taken (alias
635 total voluntary context switches
637 wait channel (as an address)
639 total blocks written (alias
644 pageins (same as majflt)
654 core residency time (in seconds; 127 = infinity)
658 group name (from rgid)
662 realtime priority (see
667 user name (from ruid)
671 pending signals (alias
674 caught signals (alias
677 ignored signals (alias
680 blocked signals (alias
683 sleep time (in seconds; 127 = infinity)
685 stack size (in Kbytes)
689 symbolic process state (alias
692 saved gid from a setgid executable
694 saved UID from a setuid executable
696 accumulated system CPU time
702 control terminal device number
704 accumulated CPU time, user + system (alias
707 control terminal process group ID
711 .\"text resident set size (in Kbytes)
713 control terminal session ID
715 text size (in Kbytes)
717 control terminal name (two letter abbreviation)
719 full name of control terminal
721 name to be used for accounting
723 effective user ID (alias
726 scheduling priority on return from system call (alias
733 accumulated user CPU time
737 virtual size in Kbytes (alias
740 wait channel (as a symbolic name)
742 exit or stop status (valid only for stopped or zombie process)
747 column displays bitmask of signals pending in the process queue when
749 option is not specified, otherwise the per-thread queue of pending signals
752 The following environment variables affect the execution of
754 .Bl -tag -width ".Ev COLUMNS"
756 If set, specifies the user's preferred output width in column positions.
759 attempts to automatically determine the terminal width.
762 .Bl -tag -width ".Pa /boot/kernel/kernel" -compact
763 .It Pa /boot/kernel/kernel
764 default system namelist
769 Display information on all system processes:
781 .Xr xo_parse_args 3 ,
788 For historical reasons, the
792 supports a different set of options from what is described by
794 and what is supported on
802 in section 8 of the manual.
806 cannot run faster than the system and is run as any other scheduled
807 process, the information it displays can never be exact.
811 utility does not correctly display argument lists containing multibyte