9bc855a931
elsewhere).
660 lines
18 KiB
Groff
660 lines
18 KiB
Groff
.\" $NetBSD: ps.1,v 1.68 2004/04/23 02:58:27 simonb Exp $
|
|
.\"
|
|
.\" Copyright (c) 1980, 1990, 1991, 1993, 1994
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94
|
|
.\"
|
|
.Dd March 27, 2004
|
|
.Dt PS 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm ps
|
|
.Nd process status
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl acCehjlmrsSTuvwx
|
|
.Bk -words
|
|
.Op Fl k Ar key
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl M Ar core
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl N Ar system
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl O Ar fmt
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl o Ar fmt
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl p Ar pid
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl t Ar tty
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl U Ar username
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl W Ar swap
|
|
.Ek
|
|
.Nm
|
|
.Op Fl L
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
displays a header line followed by lines containing information about your
|
|
processes that have controlling terminals.
|
|
The default sort order of controlling terminal and
|
|
(among processes with the same controlling terminal) process
|
|
.Tn ID
|
|
may be changed using the
|
|
.Fl k
|
|
option.
|
|
.Pp
|
|
The information displayed is selected based on a set of keywords (see the
|
|
.Fl L
|
|
.Fl O
|
|
and
|
|
.Fl o
|
|
options).
|
|
The default output format includes, for each process, the process'
|
|
.Tn ID ,
|
|
controlling terminal, CPU time (including both user and system time),
|
|
state, and associated command.
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width indent
|
|
.It Fl a
|
|
Display information about other users' processes as well as your own.
|
|
.It Fl c
|
|
Do not display full command with arguments, but only the
|
|
executable name.
|
|
This may be somewhat confusing; for example, all
|
|
.Xr sh 1
|
|
scripts will show as
|
|
.Dq sh .
|
|
.It Fl C
|
|
Change the way the CPU percentage is calculated by using a
|
|
.Dq raw
|
|
CPU calculation that ignores
|
|
.Dq resident
|
|
time (this normally has no effect).
|
|
.It Fl e
|
|
Display the environment as well.
|
|
The environment for other
|
|
users' processes can only be displayed by the super-user.
|
|
.It Fl h
|
|
Repeat the information header as often as necessary to guarantee one
|
|
header per page of information.
|
|
.It Fl j
|
|
Print information associated with the following keywords:
|
|
user, pid, ppid, pgid, sess, jobc, state, tt, time, and command.
|
|
.It Fl k
|
|
Sort the output using the space or comma separated list of keywords.
|
|
.It Fl L
|
|
List the set of available keywords.
|
|
.It Fl l
|
|
Display information associated with the following keywords:
|
|
uid, pid, ppid, cpu, pri, nice, vsz, rss, wchan, state, tt, time,
|
|
and command.
|
|
.It Fl M
|
|
Extract values from the specified core file instead of the running system.
|
|
.It Fl m
|
|
Sort by memory usage, instead of by process
|
|
.Tn ID ,
|
|
equivalent to
|
|
.Fl k
|
|
.Ar vsz .
|
|
.It Fl N
|
|
Extract the name list from the specified system instead of the default
|
|
.Dq Pa /netbsd .
|
|
Ignored unless
|
|
.Fl M
|
|
is specified.
|
|
.It Fl O
|
|
Add the information associated with the space or comma separated list
|
|
of keywords specified, after the process
|
|
.Tn ID ,
|
|
in the default information
|
|
display.
|
|
Keywords may be appended with an equals
|
|
.Pq Dq =
|
|
sign and a string.
|
|
This causes the printed header to use the specified string instead of
|
|
the standard header.
|
|
.It Fl o
|
|
Display information associated with the space or comma separated list
|
|
of keywords specified.
|
|
Keywords may be appended with an equals
|
|
.Pq Dq =
|
|
sign and a string.
|
|
This causes the printed header to use the specified string instead of
|
|
the standard header.
|
|
.It Fl p
|
|
Display information associated with the specified process
|
|
.Tn ID .
|
|
.It Fl r
|
|
Sort by current CPU usage, instead of by process
|
|
.Tn ID ,
|
|
equivalent to
|
|
.Fl k
|
|
.Ar %cpu .
|
|
.It Fl S
|
|
Change the way the process time is calculated by summing all exited
|
|
children to their parent process.
|
|
.It Fl s
|
|
Display one line for each LWP, rather than one line for each process,
|
|
and display information associated with the following keywords:
|
|
uid, pid, ppid, cpu, lid, nlwp, pri, nice, vsz, rss, wchan, lstate, tt, time
|
|
and command.
|
|
.It Fl T
|
|
Display information about processes attached to the device associated
|
|
with the standard input.
|
|
.It Fl t
|
|
Display information about processes attached to the specified terminal
|
|
device.
|
|
Use an question mark
|
|
.Pq Dq \&?
|
|
for processes not attached to a
|
|
terminal device and a minus sign
|
|
.Pq Dq -
|
|
for processes that have
|
|
been revoked from their terminal device.
|
|
.It Fl U
|
|
Displays processes belonging to the user whose username or uid has
|
|
been given to the
|
|
.Fl U
|
|
switch.
|
|
.It Fl u
|
|
Display information associated with the following keywords:
|
|
user, pid, %cpu, %mem, vsz, rss, tt, state, start, time, and command.
|
|
The
|
|
.Fl u
|
|
option implies the
|
|
.Fl r
|
|
option.
|
|
.It Fl v
|
|
Display information associated with the following keywords:
|
|
pid, state, time, sl, re, pagein, vsz, rss, lim, tsiz,
|
|
%cpu, %mem, and command.
|
|
The
|
|
.Fl v
|
|
option implies the
|
|
.Fl m
|
|
option.
|
|
.It Fl W
|
|
Extract swap information from the specified file instead of the
|
|
default
|
|
.Dq Pa /dev/drum .
|
|
Ignored unless
|
|
.Fl M
|
|
is specified.
|
|
.It Fl w
|
|
Use 132 columns to display information, instead of the default which
|
|
is your window size.
|
|
If the
|
|
.Fl w
|
|
option is specified more than once,
|
|
.Nm
|
|
will use as many columns as necessary without regard for your window size.
|
|
.It Fl x
|
|
Also display information about processes without controlling terminals.
|
|
.El
|
|
.Pp
|
|
A complete list of the available keywords are listed below.
|
|
Some of these keywords are further specified as follows:
|
|
.Bl -tag -width indent
|
|
.It %cpu
|
|
The CPU utilization of the process; this is a decaying average over up to
|
|
a minute of previous (real) time.
|
|
Since the time base over which this is computed varies (since processes may
|
|
be very young) it is possible for the sum of all
|
|
.Tn %CPU
|
|
fields to exceed 100%.
|
|
.It %mem
|
|
The percentage of real memory used by this process.
|
|
.It flags
|
|
The flags (in hexadecimal) associated with the process as in
|
|
the include file
|
|
.Aq Pa sys/proc.h :
|
|
.Bl -column P_NOCLDSTOP P_NOCLDSTOP
|
|
.It Dv "P_ADVLOCK" Ta No "0x00000001 process may hold a POSIX advisory lock"
|
|
.It Dv "P_CONTROLT" Ta No "0x00000002 process has a controlling terminal"
|
|
.It Dv "P_INMEM" Ta No "0x00000004 process is loaded into memory"
|
|
.It Dv "P_NOCLDSTOP" Ta No "0x00000008 no
|
|
.Dv SIGCHLD
|
|
when children stop
|
|
.It Dv "P_PPWAIT" Ta No "0x00000010 parent is waiting for child to exec/exit"
|
|
.It Dv "P_PROFIL" Ta No "0x00000020 process has started profiling"
|
|
.It Dv "P_SELECT" Ta No "0x00000040 selecting; wakeup/waiting danger"
|
|
.It Dv "P_SINTR" Ta No "0x00000080 sleep is interruptible"
|
|
.It Dv "P_SUGID" Ta No "0x00000100 process had set id privileges since last exec"
|
|
.It Dv "P_SYSTEM" Ta No "0x00000200 system process: no sigs, stats or swapping"
|
|
.It Dv "P_TIMEOUT" Ta No "0x00000400 timing out during sleep"
|
|
.It Dv "P_TRACED" Ta No "0x00000800 process is being traced"
|
|
.It Dv "P_WAITED" Ta No "0x00001000 debugging process has waited for child"
|
|
.It Dv "P_WEXIT" Ta No "0x00002000 working on exiting"
|
|
.It Dv "P_EXEC" Ta No "0x00004000 process called"
|
|
.Xr execve 2
|
|
.It Dv "P_OWEUPC" Ta No "0x00008000 owe process an addupc() call at next ast"
|
|
.\" the routine addupc is not documented in the man pages
|
|
.It Dv "P_FSTRACE" Ta No "0x00010000 tracing via file system"
|
|
.It Dv "P_NOCLDWAIT" Ta No "0x00020000 no zombies when children die"
|
|
.It Dv "P_32" Ta No "0x00040000 32-bit process (used on 64-bit kernels)"
|
|
.It Dv "P_BIGLOCK" Ta No "0x00080000 process needs kernel ``big lock'' to run"
|
|
.It Dv "P_INEXEC" Ta No "0x00100000 process is exec'ing and cannot be traced"
|
|
.It Dv "P_SYSTRACE" Ta No "0x00200000 process system call tracing active"
|
|
.El
|
|
.It lim
|
|
The soft limit on memory used, specified via a call to
|
|
.Xr setrlimit 2 .
|
|
.It lstart
|
|
The exact time the command started, using the
|
|
.Dq %C
|
|
format described in
|
|
.Xr strftime 3 .
|
|
.It nice
|
|
The process scheduling increment (see
|
|
.Xr setpriority 2 ) .
|
|
.It rss
|
|
the real memory (resident set) size of the process (in 1024 byte units).
|
|
.It start
|
|
The time the command started.
|
|
If the command started less than 24 hours ago, the start time is
|
|
displayed using the
|
|
.Dq %l:%M%p
|
|
format described in
|
|
.Xr strftime 3 .
|
|
If the command started less than 7 days ago, the start time is
|
|
displayed using the
|
|
.Dq %a%p
|
|
format.
|
|
Otherwise, the start time is displayed using the
|
|
.Dq %e%b%y
|
|
format.
|
|
.It state
|
|
The state is given by a sequence of letters, for example,
|
|
.Dq Tn RWNA .
|
|
The first letter indicates the run state of the process:
|
|
.Pp
|
|
.Bl -tag -width indent -compact
|
|
.It D
|
|
Marks a process in disk (or other short term, uninterruptible) wait.
|
|
.It I
|
|
Marks a process that is idle (sleeping for longer than about 20 seconds).
|
|
.It R
|
|
Marks a runnable process.
|
|
.It S
|
|
Marks a process that is sleeping for less than about 20 seconds.
|
|
.It T
|
|
Marks a stopped process.
|
|
.It Z
|
|
Marks a dead process (a
|
|
.Dq zombie ) .
|
|
.El
|
|
.Pp
|
|
Additional characters after these, if any, indicate additional state
|
|
information:
|
|
.Pp
|
|
.Bl -tag -width indent -compact
|
|
.It +
|
|
The process is in the foreground process group of its control terminal.
|
|
.It -
|
|
The LWP is detached (can't be waited for).
|
|
.It \*[Lt]
|
|
The process has raised
|
|
.Tn CPU
|
|
scheduling priority.
|
|
.It \*[Gt]
|
|
The process has specified a soft limit on memory requirements and is
|
|
currently exceeding that limit; such a process is (necessarily) not
|
|
swapped.
|
|
.It A
|
|
the process has asked for random page replacement
|
|
.Pf ( Dv VA_ANOM ,
|
|
from
|
|
.Xr madvise 2 ,
|
|
for example, a LISP interpreter in a garbage collect).
|
|
.It a
|
|
The process is using scheduler activations.
|
|
.It E
|
|
The process is trying to exit.
|
|
.It K
|
|
The process is a kernel thread or system process.
|
|
.It L
|
|
The process has pages locked in core (for example, for raw
|
|
.Tn I/O ) .
|
|
.It l
|
|
The process has multiple LWPs.
|
|
.It N
|
|
The process has reduced
|
|
.Tn CPU
|
|
scheduling priority (see
|
|
.Xr setpriority 2 ) .
|
|
.It S
|
|
The process has asked for
|
|
.Tn FIFO
|
|
page replacement
|
|
.Pf ( Dv VA_SEQL ,
|
|
from
|
|
.Xr madvise 2 ,
|
|
for example, a large image processing program using virtual memory to
|
|
sequentially address voluminous data).
|
|
.It s
|
|
The process is a session leader.
|
|
.It V
|
|
The process is suspended during a
|
|
.Xr vfork 2 .
|
|
.It W
|
|
The process is swapped out.
|
|
.It X
|
|
The process is being traced or debugged.
|
|
.It x
|
|
The process is running under
|
|
.Xr systrace 1 .
|
|
.El
|
|
.It tt
|
|
An abbreviation for the pathname of the controlling terminal, if any.
|
|
The abbreviation consists of the two letters following
|
|
.Dq Pa /dev/tty ,
|
|
or, for the console,
|
|
.Dq co .
|
|
This is followed by a
|
|
.Dq \&-
|
|
if the process can no longer reach that
|
|
controlling terminal (i.e., it has been revoked).
|
|
.It wchan
|
|
The event (an address in the system) on which a process waits.
|
|
When printed numerically, the initial part of the address is
|
|
trimmed off and the result is printed in hex, for example, 0x80324000 prints
|
|
as 324000.
|
|
.El
|
|
.Pp
|
|
When printing using the command keyword, a process that has exited and
|
|
has a parent that has not yet waited for the process (in other words, a zombie)
|
|
is listed as
|
|
.Dq Aq defunct ,
|
|
and a process which is blocked while trying to exit is listed as
|
|
.Dq Aq exiting .
|
|
.Pp
|
|
.Nm
|
|
will try to locate the processes' argument vector from the user
|
|
area in order to print the command name and arguments.
|
|
This method is not reliable because a process is allowed to destroy this
|
|
information.
|
|
The ucomm (accounting) keyword will always contain
|
|
the real command name as contained in the process structure's p_comm field.
|
|
.Pp
|
|
If the command vector cannot be located (usually because it has not
|
|
been set, as is the case of system processes and/or kernel threads)
|
|
the command name is printed within square brackets.
|
|
.Pp
|
|
To indicate that the argument vector has been tampered with,
|
|
.Nm
|
|
will append the real command name to the output within parentheses
|
|
if the basename of the first argument in the argument vector
|
|
does not match the contents of the real command name.
|
|
.Pp
|
|
In addition,
|
|
.Nm
|
|
checks for the following two situations and does not append the
|
|
real command name parenthesized:
|
|
.Bl -tag -width indent
|
|
.It -shellname
|
|
The login process traditionally adds a
|
|
.Sq -
|
|
in front of the shell name to indicate a login shell.
|
|
.Nm
|
|
will not append parenthesized the command name if it matches with
|
|
the name in the first argument of the argument vector, skipping
|
|
the leading
|
|
.Sq - .
|
|
.It daemonname: current-activity
|
|
Daemon processes frequently report their current activity by setting
|
|
their name to be like
|
|
.Dq daemonname: current-activity .
|
|
.Nm
|
|
will not append parenthesized the command name, if the string preceding the
|
|
.Sq \&:
|
|
in the first argument of the argument vector matches the command name.
|
|
.El
|
|
.Sh KEYWORDS
|
|
The following is a complete list of the available keywords and their
|
|
meanings.
|
|
Several of them have aliases (keywords which are synonyms).
|
|
.Pp
|
|
.Bl -tag -width groupnames -compact
|
|
.It %cpu
|
|
percentage CPU usage (alias pcpu)
|
|
.It %mem
|
|
percentage memory usage (alias pmem)
|
|
.It acflag
|
|
accounting flag (alias acflg)
|
|
.It comm
|
|
command (the argv[0] value)
|
|
.It command
|
|
command and arguments (alias args)
|
|
.It cpu
|
|
short-term CPU usage factor (for scheduling)
|
|
.It ctime
|
|
accumulated CPU time of all children that have exited
|
|
.It egid
|
|
effective group id
|
|
.It egroup
|
|
group name (from egid)
|
|
.It etime
|
|
elapsed time since the process was started, in the form
|
|
.Li [[dd-]hh:]mm:ss
|
|
.It euid
|
|
effective user id
|
|
.It euser
|
|
user name (from euid)
|
|
.It flags
|
|
the process flags, in hexadecimal (alias f)
|
|
.It gid
|
|
effective group id
|
|
.It group
|
|
group name (from gid)
|
|
.It groups
|
|
group access list
|
|
.It groupnames
|
|
group names (from group access list)
|
|
.It holdcnt
|
|
number of holds on the process (if non-zero, process can't be swapped)
|
|
.It inblk
|
|
total blocks read (alias inblock)
|
|
.It jobc
|
|
job control count
|
|
.It ktrace
|
|
tracing flags
|
|
.It ktracep
|
|
tracing vnode
|
|
.It lid
|
|
ID of the LWP
|
|
.It lim
|
|
memory use limit
|
|
.It logname
|
|
login name of user who started the process (alias login)
|
|
.It lstart
|
|
time started
|
|
.It lstate
|
|
symbolic LWP state
|
|
.It majflt
|
|
total page faults
|
|
.It minflt
|
|
total page reclaims
|
|
.It msgrcv
|
|
total messages received (reads from pipes/sockets)
|
|
.It msgsnd
|
|
total messages sent (writes on pipes/sockets)
|
|
.It nice
|
|
nice value (alias ni)
|
|
.It nivcsw
|
|
total involuntary context switches
|
|
.It nlwp
|
|
number of LWPs in the process
|
|
.It nsigs
|
|
total signals taken (alias nsignals)
|
|
.It nswap
|
|
total swaps in/out
|
|
.It nvcsw
|
|
total voluntary context switches
|
|
.It nwchan
|
|
wait channel (as an address)
|
|
.It oublk
|
|
total blocks written (alias oublock)
|
|
.It p_ru
|
|
resource usage pointer (valid only for zombie)
|
|
.It paddr
|
|
kernel virtual address of the
|
|
.Tn "struct proc"
|
|
belonging to the process.
|
|
.It pagein
|
|
pageins (same as majflt)
|
|
.It pgid
|
|
process group number
|
|
.It pid
|
|
process
|
|
.Tn ID
|
|
.It ppid
|
|
parent process
|
|
.Tn ID
|
|
.It pri
|
|
scheduling priority
|
|
.It re
|
|
core residency time (in seconds; 127 = infinity)
|
|
.It rgid
|
|
real group
|
|
.Tn ID
|
|
.It rlink
|
|
reverse link on run queue, or 0
|
|
.It rlwp
|
|
Number of LWPs on a processor or run queue
|
|
.It rss
|
|
resident set size
|
|
.It rsz
|
|
resident set size + (text size / text use count) (alias rssize)
|
|
.It ruid
|
|
real user
|
|
.Tn ID
|
|
.It ruser
|
|
user name (from ruid)
|
|
.It sess
|
|
session pointer
|
|
.It sid
|
|
session
|
|
.Tn ID
|
|
.It sig
|
|
pending signals (alias pending)
|
|
.It sigcatch
|
|
caught signals (alias caught)
|
|
.It sigignore
|
|
ignored signals (alias ignored)
|
|
.It sigmask
|
|
blocked signals (alias blocked)
|
|
.It sl
|
|
sleep time (in seconds; 127 = infinity)
|
|
.It start
|
|
time started
|
|
.It state
|
|
symbolic process state (alias stat)
|
|
.It stime
|
|
accumulated system CPU time
|
|
.It svgid
|
|
saved gid from a setgid executable
|
|
.It svgroup
|
|
group name (from svgid)
|
|
.It svuid
|
|
saved uid from a setuid executable
|
|
.It svuser
|
|
user name (from svuid)
|
|
.It tdev
|
|
control terminal device number
|
|
.It time
|
|
accumulated CPU time, user + system (alias cputime)
|
|
.It tpgid
|
|
control terminal process group
|
|
.Tn ID
|
|
.It tsess
|
|
control terminal session pointer
|
|
.It tsiz
|
|
text size (in Kbytes)
|
|
.It tt
|
|
control terminal name (two letter abbreviation)
|
|
.It tty
|
|
full name of control terminal
|
|
.It ucomm
|
|
name to be used for accounting
|
|
.It uid
|
|
effective user
|
|
.Tn ID
|
|
.It upr
|
|
scheduling priority on return from system call (alias usrpri)
|
|
.It user
|
|
user name (from uid)
|
|
.It utime
|
|
accumulated user CPU time
|
|
.It vsz
|
|
virtual size in Kbytes (alias vsize)
|
|
.It wchan
|
|
wait channel (as a symbolic name)
|
|
.It xstat
|
|
exit or stop status (valid only for stopped or zombie process)
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width /var/run/kvm.db -compact
|
|
.It Pa /dev
|
|
special files and device names
|
|
.It Pa /dev/drum
|
|
default swap device
|
|
.It Pa /var/run/dev.db
|
|
/dev name database
|
|
.It Pa /var/db/kvm.db
|
|
system namelist database
|
|
.It Pa /netbsd
|
|
default system namelist
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr kill 1 ,
|
|
.Xr pgrep 1 ,
|
|
.Xr pkill 1 ,
|
|
.Xr sh 1 ,
|
|
.Xr systrace 1 ,
|
|
.Xr w 1 ,
|
|
.Xr kvm 3 ,
|
|
.Xr strftime 3 ,
|
|
.Xr dev_mkdb 8 ,
|
|
.Xr pstat 8
|
|
.Sh BUGS
|
|
Since
|
|
.Nm
|
|
cannot run faster than the system and is run as any other scheduled
|
|
process, the information it displays can never be exact.
|