128 lines
5.4 KiB
Plaintext
128 lines
5.4 KiB
Plaintext
From: jrs@world.std.com (Rick Sladkey)
|
|
Message-ID: <JRS.93Nov29181625@lepton.world.std.com>
|
|
Date: Mon, 29 Nov 1993 23:16:25 GMT
|
|
Organization: The Internet
|
|
Newsgroups: comp.os.linux.announce
|
|
Subject: new kmem-ps suite for Linux 0.99.14
|
|
Keywords: kmem, ps, w, fstat, uptime, memmap, top, fuser, kprof, clrprof, free
|
|
Summary: new version of kmem-ps programs with some new features
|
|
|
|
I have uploaded a new version of the kmem-ps suite of programs updated
|
|
for Linux 0.99.14 to sunsite. The name of the file is:
|
|
|
|
sunsite.unc.edu:/pub/Linux/Incoming/kmem-ps-0.99.14.tar.gz
|
|
|
|
Here is the NEWS file.
|
|
-----
|
|
This is the kmem-ps suite of programs updated for Linux 0.99.14.
|
|
The programs included are: ps, fstat, fuser, free, memmap, tload,
|
|
top, w, uptime, clrprof, and kprof. Branko Lankester wrote almost
|
|
all of the programs. I am making this interim release with his
|
|
permission.
|
|
|
|
You should probably be using the proc-ps suite instead because the
|
|
procfs support code is updated automatically with each new kernel
|
|
release. When you use kmem-ps, there is a good chance it will need
|
|
a minor update when a new kernel is released.
|
|
|
|
Here is a short feature comparison:
|
|
|
|
feature kmem-ps proc-ps
|
|
------- ------- -------
|
|
speed fast slow
|
|
elegance weak strong
|
|
convenience poor excellent
|
|
kernel bloat none some
|
|
|
|
However, if you (like me) are irrationally attracted to the kmem-ps,
|
|
then this package is for you.
|
|
|
|
In addition to the minor updating needed for Linux 0.99.14 (about 10 lines
|
|
of code), I added two major new features and made some other minor changes.
|
|
|
|
* I have "bitten the bullet" and extended the tty fields to 7 characters
|
|
wide. Now tty names are printed in their entirety and they are computed
|
|
dynamically instead of being compiled into ps. This means if you want
|
|
to call your serial ports /dev/tty00, etc., ps will use that name. It
|
|
also means that ttys don't need to be named /dev/ttyXX and /dev/console
|
|
is no longer magic. The only down-side is that room for the command line
|
|
has been reduced by 5 characters.
|
|
|
|
* I added a new tree-like output format using the option `f' (for forest).
|
|
For example, here is the output of `ps fx' as I write this.
|
|
|
|
PID TTY STAT TIME COMMAND
|
|
59 tty1 Is 0:00 -bash (bash)
|
|
71 tty1 I+ 0:03 \_ kermit
|
|
308 tty1 I+ 0:03 \_ kermit
|
|
60 tty2 Is 0:03 -bash (bash)
|
|
296 tty2 T 0:02 \_ vile ps.1
|
|
305 tty2 S+ 0:57 \_ vile NEWS
|
|
313 tty2 R+ 0:00 \_ ps fx
|
|
314 tty2 Z+ 0:00 \_ <defunct>
|
|
61 tty3 Is+ 0:00 -bash (bash)
|
|
77 tty2 I 0:00 xinit /home/jrs/.xinitrc --
|
|
79 ? I 0:49 \_ X :0
|
|
81 tty2 I 0:00 \_ sh /home/jrs/.xinitrc
|
|
86 tty2 I 0:04 \_ olvwm
|
|
99 tty2 I 0:00 \_ xterm -name XTerm2 -geometry 80x32
|
|
100 ttyp1 Is+ 0:00 | \_ bash
|
|
121 tty2 I 0:00 \_ xterm -name XTerm3 -geometry 80x32
|
|
122 ttyp2 Is+ 0:00 \_ bash
|
|
98 ? I 0:36 emacs
|
|
|
|
The new option works with any of the other output formats as well.
|
|
The sorting presents an interesting programming problem. My method
|
|
of assembling the processes into a forest of trees uses an efficient
|
|
O(n log n) algorithm. I experimented with several presentation
|
|
formats and stumbled across this one. I think it conveys a great
|
|
deal of extra information with a minimum of clutter.
|
|
|
|
Other new features:
|
|
|
|
* The package now conforms to the draft filesystem standards. For example,
|
|
the program `ps' now goes in `/bin' and most of the others go in `/usr/bin'.
|
|
|
|
* I changed the presentation of `top' quite a bit. I think you'll like it.
|
|
|
|
* I added a quick help summary for all those inscrutable options with `ps H'.
|
|
|
|
usage: ps 0acefhHjlmnprsStuUvwxXy [t tty] [pid[,pid]...]
|
|
|
|
j -- job control format, l -- long format, m -- memory format,
|
|
s -- signal format, u -- user format, v -- virtual memory format,
|
|
X -- register format, y -- syscall format, default -- short format
|
|
|
|
0 -- include task zero, a -- include processes for all users
|
|
c -- print only command name, e -- show env vars, f -- print forest of procs
|
|
h -- suppress the header, n -- print the user and wchan fields numerically
|
|
p -- print counts in pages, r -- restrict listing to runnable processes
|
|
S -- summarize usage for children in CPU time and page fault fields
|
|
t tty -- show all proccesses with TTY as their controlling terminal
|
|
w -- wide: 132, ww -- 264, www -- unlimited, default -- screen width or 80
|
|
x -- include processes without a controlling terminal
|
|
U [SYSTEM-PATH [SWAP-PATH]] -- update ps database
|
|
|
|
STATUS key: R -- running, S -- sleeping, I -- idle, D -- uninterruptible,
|
|
Z -- zombie, T -- stopped, P -- paging, W -- swapped out, < -- high priority,
|
|
N -- niced, X -- debugged, x -- traced, s -- session leader, + -- foreground
|
|
|
|
SIGNAL key: P -- pending, B -- blocked, I -- ignored, C -- caught
|
|
|
|
* I am experimenting with a new signal format that looks like:
|
|
|
|
V
|
|
T W
|
|
Q T KUSUPAT CCSTTT XXAPI
|
|
HIUIRIBFISESILE HOTSTT CFLRN P
|
|
UNILAOUPLRGRPRR LNOTIOIPSROC W
|
|
PTTLPTSEL1V2EMM DTPPNUOUZMFH R
|
|
UID PID 12345678901234567890123456789012 STAT TTY TIME COMMAND
|
|
0 79 CC.C. .C.CC I C . . II.CC . . . I ? 0:49 X :0
|
|
|
|
This makes it a lot easier to see which signals are which.
|
|
|
|
* Several minor bug fixes.
|
|
|
|
Rick Sladkey <jrs@world.std.com>
|