procps/top.1
2002-10-06 21:42:37 +00:00

2345 lines
95 KiB
Groff
Raw Blame History

.ig igEND
. manual page for NEW top
. Copyright (c) 2002, by: JC Warner & Associates, Ltd.
.
. Permission is granted to copy, distribute and/or modify this document
. under the terms of the GNU Free Documentation License, Version 1.1 or
. any later version published by the Free Software Foundation;
. with no Front-Cover Texts, no Back-Cover Texts, and with the following
. Invariant Sections (and any sub-sections therein):
. all .ig sections, including this one
. DIFFERENCES / New Features
. STUPID TRICKS Sampler
. NOTES and Rantings
. AUTHOR
.
. A copy of the Free Documentation License is included in the section
. entitled "GNU Free Documentation License".
.
. [ that section is found near the end of this document & ]
. [ can be made printable by disabling the .ig directive! ]
.
.igEND
.
.\" Setup ////////////////////////////////////////////////////////////////
\# ** Comment out '.nr' or set to 0 to eliminate WIDTH fiddlin' !
.nr half_xtra 4
.
.ll +(\n[half_xtra] + \n[half_xtra])
.
\# Special right justify macros ---------------------
\# - right justify begin
.de Rjb
.ll -\n[half_xtra]
.rj \\$1
..
\# - right justify end
.de Rje
.ll +\n[half_xtra]
..
\# Jimmy's darn Bullet style ------------------------
.de Jbu
.IP "-" 3
..
\# - bullet continuation paragraph
.de Jp
.IP "" 3
..
\# New features/differences style -------------------
.de New
.IP "-*-" 5
..
\# Screen image style -------------------------------
.de Img
.IP "" -4
.Rjb 26
..
\# Code image style ---------------------------------
.de ImgC
.IP "" -4
.Rjb 20
..
\# Screen narrative (wide narrative) style ----------
.de Scr
.PP
.in -4
..
\# Special emphasis ---------------------------------
.de Zzz
.ce
-*- -*- -*-
..
.
\# Commonly used strings (for consistency) ----------
\# - a real em-dash, darn-it
.ds EM \ \fB\-\-\ \fR
\# - these two are for chuckles, makes great grammar
.ds Me top
.ds ME \fBtop\fR
\# - hey, these two ain't too shabby, either
.ds Us this\ \*(Me
.ds US \fBthis\fR\ \*(Me
\# - other misc strings for consistent usage/emphasis
.ds F \fIOff\fR
.ds O \fIOn\fR
.
.ds AM alternate\-display mode
.ds AS asterisk ('*')
.ds CF configuration file
.ds CI interactive command
.ds CO command\-line option
.ds CW \'current' window
.ds FM full\-screen mode
.ds MP \fBphysical\fR memory
.ds MS \fBshared\fR memory
.ds MV \fBvirtual\fR memory
.ds NT \fBNote\fR:
.ds PU CPU
.ds Pu cpu
.ds SA summary area
.ds TA task area
.ds TD task display
.ds TW task window
\# - xref's that depend on commands or topic names
.ds XC See the
.ds Xc see the
.ds XT See topic
.ds Xt see topic
.
.\" //////////////////////////////////////////////////////////////////////
.\" ----------------------------------------------------------------------
.TH TOP 1 "September 2002" "Linux" "Linux User's Manual"
.\" ----------------------------------------------------------------------
.\" ----------------------------------------------------------------------
.SH NAME
.\" ----------------------------------------------------------------------
top \- display Linux tasks
.\" ----------------------------------------------------------------------
.SH SYNOPSIS
.\" ----------------------------------------------------------------------
\*(ME \-\fBhv\fR | \-\fBbcisS\fR \-\fBd\fI delay\fR \-\fBn\fI
iterations\fR \-\fBp\fI pid\fR [,\fI pid\fR ...]
The traditional switches '-' and whitespace are optional.
.\" ----------------------------------------------------------------------
.SH DESCRIPTION
.\" ----------------------------------------------------------------------
The \*(ME program provides a dynamic real-time view of a running system.
It can display\fB system\fR summary information as well as a list of\fB
tasks\fR currently being managed by the Linux kernel.
The types of system summary information shown and the types, order and
size of information displayed for tasks are all user configurable and
that configuration can be made persistent across restarts.
The program provides a limited interactive interface for process\fB
manipulation\fR as well as a much more extensive interface for personal\fB
configuration\fR \*(EM encompassing every aspect of its operation.
And while \*(ME is referred to throughout this document, you are free
to name the program anything you wish.
That new name, possibly an alias, will then be reflected on \*(Me's display
and used when reading and writing a \*(CF.
.\" ----------------------------------------------------------------------
.SH DIFFERENCES / New Features
.\" ----------------------------------------------------------------------
With no basis for comparison, those new to \*(ME might want to skip
to the next section.
For those who have used a prior version, fasten your seat-belts
and hold on tight as we review the features of \*(US.
Details regarding their exploitation will be covered in later sections.
.\" ......................................................................
.SS Expanded Configurable Display Support
.New
In an SMP environment, screen height may be insufficient to simultaneously
accommodate all \*(Pu states plus a meaningful \*(TD.
So with \*(Us, you can alternate between a\fB summary\fR display or one
showing\fB each \*(Pu\fR separately.
No longer must this choice be irrevocably made at startup.
.New
There are new fields and with \*(Us,\fB any\fR field is selectable for sorting.
Plus, your sorted column can be\fB instantly reversed\fR with just a
single keystroke.
.New
You may optionally apply 2 distinct types of\fB highlighting\fR to
running\fB tasks\fR and/or\fB sorted columns\fR.
With \*(Us, you'll be able to instantly spot running tasks and always
know the current sort field.
.New
While you could continue to use the more familiar (and boring)\fB
monochrome display\fR, you might want to try \*(Us's new\fB color display\fR.
You can even create your own\fB unique colors\fR used in\fI summaries\fR,\fI
messages\fR,\fI headings\fR and\fI tasks\fR, each of which can be made\fB
persistent\fR until you choose to change them.
.New
Up to\fB four separate windows\fR can be displayed simultaneously,
giving you four separate ways to\fB sort\fI and\fB view\fR the tasks
currently cluttering up your system.
You could have one view by\fB pids\fR, another by\fB \*(Pu usage\fR, yet another
showing\fB memory consumption\fR.
You get the idea...
Each window comes with pre-configured (but user configurable)\fB fields\fR
and you can\fB size\fR each window individually.
Virtually every one of \*(Us's options (summaries, fields, colors, sorted column,
etc.) is\fB separately configurable\fR for each of those four windows.
Heck, you can even\fB change\fR a window's name, if you don't care for
\*(Me's choices.
Your changes will be reflected not only when you're in what \*(Me calls\fB
\*(AM\fR but also on his special new 'Windows' help screen.
And, [ ** Drum-Roll + Ta-Da ** ] with just one keystroke you can
quickly\fB switch\fR between full-screen and multiple window modes!
Or, with a different keystroke, toggle a single window \*F for now,
then \*O again later!!
.ce 2
( come on, NONE of that's really TRUE, is it? )
( ** you betcha' it is, AND there's MORE ! ** )
.\" ......................................................................
.SS Enhanced Field/Column Management
.New
Many Field/Column names have been changed to make them more intuitive,
more self-descriptive.
And with \*(Us you won't be fooled with field choices that are "not yet
implemented".
.New
Task memory statistics are more meaningful\fI and\fR more accurate\fR.
.New
You'll finally have complete\fB display integrity\fR regardless of field
selections, their order or screen width.
And\fB that\fR means the\fI command\fR column no longer need be kept as the
right-most field, lest your screen turn to <bleep> when all the following
columns get misaligned.
.\" ......................................................................
.SS Customization Flexibility
.New
.I All\fR of your configuration choices can be\fB preserved\fR in a
personal \*(CF, including any changes made on a per-window basis.
Thus, once you personalize things they\fB remain personalized\fR until
you decide to change them again.
This \*(Me has been completely cured of:
.Rjb 2
i-cant-remember-so-please-do-that-all-over-again
( and again, and again ... )
.Rje
The bottom line is this:\ \ if you save your configuration before quitting
\*(Me, upon restart the display will appear\fB exactly\fR as you left it.
And\fB that\fR means you no longer have to keep \*(Me running
until-the-end-of-time (ok, a long time anyway), lest your customizations
go bye-bye.
.New
You have complete program\fB naming freedom\fR with no internal ties to a
specific personal \*(CF.
Symbolic links could be used to establish different \*(CFs reflecting
the different personalities of your customized "\*(Mes", under whatever
aliases you've used.
Thus, you could have an alias for running \*(Me in 'Batch mode', another for
when you work from the Linux console and maybe a third used with X-Windows.
All of that, yet still just a single binary image!
.\" ......................................................................
.SS What?\fR\ \ A\fB Stupid Tricks\fR Section??
.New
Given all the enhanced capability of \*(Us, why not have a stupid tricks
section?
Just remember, \*(Us will never judge you, just support you.
Ultimately, you'll decide when the time's right to sock-it-to-\fBm'self\fR
and actually try that stuff!
.\" ----------------------------------------------------------------------
.SH 0. OVERVIEW, Operation and Documentation
.\" ----------------------------------------------------------------------
.Scr
When you start \*(Us for the first time, you'll be presented with the traditional
screen elements: 1) Summary Area; 2) Message/Prompt Line; 3) Columns Header;
4) Task Area.
But even out-of-the-box, there are numerous subtle differences, compared to
the former top.
.SS Highlighting
.I Summary_Area\fR:
It's retina-friendly with\fB no\fR highlighting for load/uptime and
only\fB values\fR highlighted for other elements.
.I Task_Area\fR:
Tasks\fB running\fR (or ready to run) will be highlighted, and bold is
only one way of emphasizing such processes.
.SS Content/Labels
.I Summary_Area\fR:
The program\fB name\fR is shown (symlinks/aliases, remember?).
The Cpu\fI(s)\fR state\fR\fB label\fR hints at other possibilities (smp folks,
stand by).
The\fB memory\fR stats use a lower case '\fBk\fR' (making numbers and letters
more distinct).
.I Columns_Header\fR:
Shows a\fB new\fR field and some\fB changed\fR labels (unseen to the right).
Precious horizontal space is no longer squandered.
.Scr
All of that, however, is just the tip of the old iceberg.
So please, do not touch that dial!
You may, however, peruse the following screen representation before we
acknowledge \*(Us's default settings and the topics which follow
in this document...
.Img
+\fB--------------------------------------\fR+
1.\fB Summary Area .\fBl\fR |top - 15:37:33 up 16:16, 9 users, lo:
via 4 toggles .\fBt\fR |Tasks: \fB 73\fR total, \fB 3\fR running, \fB 70\fR sle:
l, t, 1, m .\fB1\fR |Cpu(s): \fB 6.6%\fR user, \fB 2.3%\fR system, :\fB
------------> .\fBm\fR |Mem: \fB 126588k\fR total, \fB 116504k\fR used,:
" |Swap: \fB 265032k\fR total, \fB 8232k\fR used,:
2.\fB Msg/Pmt line --->\fR |______________________________________:
3.\fB Columns Header ->\fR |\fI__PID_USER______PR__NI_%CPU____TIME+__\fR:
4.\fB Task Area ------>\fR |\fB 7328 root 10 0 0.6 0:00.09\fR :
via a bunch of > | 7326 root 9 0 0.0 0:00.06 :
commands and > | 7324 root 8 0 0.0 0:00.00 :
toggles ! > | 7321 root 9 0 0.0 0:00.05 :
... | 7320 root 9 0 0.0 0:00.00 :
| 7316 jfvwm 8 0 0.0 0:00.00 :
( top provides\fI four\fR )| 7315 jfvwm 9 0 0.0 0:00.01 :
( \fIseparate\fR fld grps )| 7312 root 9 0 0.0 0:00.00 :
( or windows &\fB each\fR )| 6725 root 9 0 0.0 0:00.03 :
( could be shown in )| 6232 root 7 -10 1.9 4:25.86 :
( this way, or show )| 5561 root 9 0 0.0 0:00.33 :
(\fB all concurrently\fR! )| 5560 xfs 9 0 0.0 0:00.01 :
| 5325 root 9 0 0.0 0:00.05 :
( will\fI change\fR often )| 4634 root 9 0 0.0 0:04.23 :
-*-\fBRow hilites-->\fR |\fB 1803 jgnome 9 0 0.0 1:55.30\fR :
( depending on your )| 1708 root 9 0 0.0 0:00.27 :
( \fIdelay time\fR value! )| 1703 lp 9 0 0.0 0:00.03 :
+\fB--------------------------------------\fR+
.Rje
.Scr
Within the following categories, \*(Us's startup defaults are documented
assuming no \*(CF, thus no user customizations.
However, items shown with an \*(AS could be overridden through the\fB
command line\fR \*(EM a subject soon to be dealt with.
\fIGlobal_defaults\fR
'A' - Alt display \fBOff\fR (full-screen)
* 'd' - Delay time 3.0 seconds
'I' - Irix mode On\ \ (no, 'solaris' smp)
* 'p' - PID monitoring \fBOff\fR
* 's' - Secure mode \fBOff\fR (unsecured)
\fISummary_Area_defaults\fR
'l' - Load Avg/Uptime On\ \ (thus program name)
't' - Task/Cpu state On\ \ (1+1 lines, see '1')
'm' - Mem/Swap stats On\ \ (2 lines worth)
'1' - Single Cpu On\ \ (thus 1 line if smp)
\fITask_Area_defaults\fR
'b' - Bold hilite On\ \ (not 'reverse')
* 'c' - Command line \fBOff\fR (name, not cmdline)
* 'i' - Idle tasks On\ \ (show all tasks)
'R' - Reverse sort On\ \ (sort pids high-to-low)
* 'S' - Cumulative time \fBOff\fR (exclude dead children)
'x' - Column hilite \fBOff\fR\ (no, sort field)
'y' - Row hilite On\ \ (yes, running tasks)
'z' - color/mono \fBOff\fR\ (no, colors)
Listed below are the remaining topics in this document.
Be advised that none of these topics need be read now, or studied later,
for a successful\fB close-encounter-of-the-1st-kind\fR with \*(Us.
You need remember just the\fB help key\fR ('h' or '?') to survive
\*(EM nay, prosper!
What about quitting, you ask?
Well, of course there's the 'q' \*(CI, but then \*(Me does quite well
with\fB signals\fR.
So just zap him with the traditional \fI^C\fR when you're done.
.br
Oh, almost forgot...
You could use \*(Me's own '\fBk\fR' command, to sock-it-to-\fBhisself\fR.
.Rjb 4
( He actually ENJOYS that one, really! )
( He sees SUICIDE as a chance to rest; )
( confronted-with-death, top'll LAUGH! )
( ooh, should 'k' be in stupid tricks? )
.Rje
Remaining Table of Contents
1.\fB COMMAND\-LINE Options\fR
2.\fB FIELDS / Columns\fR
a. DESCRIPTIONS of Fields
b. SELECTING and ORDERING Columns
3.\fB INTERACTIVE Commands\fR
a. GLOBAL Commands
b. SUMMARY Area Commands
c. TASK Area Commands
d. COLOR Mapping
4.\fB ALTERNATE\-DISPLAY Mode\fR
a. WINDOWS Overview
b. COMMANDS for Windows
c. EXAMPLES of Windows
-*- The 'A' Mode Command Toggle -*-
-*- STACKIN' & WHACKIN' Windows -*-
-*- ALL TOGETHER Now, Window(s) -*-
5.\fB FILES\fR
a. SYSTEM Configuration File
b. PERSONAL Configuration File
6.\fB STUPID TRICKS Sampler\fR
a. Kernel Magic
b. Bouncing Windows
c. The Big Bird Window
7.\fB NOTES and Rantings\fR
a. The top Binary
b. Comparing Performance
c. Cost of Stuff
d. The top Sources
-*- Rant On, and on -*-
lastly,\fB the usual\fR...
8. BUGS, 9. HISTORY Former top, 10. AUTHOR, 11. SEE ALSO
.\" ----------------------------------------------------------------------
.SH 1. COMMAND-LINE Options
.\" ----------------------------------------------------------------------
The command-line syntax for \*(Us consists of:
\-\fBhv\fR\ |\ -\fBbcisS\fR\ \-\fBd\fI\ delay\fR\ \-\fBn\fI\ iterations\
\fR\ \-\fBp\fI\ pid\fR\ [,\fIpid\fR...]
The typically mandatory switches ('-') and even whitespace are completely
optional.
.TP 5
\-\fBb\fR :\fB Batch mode\fR operation
Starts \*(Me in 'Batch mode', which could be useful for sending output
from \*(Me to other programs or to a file.
In this mode, \*(Me will\fB not\fR accept input and runs until the iterations
limit you've set with the '-n' \*(CO or until killed.
Output is plain text suitable for any dumb terminal.
.br
( or dumb user, heh heh )
.TP 5
\-\fBc\fR :\fB Command line/Program name\fR toggle
Starts \*(Me with the last remembered '\fBc\fR' state reversed.
Thus, if \*(Me was displaying command lines, now that field will show program
names, and visa versa.
\*(XC 'c' \*(CI for additional information.
.TP 5
\-\fBd\fR :\fB Delay time\fR interval as:\ \ \fB-d ss.tt\fR (\fIseconds\fR.\fItenths\fR)
Specifies the delay between screen updates, and overrides the corresponding
value in one's personal \*(CF or the startup default.
Later this can be changed with the 'd' or 's' \*(CIs.
In all cases, however, such changes are\fI prohibited\fR if \*(Me is running
in 'Secure mode', except for root and excluding\fR the 's' \*(CO, documented
later in this section.
For additional information on 'Secure mode'
\*(Xt 5a. SYSTEM Configuration File.
Fractional seconds are honored, but a negative number is not allowed.
If you set the delay to anything less than 1 second, and you expect \*(Me
to do a proper job of it, then you really owe him a\fB scheduling boost\fR.
So please renice him using \*(Me's own 'r' \*(CI or more directly with
something like the following:
nice -n-10 top -d.1
With the ability to highlight\fB running\fR tasks, \*(Us will then produce
an amazing display.
One representing the results of the kernel's\fB previously unseen\fR
scheduling efforts.
You may be surprised.
.Rjb 2
( but try not to waste too many \*(Pu cycles )
( with such sub-second delays & refreshes! )
.Rje
.TP 5
\-\fBh\fR :\fB Help\fR
Show library version and the usage prompt, then quit.
.TP 5
\-\fBi\fR :\fB Idle Processes\fR toggle
Starts \*(Me with the last remembered '\fBi\fR' state reversed.
When this toggle is \*F, tasks that \fBare\fR idled or zombied
will\fB not\fR be displayed.
.TP 5
\-\fBn\fR :\fB Number of iterations\fR limit as:\ \ \fB -n number\fR
Specifies the maximum number of iterations, or frames, \*(Me should
produce before:
.Rjb 6
tellin'-a-user-what-he-really-thinks :1
stoppin'-4-a-beer-with-the-guys :2
quittin'-an-going-2-hawaii :3
hangin'-it-up-forever :4
rollin'-deadover :5
[1 -5-5-5-5 = huh?]
.Rje
.TP 5
\-\fBp\fR :\fB Monitor PIDs\fR as:\fB\ \ -pN1 -pN2 ...\fR\ \ or\fB\ \ -pN1, N2 [,...]
Monitor only processes with specified process IDs.
This option can be given up to 20 times, or you can provide a comma delimited
list with up to 20 pids.
For the indecisive, go ahead and co-mingle both approaches.
This is a \*(CO \fBonly\fR.
And should you wish to return to normal operation, it is not necessary
to quit and and restart \*(Us \*(EM just issue the '=' \*(CI.
.TP 5
\-\fBs\fR :\fB Secure mode\fR operation
Starts \*(Me with \fBsecure mode forced\fR, even for root.
This mode is far better controlled through the system \*(CF.
In fact, one could argue that this switch has little practical use\fB except\fR
to test the nifty\fI delayed message handling\fR \*(Us employs during bootstrap.
Oh, you wanna' see?
Test thus:\ \ \*(Me\fB d.1s\fR
.Rjb 3
( see, NO '-' & 'sp' but )
( you\fB can't change delay\fR )
( in\fI secure mode\fR, silly! )
.Rje
Don't bother trying that precise command line with your old top
\*(EM he'll completely overlook that 's' \*(CO because
he-sees-poorly-but-won't-wear-glasses.
.TP 5
\-\fBS\fR :\fB Cumulative time mode\fR toggle
Starts \*(Me with the last remembered '\fBS\fR' state reversed.
When 'Cumulative mode' is \*O, each process is listed with the \*(Pu
time that it\fB and\fR its dead children have used.
\*(XC 'S' \*(CI for additional information regarding this mode.
.TP 5
\-\fBv\fR :\fB Version\fR
Show library version and the usage prompt, then quit.
.\" ----------------------------------------------------------------------
.SH 2. FIELDS / Columns
.\" ----------------------------------------------------------------------
.\" ......................................................................
.SS 2a. DESCRIPTIONS of Fields
.\" ----------------------------------------------------------------------
Listed below are \*(Us's\fB available\fR fields.
They are always associated with the letter shown, regardless of the position
you may have established for them with the 'o' (Order fields) \*(CI, reviewed
in the following topic.
Any field is selectable as the\fB sort field\fR, and you control whether they
are sorted high-to-low or low-to-high.
For additional information on sort provisions \*(Xt 3c. TASK Area Commands.
.TP 3
a:\fB PID\fR \*(EM Process Id\fR
The task's unique process ID, which periodically wraps at 32767,
though never restarting at zero.
.TP 3
b:\fB PPID\fR \*(EM Parent Process Pid\fR
The process ID of a task's parent.
.TP 3
c:\fB PGID\fR \*(EM Process Group Id\fR
The grouping of tasks which becomes part of job control.
It is used for distribution of signals and to arbitrate terminal I/O requests.
There is one process group per pipeline.
.TP 3
d:\fB UID\fR \*(EM User Id\fR
The user ID of the task's owner.
.TP 3
e:\fB USER\fR \*(EM User Name
The user name of the task's owner.
.TP 3
f:\fB GROUP\fR \*(EM Group Name
The group name of the task's owner.
.TP 3
g:\fB TTY\fR \*(EM Controlling Tty
The name of the controlling terminal.
This is usually the\fB device\fR (serial port, pty, etc.) from which the
process was started, and which it uses for input or output.
However, a task need\fI not\fR be associated with a terminal, in which case
you'll see '\fB?\fR' displayed.
.TP 3
h:\fB PR\fR \*(EM Priority
The priority of the task.
.TP 3
i:\fB NI\fR \*(EM Nice value
The nice value of the task.
A\fI negative\fR nice value means\fB higher priority\fR, whereas a\fI
positive\fR nice value means\fB lower priority\fR.
Zero in this field simply means priority will not be adjusted in determining a
task's dispatchability.
.TP 3
j:\fB #C\fR \*(EM Last used \*(PU (SMP)
A number representing the last used processor.
In a true SMP environment this will likely change frequently since the kernel
intentionally uses weak affinity.
Also, the very act of running \*(Me may break this weak affinity and cause more
processes to change \*(PUs more often (because of the extra demand for
\*(Pu time).
.TP 3
k:\fB %CPU\fR \*(EM \*(PU usage
The task's share of the elapsed \*(PU time since the last screen update, expressed
as a percentage of total \*(PU time.
In a true SMP environment, if 'Irix mode' is \*F, \*(Me will operate in
\'Solaris mode' where a task's \*(Pu usage will be divided by the total
number of \*(PUs.
You toggle 'Irix/Solaris' modes with the 'I' \*(CI.
.TP 3
l:\fB TIME\fR \*(EM \*(PU Time
Total \*(PU time the task has used since it started.
When 'Cumulative mode' is \*O, each process is listed with the \*(Pu
time that\fB it\fR and its\fB dead children\fR has used.
You toggle 'Cumulative mode' with 'S', which is a \*(CO and an \*(CI.
.TP 3
m:\fB TIME+\fR \*(EM \*(PU Time, hundredths
The same as 'TIME', but reflecting more granularity through hundredths of
a second.
.TP 3
n:\fB %MEM\fR \*(EM Memory usage (RES)
A task's currently used share of available \*(MP.
.TP 3
o:\fB VIRT\fR \*(EM Virtual Image (kb)
The total amount of \*(MV used by the task.
It includes all code, data and shared libraries plus pages that have been
swapped out.
VIRT = SWAP + RES.
.TP 3
p:\fB SWAP\fR \*(EM Swapped size (kb)
The swapped out portion of a task's total \*(MV image.
.TP 3
q:\fB RES\fR \*(EM Resident size (kb)
The non-swapped \*(MP a task has used.
RES = CODE + DATA.
.TP 3
r:\fB CODE\fR \*(EM Code size (kb)
The amount of \*(MP devoted to executable code, also known as
the 'text resident set' size or TRS.
.TP 3
s:\fB DATA\fR \*(EM Data+Stack size (kb)
The amount of \*(MP devoted to other than executable code, also known as
the 'data resident set' size or DRS.
.TP 3
t:\fB SHR\fR \*(EM Shared Mem size (kb)
The amount of \*(MS used by a task.
It simply reflects memory that could be potentially shared with
other processes.
It is not an assurance that such memory is actually being shared.
.TP 3
u:\fB nFLT\fR \*(EM Page Fault count
The number of\fB major\fR page faults that have occurred for a task.
A page fault occurs when a process attempts to read from or write to a virtual
page that is not currently present in its address space.
A\fB major\fR page fault is when\fI disk access\fR is involved in making that
page available.
.TP 3
v:\fB nDRT\fR \*(EM Dirty Pages count
The number of pages that have been\fB modified\fR since they were last
written to disk.
Dirty pages must be written to disk before the corresponding physical memory
location can be used for some other virtual page.
.TP 3
w:\fB S\fR \*(EM Process Status
The status of the task which can be one of:
'\fBD\fR' = uninterruptible sleep
'\fBR\fR' = running
'\fBS\fR' = sleeping
'\fBT\fR' = traced or stopped
'\fBZ\fR' = zombies
Tasks shown as running should be more properly thought of as 'ready to run'
\*(EM their task_struct is simply represented on Linux's run-queue.
Even without a true SMP machine you may see numerous tasks in this state,
depending on \*(Me's delay interval and nice value.
.TP 3
x:\fB Command\fR \*(EM Command\fB line\fR or Program\fB name\fR
Display the command line used to start a task or the name of the associated
program.
You toggle between command\fI line\fR and\fI name\fR with 'c', which is both
a \*(CO and an \*(CI.
When you've chosen to display command\fB lines\fR, processes without a command
line (kernel threads) will be shown with only the program name in parentheses,
as in this example:
\fR( mdrecoveryd )
Either form of display is subject to potential truncation if it's too long to
fit in this field's\fI current width\fR.
That width depends upon other fields selected, their order and the current
screen width.
.in +4
\*(NT The 'Command' field/column is\fB unique\fR, in that \fRit is not
fixed-width, like all other fields.
When displayed, this column will be allocated \fBall remaining screen width\fR
to provide for the potential growth of program names into command lines!
.in
.TP 3
y:\fB WCHAN\fR \*(EM Sleeping in Function
Depending on the availability of the kernel link map ('System.map'),
this field will show the \fB name\fR or the\fB address\fR of the kernel
function in which the task is currently sleeping.
Running tasks will display a dash ('-') in this column (but only if you're
using the best, the most proper libproc).
.in +4
\*(NT By displaying this field, \*(Me's own working set will be increased by
over 700Kb.
Your only means of reducing that overhead will be to stop and restart \*(Me.
.in
.TP 3
z:\fB Flags\fR \*(EM Task Flags
This column represents the task's current scheduling flags which \*(Us
expresses in hexadecimal notation, but with zeros suppressed.
These flags are officially documented in <linux/sched.h>.
Less formal documentation can also be found on the 'Fields select'
and 'Order fields' screens \*(EM the next topic.
.\" ......................................................................
.SS 2b. SELECTING and ORDERING Columns
.\" ----------------------------------------------------------------------
After pressing the \*(CIs 'f' (Fields select) or \'o' (Order fields) you will
be shown a screen containing the current \fBfields string\fR followed by names
and descriptions for all fields.
Here is a sample\fB fields string\fR from one of \*(Us's four windows/field
groups and an explanation of the conventions used:
.Jbu
Sample fields string:
\fIANOPQRSTUVXbcdefgjlmyzWHIK\fR
.Jbu
The order of displayed fields corresponds to the order of the letters
in that string.
.Jbu
If the letter is\fI upper case\fR the corresponding field itself will
then be\fB shown\fR as part of the \*(TD (screen width permitting).
This will also be indicated by a leading \*(AS, as in this excerpt:
\fR...
\fB* K: %CPU = CPU usage
\fR l: TIME = CPU Time
\fR m: TIME+ = CPU Time, hundredths
\fB* N: %MEM = Memory usage (RES)
\fB* O: VIRT = Virtual Image (kb)
\fR...
.TP
.B Fields select\fR screen \*(EM the 'f' \*(CI
You\fI toggle\fR the\fB display\fR of a field by simply pressing the
corresponding letter.
.TP
.B Order fields\fR screen \*(EM the 'o' \*(CI
You\fI move\fR a field to the\fB left\fR by pressing the corresponding\fB
upper case\fR letter and to the\fB right\fR with the\fB lower case\fR
letter.
.\" ----------------------------------------------------------------------
.SH 3. INTERACTIVE Commands
.\" ----------------------------------------------------------------------
Listed below is a brief index of commands within categories.
Some commands appear more than once \*(EM their meaning or scope may vary
depending on the context in which they are issued.
3a.\fI GLOBAL_Commands\fR
<Ret>, <Sp> ?, =, A, d, G, h, I, k, q, r, s, W, Z
3b.\fI SUMMARY_Area_Commands\fR
l, m, t, 1
3c.\fI TASK_Area_Commands\fR
Appearance: b, x, y, z
Content: c, f, o, S, u
Size: #, i, n
Sorting: <, >, F, O, R
3d.\fI COLOR_Mapping\fR
<Ret>, a, b, H, M, q, S, T, w, z, 0 - 7
4b.\fI COMMANDS_for_Windows\fR
-, _, =, +, A, a, G, g, w
.\" ......................................................................
.SS 3a. GLOBAL Commands
The global \*(CIs are\fB always\fR available\fR in both \*(FM and \*(AM.
However, some of these \*(CIs are\fB not available\fR when running
in 'Secure mode'.
If you wish to know in advance whether or not your \*(Me has been secured,
simply ask for help and view the system summary on the second line.
.TP 7
\ \ \<\fBEnter\fR> or <\fBSpace\fR> :\fIRefresh_Display\fR
In truth, these commands do nothing, they are simply ignored.
However, they will awaken \*(Me and following receipt of any input
the entire display will be repainted within milliseconds.
If you have set a large delay interval and wish to see current status,
just use either of these keys.
.TP 7
\ \ \'\fB?\fR\' or \'\fBh\fR\' :\fIHelp\fR
There are\fB two help levels\fR available.
The first will provide a reminder of all the basic \*(CIs.
If \*(Me is\fI secured\fR, that screen will be abbreviated.
Typing 'h' or '?' on that help screen will take you to help for those \*(CIs
applicable to \*(AM.
.TP 7
\ \ \'\fB=\fR\' :\fIExit_Task_Limits\fR
Removes restrictions on which tasks are shown.
This command will reverse any 'i' (idle tasks) and 'n' (max tasks) commands
that might be active.
It also provides for an 'exit' from PID monitoring.
See the '-p' \*(CO for a discussion of PID monitoring.
When operating in \*(AM this command has a slightly broader meaning.
.TP 7
\ \ \'\fBA\fR\' :\fIAlternate_Display_Mode_toggle\fR
This command will switch between \*(FM and \*(AM.
\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight into
\*(CWs and field groups.
.TP 7
*\ \'\fBd\fR\' or \'\fBs\fR\' :\fIChange_Delay_Time_interval\fR
You will be prompted to enter the delay time, in seconds, between
display updates.
Fractional seconds are honored, but a negative number is not allowed.
If you set the delay to anything less than 1 second, and you expect \*(Me
to do a proper job of it, then you really owe him a\fB scheduling boost\fR.
So please renice him using \*(Me's own 'r' \*(CI.
Entering 0 causes (nearly) continuous updates, with an unsatisfactory
display as the system and tty driver try to keep up with \*(Me's demands.
The delay value is inversely proportional to system loading,
so set it with care.
If at any time you wish to know the current delay time, simply ask for help
and view the system summary on the second line.
.TP 7
\ \ \'\fBG\fR\' :\fIChoose_Another_Window/Field_Group\fR
You will be prompted to enter a number between 1 and 4 designating the
window/field group which should be made the \*(CW.
You will soon grow comfortable with these 4 windows, especially after
experimenting with \*(AM.
.TP 7
\ \ \'\fBI\fR\' :\fIIrix/Solaris_Mode_toggle\fR
When operating in 'Solaris mode' ('I' toggled \*F), a task's \*(Pu usage
will be divided by the total number of \*(PUs.
After issuing this command, you'll be informed of the new state of this toggle.
.TP 7
*\ \'\fBk\fR\' :\fIKill_a_task\fR
You will be prompted for a PID and then the signal to send.
The default signal, as reflected in the prompt, is SIGTERM.
However, you can send any signal, via number or name.
If you wish to\fI abort\fR the kill process, do one of the following
depending on your progress:
1) at the\fB pid\fR prompt, just press <Enter>
2) at the\fB signal\fR prompt, type 0
.TP 7
\ \ \'\fBq\fR\' :\fIQuit\fR
.TP 7
*\ \'\fBr\fR\' :\fIRenice_a_Task\fR
You will be prompted for a PID and then the value to nice it to.
Entering a positive value will cause a process to lose priority.
Conversely, a negative value will cause a process to be viewed more
favorably by the kernel.
.TP 7
\ \ \'\fBW\fR\' :\fIWrite_the_Configuration_File\fR
This will save all of your options and toggles plus the current
display mode and delay time.
By issuing this command just before quitting \*(Me, you will be able restart
later in\fB exactly\fR that same state.
.TP 7
\ \ \'\fBZ\fR\' :\fIChange_Color_Mapping
This key will take you to a separate screen where you can change the
colors for the \*(CW, or for all windows.
For details regarding this \*(CI \*(Xt 3d. COLOR Mapping.
.IP "*" 3
The commands shown with an \*(AS are\fB not available\fR in 'Secure mode',
nor will they be shown on the level-1 help screen.
.\" ......................................................................
.SS 3b. SUMMARY Area Commands
The \*(SA \*(CIs are\fB always available\fR in both \*(FM and \*(AM.
They affect the beginning lines of your display and will determine the position
of messages and prompts.
These commands always impact just the \*(CW/field group.
\*(XT 4. ALTERNATE\-DISPLAY Mode and the 'G' \*(CI for insight into
\*(CWs and field groups.
.TP 7
\ \ \'\fBl\fR\' :\fIToggle_Load_Average/Uptime\fR \*(EM On/Off
This is also the line containing the program name (possibly an alias) when
operating in \*(FM or the \*(CW name when operating in \*(AM.
If you murder-this-line, \*(Me will prosecute you.
Later, get-out-of-jail by turning it back on.
.TP 7
\ \ \'\fBm\fR\' :\fIToggle_Memory/Swap_Usage\fR \*(EM On/Off
This command affects two \*(SA lines.
.TP 7
\ \ \'\fBt\fR\' :\fIToggle_Task/Cpu_States\fR \*(EM On/Off
This command affects from 2 to many \*(SA lines, depending on the state
of the '1' toggle and whether or not \*(Me is running under true SMP.
.TP 7
\ \ \'\fB1\fR\' :\fIToggle_Single/Separate_Cpu_States\fR \*(EM On/Off
This command affects how the 't' command's Cpu States portion is shown.
Although this toggle exists primarily to serve massively-parallel SMP machines,
it is not restricted to solely SMP environments.
When you see 'Cpu(s):' in the \*(SA, the '1' toggle is \*O and all
\*(Pu information is gathered in a single line.
Otherwise, each \*(Pu is displayed separately as: 'Cpu0, Cpu1, ...'
.in +4
\*(NT If you receive a fatal error message in response to this command, your
version of the kernel does not provide separate \*(Pu data in '/proc/stat'.
You can either avoid issuing this command or recompile \*(Me with the
appropriate #define enabled so the command will be restricted to SMP.
.in
.PP
If the\fB entire\fR \*(SA has been toggled \*F for any window,
you would be left with just the\fB message line\fR.
In that way, you will have maximized available task rows but (temporarily)
sacrificed the program name in \*(FM or the \*(CW name when in \*(AM.
.\" ......................................................................
.SS 3c. TASK Area Commands
The \*(TA \*(CIs are\fB always\fR available in \*(FM.
The \*(TA \*(CIs are\fB never available\fR in \*(AM\fI if\fR the \*(CW's
\*(TD has been toggled \*F (\*(Xt 4. ALTERNATE\-DISPLAY Mode).
.PP
.\" .........................
.B APPEARANCE\fR of \*(TW
.PD 0
.TP 7
\ \ \'\fBb\fR\' :\fIBold/Reverse_toggle\fR
This command will impact how the 'x' and 'y' toggles are displayed.
Further, it will only be available when at least one of those toggles is \*O.
.TP 7
\ \ \'\fBx\fR\' :\fIColumn_Highlight_toggle\fR
You probably don't need a constant visual reminder of your chosen sort
field and \*(Us hopes that you always run with 'column highlight' \*F,
due to the cost in path-length.
However, if you forget which field \*(Me is sorting this command can serve
as a quick visual reminder.
.TP 7
\ \ \'\fBy\fR\' :\fIRow_Highlight_toggle\fR
Please use this toggle \*(EM highlight running tasks!
It's an important insight into your system's health and it was largely this
provision that was responsible for your-brand-new-top.
You'll make the program author a happy guy.
.TP 7
\ \ \'\fBz\fR\' :\fIColor/Monochrome_toggle\fR
Switches the \*(CW between your last used color scheme and the older form
of black-on-white or white-on-black.
This command will alter\fB both\fR the \*(SA and \*(TA but does not affect the
state of the 'x', 'y' or 'b' toggles.
.PP
.\" .........................
.B CONTENT\fR of \*(TW
.PD 0
.TP 7
\ \ \'\fBc\fR\' :\fICommand_Line/Program_Name_toggle\fR
This command will be honored whether or not the 'Command' column
is\fB currently visible\fR.
Later, should that field come into view, the change you applied will be seen.
.TP 7
\ \ \'\fBf\fR\' and \'\fBo\fR\' :\fIFields_select\fR or \fIOrder_fields\fR
These keys display separate screens where you can change which
fields are displayed and their order.
For additional information on these \*(CIs
\*(Xt 2b. SELECTING and ORDERING Columns.
.TP 7
\ \ \'\fBS\fR\' :\fICumulative_Time_Mode_toggle\fR
When 'Cumulative mode' is \*O, each process is listed with the \*(Pu
time that it\fB and\fR its dead children\fR have used.
When \*F, programs that fork into many separate tasks will appear
less demanding.
For programs like 'init' or a shell this is appropriate but for others,
like compilers, perhaps not.
Experiment with two \*(TWs sharing the same sort field but with different 'S'
states and see which representation you prefer.
After issuing this command, you'll be informed of the new state of this toggle.
If you wish to know in advance whether or not 'Cumulative mode' is in
effect, simply ask for help and view the window summary on the second line.
.TP 7
\ \ \'\fBu\fR\' :\fIShow_Specific_User_Only\fR
You will be prompted to enter the name of the user to display.
Thereafter, in that \*(TW only matching User ID's will be shown, or possibly
no tasks will be shown.
Later, if you wish to monitor all tasks again, re-issue this command but
just press <Enter> at the prompt, without providing a name.
.PP
.\" .........................
.B SIZE\fR of \*(TW
.PD 0
.TP 7
\ \ \'\fBi\fR\' :\fIIdle_Processes_toggle\fR
Displays all tasks or just active tasks.
When this toggle is \*F, idled or zombied processes will\fB not\fR
be displayed.
If this command is applied to the last \*(TD when in \*(AM, then it will not
affect the window's size, as all prior \*(TDs will have already been painted.
.TP 7
\ \ \'\fBn\fR\' or \'#\' :\fISet_Maximum_Tasks\fR
You will be prompted to enter the number of tasks to display.
The lessor of your number and available screen rows will be used.
This is the command that, when used in \*(AM, gives you precise control
over the size of each currently visible \*(TD.
.PP
.\" .........................
.B SORTING\fR of \*(TW
.br
.in +2
Before using any of these sort provisions, \*(Me suggests that you
temporarily turn on column highlighting using the '\fBx\fR' \*(CI.
That will help ensure that the actual sort environment matches your intent.
The following \*(CIs will\fB only\fR be honored when the
current sort field is\fB visible\fR.
The sort field might\fI not\fR be visible because:
1) there is insufficient\fI Screen Width\fR
2) the 'f' \*(CI turned it \*F
.in
.TP 7
\ \ \'\fB<\fR\' :\fIMove_Sort_Field_Left\fR
Moves the sort column to the left unless the current sort field is
the first field being displayed.
.TP 7
\ \ \'\fB>\fR\' :\fIMove_Sort_Field_Right\fR
Moves the sort column to the right unless the current sort field is
the last field being displayed.
.PP
.in +2
The following \*(CIs will\fB always\fR be honored whether or not
the current sort field is visible.
.in
.TP 7
\ \ \'\fBF\fR\' or \'\fBO\fR\' :\fISelect_Sort_Field\fR
These keys display a separate screen where you can change which field
is used as the sort column.
If a field is selected which was not previously being displayed, it will
be forced \*O when you return to the \*(Me display.
However, depending upon your screen width and the order of your fields,
this sort field may not be displayable.
This \*(CI can be a convienent way to simply verify the current sort field,
when running \*(Me with column highlighting turned \*F.
.TP 7
\ \ \'\fBR\fR\' :\fIReverse/Normal_Sort_Field_toggle\fR
Internally to \*(Me, 'normal' is 'reverse'.
.Rjb 1
...\fBsay what\fR?
.Rje
Without 'R', \*(Me will sort fields high-to-low.
.Rjb 1
...that's\fI reverse\fR, \*(Me's\fI normal\fR mode!
.Rje
Try this:\ \ using 'R' you can\fI alternate\fR between high-to-low
and low-to-high sorts.
Lose no sleep over 'reverse' and 'normal', ok?
.PP
.in +2
\*(NT Field sorting uses internal values, not those in column display.
Thus, the TTY and WCHAN fields will violate strict ASCII collating sequence.
.in
.\" ......................................................................
.SS 3d. COLOR Mapping
.Scr
When you issue the 'Z' \*(CI, you are presented with the following screen.
On that screen, separate commands (though sometimes related) are in effect.
This screen can be used to change the colors in just the \*(CW or
in\fB all\fR four windows before returning to the \*(Me display.
.P
.B Available \*(CIs
\fB4\fR upper case letters to select a\fB target\fR
\fB8\fR numbers to select a\fB color\fR
normal toggles available\fR
'b' :bold/reverse
'z' :color/mono
other commands available\fR
'a'/'w' :apply, then go to next/prior
<Enter> :apply and exit
'q' :abandon current changes and exit
.Img
+\fB--------------------------------------\fR+
this shows you the |\fBHelp for color mapping\fR - procps versio:\fB
Target Window ----->\fR |current window:\fB 1:Def\fR :
-*- | :
a\fB Sample Screen\fR with | color - 04:25:44 up 8 days, 50 min,:
\fIyour_current_results\fR | Tasks: \fB 64\fR total, \fB 2\fR running, \fB 62\fR :
\'\fBS\fR' color \fB ---->\fR | State cpu0 : \fB 76.5%\fR user, \fB 11.2%\fR s:
\'\fBM\fR' color\fIs \fB ---->\fR | \fB _Nasty_Message!___-or-__Input_Promp\fR:
\'\fBH\fR' color \fB ---->\fR | \fI __PID_TTY_____PR__NI_%CPU____TIME+_\fR:
\'\fBT\fR' color \fB ---->\fR | 17284\fB pts/2\fR 8 0 0.0 0:00.75:
+ a\fB row\fR for '\fBb\fR'\fB--->\fR | \fB 8601\fB pts/1 7 -10 0.4 0:00.03\fR:
-*- | 11005\fB ? \fR 9 0 0.0 0:02.50:
addt'l toggles \fB---->\fR | available toggles:\fB b\fR =bold/reverse(:
\'\fBb\fR'(bold), '\fBz\fR'(mono) | :
|Select\fB target\fR as upper case letter: :
instructions for the | \fB S\fR = Summary Data, \fB M\fR = Messages/Pro:
target (4) | \fB H\fR = Column Heads, \fB T\fR = Task Informa:
|Select\fB color\fR as number: :
instructions for the | \fB 0\fR = black, \fB 1\fR = red, \fB 2\fR = green:
colors (8) | \fB 4\fR = blue, \fB 5\fR = magenta, \fB 6\fR = cyan,:
| :
-*- -*- -*- |Selected:\fB target T\fR ;\fB color 1\fR :
current\fB target\fR | press 'q' to abort changes to windo:
current\fB color\fR | press 'a' or 'w' to commit & change:
-*- -*- -*- | :
+\fB--------------------------------------\fR+
.Rje
.in +4
\*(NT If your use 'a' or 'w' to cycle the targeted window, you\fI will
have applied\fR the color scheme that was displayed when you left that window.
You can, of course, easily return to any window and reapply different
colors or turn colors \*F completely with the 'z' toggle.
.in
The Color Mapping screen can also be used to change the \*(CW/field group
in either \*(FM or \*(AM.
Whatever was targeted when 'q' or <Enter> was pressed\fI will\fR be
made\fB current\fR as you return to the \*(Me display.
.Zzz
.\" ----------------------------------------------------------------------
.SH 4. ALTERNATE\-DISPLAY Mode
.\" ----------------------------------------------------------------------
.\" ......................................................................
.SS 4a. WINDOWS Overview
You must find comfort with two concepts if you are to successfully manage
windows and prosper in \*(AM.
.TP
.B Field Groups/Windows\fR:
.br
In \*(FM there is a single window represented by the entire screen.
That single window can still be\fI changed\fR to display 1 of 4 different\fB
field groups\fR (\*(Xc 'G' \*(CI, repeated below).
Each of the 4 field groups has a unique separately configurable\fB \*(SA\fR
and its own configurable\fB \*(TA\fR.
In \*(AM, those 4 underlying\fB field groups\fR can now be made\fI visible\fR
simultaneously, or can be turned \*F individually at your command.
The\fB \*(SA\fR will\fI always\fR exist, even if it's only the message line.
At any given time only\fI one\fR \*(SA can be displayed.
However, depending on your commands, there could be from\fI zero\fR
to\fI four\fR separate \*(TDs currently showing on the screen.
.TP
.B Current Window\fR:
.br
The \*(CW is the window associated with the \*(SA and the window to which
task related commands are always directed.
Since in \*(AM you can toggle the \*(TD \*F, some commands might be
restricted for the \*(CW.
A further complication arises when you have toggled the\fB entire\fR \*(SA
\*F, leaving only the\fB message line\fR visible.
With the loss of the window\fB name\fR (the 'l' toggled line), you'll not
easily know what window is the \*(CW.
.PP
You must never blame \*(Us for any potential confusion.
Someone must have misapplied some commands.
Come on, let's hear it, who ya gonna' blame, huh?
.\" ......................................................................
.SS 4b. COMMANDS for Windows
.TP 7
\ \ \'\fB-\fR\' and \'\fB_\fR\' :\fIShow/Hide_Window(s)_toggles\fR
The '-' (minus) key turns the \*(CW's \*(TD \*O and \*F.
When \*O, that \*(TA will show a minimum of the columns header you've
established with the 'f' and 'o' commands.
It will also reflect any other \*(TA options/toggles you've applied yielding
zero or more tasks.
The '_' (upper case minus) key does the same for\fB all\fR \*(TDs.
In other words, it switches between the currently visible \*(TD(s) and any
\*(TD(s) you had toggled \*F.
If all 4 \*(TDs\fB are\fR currently visible, \*(Me is betting you will find
the '_' command not terribly satisfying (inside, he'll wonder
what-kind-of-user-he's-dealing-with).
On the other hand, if all you're interested in is the system summary, \*(Me
acknowledges this is the best means to that objective (inside, he'll wonder
how-did-this-user-become-so-very-wise).
.TP 7
*\ \'\fB=\fR\' and \'\fB+\fR\' :\fIEqualize_(re-balance)_Window(s)\fR
The '=' (equals) key\fB forces\fR the \*(CW's \*(TD to be visible.
It also reverses any 'i' (idle tasks) and 'n' (max tasks) commands that might
be active.
The \'+' (upper case equals) key does the same for\fB all\fR windows.
The four \*(TDs will reappear, nice and even. They will also have\fB
retained\fR any customizations you had previously applied,\fI except\fR for
the 'i' (idle tasks) and 'n' (max tasks) commands.
This is the command you'll use when your screen has somehow become a mess
(hmmm, how-in-the-world-did-THAT-happen?).
.TP 7
*\ \'\fBA\fR\' :\fIAlternate_Display_Mode_toggle\fR
This command will switch between \*(FM and \*(AM.
The first time you issue this command, all four \*(TDs will be shown.
Thereafter when you switch modes, you will see only the \*(TD(s) you've
chosen to make visible.
.TP 7
*\ \'\fBa\fR\' and \'\fBw\fR\' :\fINext_Window_Forward/Backward\fR
This will change the \*(CW, which in turn changes the window to which
commands are directed.
These keys act in a circular fashion so you can reach any desired \*(CW
using either key.
Assuming the window name is visible (you have not toggled 'l' \*F),
whenever the \*(CW name loses its emphasis/color, that's a reminder
the \*(TD is \*F and many commands will be restricted.
.TP 7
*\ \'\fBG\fR\' :\fIChoose_Another_Window/Field_Group\fR
You will be prompted to enter a number between 1 and 4 designating the
window/field group which should be made the \*(CW.
In \*(FM, this command is necessary to alter the \*(CW.
In \*(AM, it is simply a less convenient alternative to the 'a' and 'w'
commands.
.TP 7
\ \ \'\fBg\fR\' :\fIChange_Window/Field_Group_Name\fR
You will be prompted for a new name to be applied to the \*(CW.
It does not require that the window name be visible
(the 'l' toggle to be \*O).
.IP "*" 3
The \*(CIs shown with an \*(AS have use beyond \*(AM.
\'=', 'A', 'G' are\fB always\fR available
\'a', 'w' act the same when\fB color mapping\fR
.\" ......................................................................
.SS 4c. EXAMPLES of Windows
.Jp
.ce
.\" .........................
.SS -*- The 'A' Mode Command Toggle -*-
.Scr
Here's what you'll see when you first invoke the \*(AM \*(CI.
This particular display was produce on a VT100 xterm, with only 24 rows.
All four \*(TDs are visible, but they could not be sized the same.
Available lines are parceled out in the fairest way possible so the last
two \*(TDs have an extra line each.
Notice the \*(CW\fB name\fR in the \*(SA \*(EM it's been emphasized because
the associated \*(TD is visible.
Since 1:Def has a \*(TA, the full range of \*(CIs would be at your disposal.
But remember, many of those commands will apply only to window 1:Def.
.Img
+\fB--------------------------------------\fR+
1:Def name is bold, |\fB1:Def\fR - 15:46:37 up 16:25, 9 users, :
thus all commands |Tasks: \fB 76\fR total, \fB 1\fR running, \fB 75\fR sle:
will be available. |Cpu(s): \fB 0.7%\fR user, \fB 1.3%\fR system, :
|Mem: \fB 126588k\fR total, \fB 123688k\fR used,:
|Swap: \fB 265032k\fR total, \fB 8232k\fR used,:
|______________________________________:
Tough luck windows |\fI1__PID_USER______PR__NI_%CPU____TIME+_\fR:
#1 & 2 - you\fB lost\fR |\fB 7343 jtwm 16 0 0.9 0:00.59\fR:\fB
one line\fR each \*(EM | 7339 jtwm 9 0 0.0 0:00.02:
guess you'll just |\fI__7337_root_______9___0__0.0___0:01.30\fR:
have to learn how |\fI2__PID__PPID_Command____________TIME+_\fR:
to live with it. |\fB 997 952 kdeinit 17:59.59\fR:
| 1115 952 kdeinit 2:16.47:
|\fI__1803__1116_led_______________1:55.30\fR:
|\fI3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_\fR:
The #3 & #4 windows | 4634 12.3 15620 0 15m 860 14m :
better not gloat | 7337 11.3 14396 92 13m 36 13m :
over 1 extra line. | 923 10.6 30524 16m 13m 1120 12m :
That user could yet |\fI___991__7.2__9492__316_9176___12_9164_\fR:
sock 'em with the |\fI4_UID_USER_____GROUP____TTY________PID\fR:
'n' command and | 43 xfs xfs ? 806:
take\fI those lines\fR, | 0 ykde users pts/7 5561:\fB
plus others\fR, away! | 0 wgnome users pts/7 5560:
| 0 root root pts/7 5325:
+\fB--------------------------------------\fR+
.Rje
.Scr
So, what say we start applying some of those "full range of \*(CIs"?
Onward + Downward...
.ce
.\" .........................
.SS -*- STACKIN' & WHACKIN' Windows -*-
.Scr
Whoa, hold on mate.
Someone has already whacked these windows.
See, there are no \*(TAs for windows 1:Def and 4:Usr.
Well, we can at least retrace their steps...
Here's what was done, after issuing the '\fBA\fR' command and entering \*(AM.
\fB1\fR) When #1\fB was\fR the \*(CW, '-' was pressed,
toggling \*F the associated \*(TD
( if 'l t m'\fI had been\fR applied to its summary, too )
( then there'll be\fI only\fR a msg line when 'current' )
\fB2\fR) Then the 'w' key was struck to cycle\fB backward\fR,
making 4:Usr the \*(CW
(could have used 'a a a', if one likes to type)
\fB3\fR) Then step #1 was repeated, and bye-bye window #4
\fB4\fR) Finally, window #2 was made the \*(CW
( Q. how many keystrokes were used? )
( A. minimum of 2: 'a a' or 'w w'. )
.Img
+\fB--------------------------------------\fR+
No 'l','t','m','1' |\fB2:Top\fR - 15:48:35 up 16:27, 9 users, :
commands have been |Tasks: \fB 75\fR total, \fB 1\fR running, \fB 74\fR sle:
issued here, |Cpu(s): \fB 2.0%\fR user, \fB 0.7%\fR system, :
but... |Mem: \fB 126588k\fR total, \fB 123712k\fR used,:
|Swap: \fB 265032k\fR total, \fB 8232k\fR used,:
|______________________________________:
#2's been changed; |\fI2__PID__PPID_Command____________TIME+_\fR:
user applied a 'c' |\fB 997 952 kdeinit: konsol 18:00.70\fR:
command (when it | 1115 952 kdeinit: konsol 2:16.47:\fB
was\fR current) - now | 1803 1116 led tiptop.HELP 1:55.30:
shows cmd\fI lines\fR vs. | 923 922 X :0 1:09.60:
program names; | 973 1 klaptopdaemon 0:59.63:
still seems to be | 981 952 /usr/bin/artsd 0:48.63:
sorted on TIME+ | 987 1 kdeinit: kdeskt 0:24.34:
though |\fI___991_____1_kdeinit:_kicker___0:04.59\fR:
|\fI3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_\fR:
This #3 guy appears | 4634 12.3 15620 0 15m 860 14m :
to still be running | 7337 11.3 14396 92 13m 36 13m :
with the supplied | 923 10.6 30544 16m 13m 1120 12m :
defaults, but no | 991 7.2 9492 316 9176 12 9164 :
telling what\fI damage\fR |\fB 7329 7.0 9036 140 8896 36 8860\fR :
might have been | 1115 6.9 8956 160 8796 36 8760 :
done to it's | 987 6.4 8668 524 8144 20 8124 :\fB
summary info\fR stuff | 1131 6.4 8268 144 8124 36 8088 :
+\fB--------------------------------------\fR+
.Rje
.Scr
And that's what brought us to this current state.
No, wait.
Oh lordy, will you look at that \*(EM someone has changed the\fB name\fR of
window #2 from 'Job' to 'Top'!
How'd they do that?
Well, they just issued the 'g' \*(CI, of course.
That command is available whenever \*(AM is active and always impacts
just the \*(CW.
Gosh, you can even issue the 'g' command when 'l' has toggled \*F the
very \*(SA line containing the window name!
Almost Done...
.ce
.\" .........................
.SS -*- ALL TOGETHER Now, Window(s) -*-
.Scr
Here, the window 1:Def \*(TD has been toggled \*F but it remains the \*(CW.
Since there is no \*(TA, many commands will be restricted.
However, the commands ('l', 't', 'm', '1') affecting the \*(SA, as
well as some other global commands ('k', 'Z', etc.), would still be active.
Notice that the\fB Mem\fR and\fB Swap\fR lines are not shown.
This means that the loser (oops, user) has, in fact, issued the 'm' command!
Now, if you were to cycle the \*(CW with the 'a' or 'w' commands, the
\*(TD would remain the same (except possibly growing/shrinking slightly)
but the \*(SA would change periodically.
The comments to the left of the image provide additional insights into how
things came to be.
Note especially the comments for window 4:Usr \*(EM the one with some
empty rows...
.Img
1:Def\fI no\fR highlight, +\fB--------------------------------------\fR+
thus disabled cmds: |1:Def - 15:50:32 up 16:29, 9 users, :
b,i,n,u,x,y, etc. |Tasks: \fB 75\fR total, \fB 2\fR running, \fB 73\fR sle:
& m = lost Mem/Swap |Cpu(s): \fB 10.6%\fR user, \fB 0.0%\fR system, :
|______________________________________:
2:Job was very busy: |\fI2__PID__PPID_Command____________TIME+_\fR:
'n' cmd, w/ 7 tasks | 80 1\fB ( khubd ) \fR 0:00.00:
'c' cmd, cmd line | 6 0\fB ( kreclaimd ) \fR 0:00.00:
'O' cmd, sort cmd | 9 1\fB ( mdrecoveryd )\fR 0:00.00:
'R' cmd, sort bkwd | 11358 1\fB /bin/bash/ /usr\fR 0:00.00:
'x' cmd, hi column | 1297 1\fB /sbin/mingetty \fR 0:00.00:
(when 2\fB WAS\fR current) | 683 1\fB xinetd -stayali\fR 0:00.00:
|\fI___836_____1_\fBlogin_--_root\fI_____0:00.00\fR:
3:Mem has altered |\fI3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_\fR:
some std defaults: | 4634\fB 12.3\fR 15620 0 15m 860 14m :
'y' turned Off | 7337\fB 11.3\fR 14396 92 13m 36 13m :
'x' turned On | 923\fB 10.6\fR 30544 16m 13m 1120 12m :
(when 3\fB WAS\fR current) | 991\fB 7.2\fR 9492 316 9176 12 9164 :
|\fI__7329__\fB7.0\fI__9036__140_8896___36_8860_\fR:
Huh? 4:Usr has some |\fI4_UID_USER_____GROUP____TTY________PID\fR:
\fBblank rows\fR! ? ? ? ? | \fB 0 jtwm root pts/2 5561\fR:
Aha, the 'i' command | \fB 0 root root ? 5560\fR:
applied (when 4\fB WAS\fR | :
current); could be | :
reversed with '=', | :
when 4\fB IS\fR current! +\fB--------------------------------------\fR+
.Rje
.Scr
Ok now, how about that \*(CW 1:Def and its\fB unseen tasks\fR?
At any time, you can quickly\fB retrieve\fR lost tasks in a number of ways:
1) Press '-', toggling just the \*(CW
2) Press '_', toggling\fB all\fR visible/invisible windows
( 1:Def is the\fI only\fR window currently\fB not shown\fR )
( afterward, it'll be the\fI only\fR window\fB showing\fR! )
* 3) Press '+', forcing all \*(TDs to become\fB visible\fR
4) Press 'A' to return to \*(FM,
with\fI only\fR 1:Def tasks shown and\fI without\fR a window name
Now that should be enough ways of getting a \*(TA\fB visible\fR again
to satisfy almost any user, don't ya think?
.in +4
\*(NT Use #3 above when you've messed up your screen beyond redemption.
The four \*(TDs will reappear, nice and even. They will also have\fB
retained\fR any customizations you had previously applied,\fI except\fR for
the 'i' (idle tasks) and 'n' (max tasks) commands.
.in
That's It !\ \ Piece of Cake !!\ \ Enjoy them there windows !!!\fR
.Zzz
.\" ----------------------------------------------------------------------
.SH 5. FILES
.\" ----------------------------------------------------------------------
.\" ......................................................................
.SS 5a. SYSTEM Configuration File
The presence of this file will influence which version of the 'help' screen
is shown to an ordinary user.
More importantly, it will\fI limit\fR what ordinary users are allowed
to do when \*(Me is running.
They will\fB not\fR be able to issue the following commands (well, at least
not successfully, ha ha):
\fBk Kill\fR a task
\fBr Renice\fR a task
\fBd\fR or\fB s\fR Change\fB delay/sleep\fR interval
The system \*(CF is\fB not\fR created by \*(Me.
Rather,\fB you create this file manually\fR and place it in the \fI/etc\fR
directory.
Its name must be 'toprc' and must have\fI no\fR leading '.' (period).
It must have only\fI two lines\fR.
Here is an example of the contents of\fI /etc/toprc\fR:
\fBs\fR # line 1: 'secure' mode switch
\fB5.0\fR # line 2: 'delay'\ \ interval in seconds
.\" ......................................................................
.SS 5b. PERSONAL Configuration File
This file, written as '$HOME/\fI.your-name-4-top\fR' + '\fBrc\fR',
is eminently editable due to the numerous labels it contains.
But please don't!
Rather, use the 'W' \*(CI to create it or update it.
For the benefit of those who never follow such advise, here is the
general layout.
\fBglobal\fR # line 1: a shameless advertisement
\fR " \fR # line 2: id,altscr,irixps,delay,curwin
\fBper ea\fR # line a: winname,fieldscur
\fBwindow\fR # line b: winflags,sortindx,maxtasks
\fR " \fR # line c: summclr,msgsclr,headclr,taskclr
( and good luck with those winflags on line #b! )
If the $HOME variable is not present, \*(US will try to write the
personal \*(CF to the current directory, subject to permissions.
.\" ----------------------------------------------------------------------
.SH 6. STUPID TRICKS Sampler
.\" ----------------------------------------------------------------------
With this task/process viewer, lots of things become\fB possible\fR.
Of course, that doesn't mean they should become\fB probable\fR.
So if you try any of them, just don't let anyone catch you.
Many of these 'tricks' work best when you give ol' \*(Me a scheduling boost
\*(EM so plan on starting him with a nice value of -10 (assuming you've got
the authority).
.\" ......................................................................
.SS 6a. Kernel Magic
.\" sorry, just can't help it -- don't ya love the sound of this?
For these stupid tricks, \*(Me needs \*(FM.
.\" ( apparently static was a potential concern )
.New
The user interface, through prompts and help, intentionally implies
that the delay interval is limited to tenths of a second.
However, you're free to set any desired delay.
If you want to see Linux at his scheduling best, try a delay of .09
seconds or less.
For this experiment, under x-windows open an xterm and maximize it.
Then do the following:
. provide a scheduling boost and tiny delay via:
nice -n -10 top -d.09
. keep sorted column highlighting \*F to minimize
path length
. turn \*O reverse row highlighting for emphasis
. try various sort columns (TIME/MEM work well),
and normal or reverse sorts to bring the most
active processes into view
What you'll see is a\fB very busy Linux\fR doing what he's always done
for you, but there was no program available to illustrate this (until now).
.Rjb 2
( now please, don't waste too many )
( \*(Pu cycles in this way, alright? )
.Rje
.New
Under an xterm using 'white-on-black' colors, try setting \*(Me's task color
to black and be sure that task highlighting is set to bold, not reverse.
Then set the delay interval to around .3 seconds.
After bringing the most active processes into view, what you'll see are
the\fB ghostly images\fR of just the currently running tasks.
Of course, a much better display is achieved by toggling idle processes \*F
and using normal/visible colors.
.\" ......................................................................
.SS 6b. Bouncing Windows
For these stupid tricks, \*(Me needs \*(AM.
.New
With 3 or 4 \*(TDs visible, pick any window other than the last
and turn idle processes \*F. <20>
Depending on where you applied 'i', sometimes several \*(TDs are\fB bouncing\fR
and sometimes it's like an\fB accordion\fR, as \*(Me tries his best to
allocate space.
.New
Set each window's summary lines differently: one with no memory; another with
no states; maybe one with nothing at all, just the message line. <20>
Then hold down 'a' or 'w' and watch a variation on bouncing windows.
What say we call these '\fBhopping windows\fR'.
.New
Display all 4 windows and for each, in turn, set idle processes to \*F.
You've just entered the "\fBextreme bounce\fR" zone. <20>
.\" ......................................................................
.SS 6c. The Big Bird Window
This stupid trick also requires \*(AM.
.New
Display all 4 windows and make sure that 1:Def is the \*(CW.
Then, keep increasing window size until the all the other \*(TDs
are "\fBpushed out of the nest\fR".
When they've all been displaced, toggle between all visible/invisible windows.
Then ponder this:
.br
is \*(Me fibbing or telling honestly your imposed truth?
.\" ----------------------------------------------------------------------
.SH 7. NOTES and Rantings
.\" ----------------------------------------------------------------------
.\" ......................................................................
.SS 7a. The top Binary
.PP
To whom it may (should) concern: \*(Us, even with its vastly expanded
capabilities, is only slightly larger than the old top.
Were it not for extensive help text and additional sort callbacks, it would
be smaller.
.Rjb 6
Throw source carelessly at objectives, it\fI will\fR
produce equally careless machine instructions.
example: (num_\fBpages\fR - an_\fBaddress\fR)/1024 == duh?
kicker: \fBdocument\fR result as broken, due to\fB elf\fR!
\fB----------------------------------------------\fR
I know you're out there, are you getting this?
.Rje
.PP
Now, as for all those new capabilities like colors and windows and
highlighting, you'd expect \*(Us to be the "mother of all pigs"
compared to old \*(Me \*(EM right?
Yea, with \*(US expect following piglets:
.br
\ \. A\fI smaller\fR virtual image and resident footprint
.br
\ \. Slightly\fI fewer\fR major page faults
.br
\ \. A\fI large reduction\fR in minor page faults for SMP
.br
\ \. The\fI same\fR or better response time
.br
\ \. The same or\fI even less\fR \*(PU costs
Ideally any comparison of the old and new \*(Me should be against the same
libproc format (32-bit or 64-bit tics) and run in a true or simulated SMP
environment (producing separate \*(PU stats).
This latter requirement will coax old \*(Me into handling his own '/proc/stat'
access \*(EM something \*(Us always does, but with less cost.
.\" ......................................................................
.SS 7b. Comparing Performance
.PP
Even with equivalent libraries and '/proc/stat' access, it's difficult to
accurately compare tops using their \fBown displays\fR.
Results for these \*(Pu\-intensive programs (who frequently exceed their
time-slice) generally show a wide disparity in %CPU.
This is due to differing call patterns, kernel preemptions and the timing
of process snapshots.
For\fI slightly\fR better results, start each program with the following
commands:
./old-top -d 0.5
nice -n-10 ./new-top -d 0.4
While actually putting \*(Us at a performance disadvantage, the higher
scheduling priority and staggered timing will\fI periodically\fR yield
a somewhat truer picture.
You could even reverse those roles and get similar results.
The most\fI consistent\fR performance results will be obtained 'off-line',
using your shell's time pipe or the time program itself.
And even in a single processor environment or without equivalent libraries,
total cpu costs (user time + system time) are similar.
However, \*(Us's \*(Pu costs ARE influenced by the capabilities you choose
to exploit, even if they don't SEEM to be reflected in such timings.
So let's examine some...
.\" ......................................................................
.SS 7c. Cost of Stuff
.TP 3
.B Colors Cost\fR \*(EM Nada (almost).
Once the terminfo strings are built (\fIat\fR and\fI during\fR a user's behest)
they are SAVED with each window's stuff.
And while there will be extra tty escape sequences transmitted because
of colors, it makes no difference which 'char *' is actually used.
.TP 3
.B Highlighting Cost\fR \*(EM Nada (maybe), or blame it on Rio.
On second thought, let's blame it on the user.
For\fI row\fR highlighting, there is only the cost of those extra tty
escape sequences (same as for colors).
For\fI column\fR highlighting, there is a fairly\fB significant cost\fR
associated with column transition management combined with even more
tty output.
These increased costs are incurred on every \*(TD row.
Sooo... hey USER \*(EM \fIdo NOT highlight COLUMNS\fR.
You shouldn't need a constant visual reminder of your chosen sort field.
However, if you forget which field \*(Me is sorting it can serve as a
quick visual reminder.
.TP 3
.B Windows Cost\fR \*(EM Nada (if just 1 window).
If more than 1 window, almost certainly NOT Nada so blame it on reality.
Colors are not an issue, but those sort fields are.
If we could trust the user to always select the same 'c' state, 'S' state and
sort field (hey, why ya got multiple windows then user, huh?) AND if we can
trust someone to recompile \*(Me with a #define enabled, then we\fB could\fR
achieve 'Nada'.
Ok, not likely, so we're gonna' be doing multiple sorts.
BUT, it may not be as bad as it sounds.
Those sorts involve\fB pointers only\fR.
And,\fI that's as good as it gets\fR\ !\ \ (right Mr. N?)
.\" ......................................................................
.SS 7d. The top Sources
.TP 3
.B top.h\fR
Unlike his predecessor, \*(Us has a proper header file.
It contains ONLY declarations, NOT definitions.
And there are several conditionals present to help with further customizations
and experimentation.
All are \*F by default.
.TP 3
.B top.c\fR
Hopefully proves that source code needn't be a disorganized, misaligned MESS.
And, WHO says a source listing shouldn't occasionally make you SMILE?
Why, \*(Me.c even does a darn good job of following the suggestions in a
document hardly anybody seems to observe.
.Rjb 3
\fRthe\fB Linus Torvalds CodingStyle\fR guidelines ...
\fR-*- -*- -*- on indentation + etc. -*- -*- -*-\fR
\fRwell\fB almost all\fR, except for those\fB stinkin'\fR...
.Rje
.P
I suppose even Linus Torvalds is entitled to err now and again.
How so you say?
Tabs, me' bucko,\fB stinkin' tabs\fR!
That, plus the simplistic position regarding\fB indentation\fR espoused
in that otherwise excellent document.
.\" ......................................................................
.SS -*- Rant On, and on -*-
Let's compare two approaches to the tab/indentation issue with a small
code sample using tabs then spaces.
This snippet happens to be the key to \*(Me's use of\fB dynamic\fR colors
on many\fB static\fR screens, while also ensuring screen width isn't
exceeded so as to avoid line wraps.
We'll view just the first 40 columns, assuming one wishes to occasionally
provide\fI comments\fR to the right of actual code (you\fB do\fR, don't you?).
Then YOU decide which approach makes the most SENSE!
.ImgC
.B Stinkin' Tabs\fR versus\fB Spaces\fR: the Linus way
Hey, where'd my +\fB----\fR+\fB----\fR1\fB----\fR+\fB----\fR2\fB----\fR+\fB----\fR3\fB----\fR+\fB----\fR4+
many\fB code\fR lines | while (*sub_beg) { :
up-and-gone-to? | switch (*sub_end:
| case 0: :
Gosh, wonder if | \e Tabs Induced / :
Linus expects a | case 1: :
fellow to stick | +\fB WASTE-Lands\fR! + case 5: :
his\fB comments\fR on | :
the\fB left\fR side?! | + Not a Living + :
| :
Ever see source | +\fB line-of-code\fR + :
with\fI not enough\fR | :
whitespace; and | / To Be Found! \e :
this is\fB better\fR? | default::
| :
Oh\fI lookie here\fR, \e } :
there's just a\fB hint\fR of\fI REAL\fB code! ----> if (0 >= room) b\fR:
/ } /* end: while 'subtrin:
+\fB----------------------------------------\fR+
.Rje
.ImgC
.B Spaces\fR versus\fB Stinkin' Tabs\fR: the other way
+\fB----\fR+\fB----\fR1\fB----\fR+\fB----\fR2\fB----\fR+\fB----\fR3\fB----\fR+\fB----\fR4+
Wow, now\fB this\fR is | while (*sub_beg) { :\fB
Visible\fR hackin'! | switch (*sub_end) { :
| case 0: :
Hmmm, wonder\fB how\fR | *(sub_end + 1) = '\e0'; :\fB
many\fR programmers | case 1: case 2: case 3: case:\fB
read\fR those lines | case 5: case 6: case 7: case:
from the\fB LEFT\fR to | cap = Curwin->captab[(int:
the\fB RIGHT\fR? This | *sub_end = '\e0'; :
"innovation" may | printf("%s%.*s%s", cap, r:\fI
possibly benefit\fR | room -= (sub_end - sub_be:
those particular | sub_beg = ++sub_end; :
kinds of people, | break; :
you agree? Duh! | default: :
| ++sub_end; :
AND, there\fI might\fR | } :
even be room for | if (0 >= room) break; :
unseen\fB comments\fR! | } /* end: while 'subtrings' */ :
+\fB----------------------------------------\fR+
.Rje
.PP
.B Gosh, I just don't KNOW \*(EM\fB it's such a TOUGH choice...
Oh you\fB Stinkin' Tabs\fR:\ \ correspondence, Who-Cares; documentation,
Oh-Alright; even scripts, Well-If-You-Must.
But you have NO place within the\fB code-space\fR of MY C-source
listing!
So\fB be gone\fR already!!
.\" ......................................................................
.SS In Summation...
.Jbu
If you want to use tabs to the\fB right\fR of the\fB code\fR, go-for-it.
But PLEASE, not ever in the C-source\fB code-space\fR, thank-you-kindly.
Just use\fB three little ol' spaces\fR (exactly 3, no-more, no-less)
where you WOULD have stuck a stinkin' tab.
We'll get far more READABLE files, much less WAISTED precious horizontal space,
more consistent CURSORS and on, and ON, AND ON!
Plus, without those awful *the-devil's-own-handiwork*, the
aforementioned document need NEVER speak of their EVILS again.
.Jbu
Lastly, since SPACES (not stinkin' tabs) are SO beneficial, maybe
we should use just a\fB few more\fR of 'em.
Some of those C-thingies are VERY sensitive \*(EM they don't like being TOUCHED
by any other syntax element!
Which ones?
Why these guys:
\fBbraces\fR, \fBreserved words\fR and\fB binary operators\fR
( it's the TRUTH, they told me themselves )
.Jp
It's so EASY to keep 'em HAPPY!
And lo-and-behold, the combination of <\fBsp\fR>thingy<\fBsp\fR> turns out
to be a darn effective\fB bug repellent\fR, too.
So much so, one can actually code while TOTALLY NUDE yet still avoid
them ol' bug-bytes (sic-sic)!
.Rjb 5
step
down_from
me_punctilious
soap-box_once_again
[1 +5 +5 +5 = huh?]
.Rje
.\" ----------------------------------------------------------------------
.SH 8. BUGS
.\" ----------------------------------------------------------------------
Bugs? What bugs? But, if ever there were, then...
Please send bug reports to:
Albert D\. Cahalan, <albert@users.sf.net>
[ thanks Albert, heaven forbid author should be bothered ]
.\" ----------------------------------------------------------------------
.SH 9. HISTORY Former top
.\" ----------------------------------------------------------------------
The original top was written by Roger Binns,
based on Branko Lankester's <lankeste@fwi.uva.nl> ps program.
Robert Nation <nation@rocket.sanders.lockheed.com>
adapted it for the proc file system.
Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de>
added support for configurable fields.
Plus many other individuals contributed over the years.
.\" ----------------------------------------------------------------------
.SH 10. AUTHOR
.\" ----------------------------------------------------------------------
This entirely new and enhanced replacement was written by:
Jim / James C. Warner, <warnerjc@worldnet.att.net>
.ig
( as a means to learn Linux, can you believe it? )
( & he accidentally learned a little groff, too! )
..
With invaluable help from:
Craig Small, <csmall@small.dropbear.id.au>
Albert D\. Cahalan, <albert@users.sf.net>
.ig
.rj 2
.B -*-\fR few though they are, some yet believe\fB -*-\fR
.B -*-\~\~\~\~\~\~\~\fRin-the-\fBart\fR-of-programming\~\~\~\~\~\~\~\fB-*-\fR
..
.\" ----------------------------------------------------------------------
.SH 11. SEE ALSO
.\" ----------------------------------------------------------------------
.BR free (1),
.BR ps (1),
.BR uptime (1),
.BR vmstat (8),
.BR w (1).
.\" ----------------------------------------------------------------------
.ig CCend
.rj 1
\-*-
.PD
.in -3
Copyright (c) 2002 \*(EM JC Warner & Associates, Ltd.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation;
with no Front-Cover Texts, no Back-Cover Texts, and with the following
Invariant Sections and any sub-sections therein:
.na
.hy 0
.in +3
DIFFERENCES\ /\ New Features;
.br
STUPID\ TRICKS\ Sampler;
.br
NOTES\ and\ Rantings;
.br
AUTHOR
.in
A copy of the license is included in the section entitled
\(dqGNU Free Documentation License\(dq.
.CCend
.
.\" end: active doc ||||||||||||||||||||||||||||||||||||||||||||||||||
.\" ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.ig GFDLend
.\" ----------------------------------------------------------------------
.SH GNU Free Documentation License
Version 1.1, March 2000
Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
.SS 0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
.SS 1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The "Document", below, refers to any
such manual or work. Any member of the public is a licensee, and is
addressed as "you".
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is
not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML designed for human modification. Opaque formats include
PostScript, PDF, proprietary formats that can be read and edited only
by proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML produced by some word processors for output
purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
.SS 2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
.SS 3. COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
.SS 4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
.HP 3
.B A\fR.\ Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions (which should,
if there were any, be listed in the History section of the Document).
You may use the same title as a previous version if the original publisher of
that version gives permission.
.HP 3
.B B\fR.\ List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified Version,
together with at least five of the principal authors of the Document
(all of its principal authors, if it has less than five).
.HP 3
.B C\fR.\ State on the Title page the name of the publisher of the Modified
Version, as the publisher.
.HP 3
.B D\fR.\ Preserve all the copyright notices of the Document.
.HP 3
.B E\fR.\ Add an appropriate copyright notice for your modifications adjacent
to the other copyright notices.
.HP 3
.B F\fR.\ Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the terms of
this License, in the form shown in the Addendum below.
.HP 3
.B G\fR.\ Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
.HP 3
.B H\fR.\ Include an unaltered copy of this License.
.HP 3
.B I\fR.\ Preserve the section entitled "History", and its title, and add to it
an item stating at least the title, year, new authors, and publisher of the
Modified Version as given on the Title Page.
If there is no section entitled "History" in the Document, create one stating
the title, year, authors, and publisher of the Document as given on its Title
Page, then add an item describing the Modified Version as stated in the
previous sentence.
.HP 3
.B J\fR.\ Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was based on.
These may be placed in the "History" section.
You may omit a network location for a work that was published at least four
years before the Document itself, or if the original publisher of the version
it refers to gives permission.
.HP 3
.B K\fR.\ In any section entitled "Acknowledgements" or "Dedications", preserve
the section's title, and preserve in the section all the substance and tone of
each of the contributor acknowledgements and/or dedications given therein.
.HP 3
.B L\fR.\ Preserve all the Invariant Sections of the Document, unaltered in their
text and in their titles.
Section numbers or the equivalent are not considered part of the section titles.
.HP 3
.B M\fR.\ Delete any section entitled "Endorsements".
Such a section may not be included in the Modified Version.
.HP 3
.B N\fR.\ Do not retitle any existing section as "Endorsements" or to conflict
in title with any Invariant Section.
.PP
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
.SS 5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections entitled "History"
in the various original documents, forming one section entitled
"History"; likewise combine any sections entitled "Acknowledgements",
and any sections entitled "Dedications". You must delete all sections
entitled "Endorsements."
.SS 6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
.SS 7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version
of the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an "aggregate", and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they
are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate.
Otherwise they must appear on covers around the whole aggregate.
.SS 8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License provided that you also include the
original English version of this License. In case of a disagreement
between the translation and the original English version of this
License, the original English version will prevail.
.SS 9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
.SS 10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
.SS ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
.IP "" 3
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.1 or any later version
published by the Free Software Foundation;\ \ with the Invariant Sections being
LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the
Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have no Invariant Sections, write "with no Invariant Sections"
instead of saying which ones are invariant. If you have no
Front-Cover Texts, write "no Front-Cover Texts" instead of
"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
.\" ----------------------------------------------------------------------
.SH \fRend of\fB GNU Free Documentation License
.IP ""
.PP
.GFDLend
.\" end: gfdl license ||||||||||||||||||||||||||||||||||||||||||||||||
.\" ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||