646 lines
29 KiB
Plaintext
646 lines
29 KiB
Plaintext
NEWS: what has changed recently with procps, in reverse cronological order.
|
|
Please send bug reports to acahalan@cs.uml.edu
|
|
|
|
*** THIS FILE DOES NOT INCLUDE RECENT CHANGES ***
|
|
|
|
|
|
NEWS for version 2.0.7 of procps
|
|
|
|
SMP support has been added to top. This adds one line to the screen
|
|
for every processor. There is also an (off by default) field to show
|
|
the last processor that a process used that replaced the long-dead
|
|
LIB field. Please send feedback, positive and negative, on these
|
|
changes to procps-bugs@redhat.com
|
|
|
|
The libproc soname has changed to 2.0.7 because of a structure
|
|
change required to add SMP support.
|
|
|
|
Two programs inspired by Solaris's /usr/proc/bin collection have
|
|
been added: pgrep and pkill. By default, for FSSTND/FHS/LSB compliance,
|
|
these are installed in /usr/bin; if you want, you can change PROCDIR
|
|
in Makefile to move them. You can also make a symlink from
|
|
/usr/proc/bin to /usr/bin if you like.
|
|
|
|
The Makefiles have been sanitized a bit more; they are now less messy
|
|
than they were. There is less duplication between the Makefiles now.
|
|
|
|
The man pages that use tables have been fixed to work work broken
|
|
versions of man.
|
|
|
|
The old wmconfig file (specific to Red Hat) has been replaced with a
|
|
desktop file (common across GNOME and KDE).
|
|
|
|
sysctl returns an error code in a condition in which it didn't before,
|
|
and handles EOF correctly.
|
|
|
|
top now only loads System.map when it is actually going to make use
|
|
of it.
|
|
|
|
vmstat has its buffer size increased and handles page size dynamically.
|
|
|
|
w has its year display fixed to show the year 2000 as 00 instead of 0,
|
|
and to try harder to find a process to display.
|
|
|
|
watch has a fix for ncurses in recent versions of glibc, and expands
|
|
tabs so that they display correctly.
|
|
|
|
libproc tries to get the default page size from the system header
|
|
files, but still has a fallback. It also has been extended to allow
|
|
applications to handle their own error reporting in some important
|
|
cases. The pwcache has been expanded in size to correctly handle
|
|
user names longer than 8 characters. It has been expanded to
|
|
provide the lproc field that shows up as top's LC field. A segfault
|
|
when /proc is not mounted was fixed. Missing files will cause
|
|
applications to exit with an error code instead of good exit code.
|
|
A warning when libproc cannot calculate the HZ value (probably due
|
|
to a kernel bug) has been supressed by default because it broke
|
|
people's scripts unnecessarily. A 64-bit memory size reading
|
|
bug was fixed (/proc/meminfo was read incorrectly).
|
|
|
|
A couple of error messages in ps had newlines added to them. ps
|
|
only opens System.map when it is going to make use of it. The
|
|
full-page error message has been replaced with a shorter usage
|
|
message; the full-page command summary is available with --help,
|
|
and the usage message tells about --help; the full-page summary
|
|
is now no longer an error message and so it is sent to stdout
|
|
insteada of stderr. Processes with run times longer than a day
|
|
now have their runtime displayed correctly. ruser output was fixed.
|
|
An attempt was made to support one more piece of BSD syntax in the
|
|
command line arguments, where pids can follow options with no
|
|
intervening space. The ps man page was made a bit more
|
|
internally consistent and typos fixed. Fixed a segfault when the
|
|
PS_FORMAT environment variable was set wrong.
|
|
|
|
|
|
NEWS for version 2.0.6 of procps
|
|
|
|
Support for large-memory systems has been added.
|
|
|
|
LIBVERSION has been incremented because of an incompatible change
|
|
in the libproc interface, necessitated by the large-memory support.
|
|
|
|
A little more error checking in device idle time calculations.
|
|
|
|
Fixed an almost-impossible file descriptor leak in libproc that
|
|
occasionally showed up in long-running top sessions.
|
|
|
|
The fix for top no longer depending on NR_TASKS in 2.0.5 was
|
|
broken; top would die with more than 204 tasks. This has been
|
|
fixed.
|
|
|
|
|
|
NEWS for version 2.0.5 of procps
|
|
|
|
procps can build against the 2.3.18 kernel source; top no longer
|
|
depends on NR_TASKS.
|
|
|
|
sysctl no longer segfaults with -A; has a few parsing fixes
|
|
|
|
|
|
NEWS for version 2.0.4 of procps
|
|
|
|
sysctl can save/restore settings using /etc/sysctl.conf file
|
|
|
|
top has -p option and N and A commands.
|
|
|
|
vmstat doesn't mind interrupt counter overflow on long-running machines
|
|
|
|
ps can now sort by PCPU.
|
|
|
|
|
|
NEWS for version 2.0.3 of procps
|
|
|
|
Time calculations fixed (or at least improved...) for SMP machines.
|
|
In particular, hertz is calculated correctly.
|
|
|
|
ps doesn't mind terminal resizing happening while it runs.
|
|
|
|
sysctl is a nifty new program! Try it! Carefully! :-)
|
|
|
|
w PCPU and WHAT output fixed.
|
|
|
|
top batch mode now works without a tty (for instance, via rsh).
|
|
|
|
new version of watch has a few new features like --differences.
|
|
|
|
sessreg removed; it belongs where it has been for a long time, in X.
|
|
|
|
|
|
NEWS for version 2.0.2 of procps
|
|
|
|
Removed xproc entirely; the only thing left there was XConsole, which
|
|
was equivalent to xconsole -file /proc/kmsg. Added an XConsole shell
|
|
script which does
|
|
exec xconsole -file /proc/kmsg "$@"
|
|
so that folks who depend on XConsole won't be left behind. This also
|
|
fixes the bug that XConsole effectively removed limitations on which
|
|
users were allowed to read /proc/kmsg without root having much choice
|
|
in the matter other than to remove XConsole...
|
|
|
|
Removed unused psupdate code (still available as part of procps-1.2.x
|
|
for anyone who wants to play with it).
|
|
|
|
Removed sessreg, as it is included in XFree86 and there is no reason
|
|
for the duplication.
|
|
|
|
Fixed version number generation so that it happens in one place. I'm
|
|
tired of releasing versions that misreport their version number...
|
|
|
|
|
|
NEWS for version 2.0.1 of procps
|
|
|
|
Reverted my changes that had broken Albert's Unix98 compliance.
|
|
|
|
Major bugs fixed:
|
|
o ps now returns failure for "ps <non-existant-pid>"
|
|
o ps h has reverted to old linux behaviour except in BSD personality;
|
|
--headers and --no-headers long options have been added
|
|
o watch buffer overrun fixed (no, not a security hole).
|
|
|
|
top has -b and -n options added.
|
|
|
|
|
|
NEWS for version 2.0 of procps
|
|
|
|
Thanks to Albert Cahalan for his rewrite of ps, and for making
|
|
the time for new development of ps that I just didn't have. His
|
|
research into how ps worked on lots of different UNIX systems
|
|
really made this version much more usable for a lot of people.
|
|
|
|
Read ALL of Albert's comments regarding his 1.9.0 release. If
|
|
you do not, you may be surprised when scripts fail. I've tried
|
|
to prepare people for the worst of this by giving out the much-detested
|
|
warning: `-' deprecated; use `ps aux', not `ps -aux'
|
|
message for roughly a year and a half.
|
|
|
|
|
|
NEWS for version 1.9.0 of procps
|
|
|
|
The ps command now supports simultaneous BSD and Unix98 syntax.
|
|
There have been many other changes in ps. (complete rewrite)
|
|
|
|
Red Hat users should check /etc/sysconfig/network-scripts/ifdown-ppp
|
|
for the bogus command "ps aul" and change it to "ps axl".
|
|
|
|
Scripts that make assumptions about character position are and
|
|
were broken because fields may overflow. Scripts should parse by
|
|
whitespace and use -o to get the best results. Command names for
|
|
swapped out processes are now shown in square brackets instead of
|
|
parentheses, as required by the Unix98 standard. This problem can
|
|
be avoided entirely by using a SysV format without -f, using the
|
|
BSD "c" option, or using the format specifier "comm" with -o.
|
|
|
|
Some uses of ps in /etc/rc.d/init.d/functions should probably
|
|
eventually be changed to stuff somewhat like the following, which
|
|
would eliminate the need for awk:
|
|
|
|
PS_PERSONALITY=linux dead=`ps -p $pid -o pid=`
|
|
PS_PERSONALITY=linux echo -n `ps -C $1 -o pid=`
|
|
PS_PERSONALITY=linux pid=`ps -C $1 -o pid=`
|
|
|
|
(or use the 'start-stop-daemon' program that Debian has)
|
|
|
|
Obsolete files you may have: /etc/psdatabase, /etc/psdevtab,
|
|
~/.psdevtab, /usr/man/man8/psupdate.8 and /usr/sbin/psupdate.
|
|
|
|
|
|
NEWS for version 1.2.9 of procps
|
|
|
|
psupdate has been REMOVED from the default install. You can put it back
|
|
if you want to by removing two comment characters in the Makefile, but
|
|
I'm not going to tell you which ones. <RANT>If you can't figure it out,
|
|
there's a good chance that it won't build on your machine and I don't
|
|
want the bug reports. One of the main reasons I have removed it is that
|
|
it is not necessary on a properly-maintained system (that is, System.map
|
|
exists and is correct) and 4/5ths of the bug reports I have fielded in
|
|
the past are from users who are not able to maintain a working system
|
|
complaining that it doesn't work, despite the fact that the INSTALL file
|
|
explains how to build it in different ways and how to disable it.</RANT>
|
|
I will delete without response all email asking me how to build psupdate.
|
|
|
|
ps now accepts and ignores the g option for those with fingers tied to
|
|
the g key from too much exposure to BSD. :-)
|
|
|
|
Should build properly on ultrasparc -- two people sent the patch and
|
|
the second time I didn't notice that the patch went in reverted. So
|
|
I have now reverted the reverted patch to get the right behavior.
|
|
|
|
More reliable command-line parsing in vmstat has been added. If vmstat
|
|
didn't die for you before, you won't notice the difference...
|
|
|
|
Fixed a bug where arbitrary users might have been able to corrupt the
|
|
screen of arbitrary other users running top by creating processes with
|
|
weird arguments.
|
|
|
|
"ps ce" was missing a space character; fixed.
|
|
|
|
|
|
NEWS for version 1.2.8 of procps
|
|
|
|
procps.spec now uses buildroot, and can be built by non-root users.
|
|
This means that the default install targets had to change in the
|
|
makefiles so that the default install does not require root privs
|
|
otherwise. Also changed all "bin" ownership to "root" ownership,
|
|
as kmem-ps has died out and folks won't be automatically doing
|
|
"chmod u+s /bin/ps" and making their systems insecure thereby.
|
|
|
|
XConsole no longer installed setuid root by default. This is safer,
|
|
if less convenient. Change it if you want to use it as non-root.
|
|
|
|
top had disgustingly buggy ^Z handling: you could only suspend once,
|
|
and if you had suspended, you could no longer read WCHAN information.
|
|
Both bugs are now fixed.
|
|
|
|
xcpustate removed -- it was a very old, obsolete version.
|
|
Get a new version from ftp://ftp.cs.toronto.edu/pub/jdd/xcpustate
|
|
|
|
Now looks for kernel symbols in loadable modules.
|
|
|
|
psupdate no longer included in RPM package; the theory is that
|
|
systems maintained with RPM probably are reasonably recent and
|
|
up-to-date and so psupdate is extraneous on those systems, only
|
|
adding an unhelpful dependency on a particular version of
|
|
binutils.
|
|
|
|
top printed two spaces instead of just one between command-line arguments.
|
|
|
|
|
|
NEWS for version 1.2.7 of procps
|
|
|
|
Security hole in XConsole fixed.
|
|
|
|
Works better with very long uptimes.
|
|
|
|
Fixed RPM spec file to have correct libproc soname.
|
|
|
|
skill -i works.
|
|
|
|
Knows about more major numbers for smart serial boards.
|
|
|
|
Fixed some small problems in top.
|
|
|
|
|
|
NEWS for version 1.2.6 of procps
|
|
|
|
Signal handling in top fixed in several ways. Main effect: suspending
|
|
works correctly with glibc now.
|
|
|
|
Patch from Linus for change in some kernel structures to 64-bit.
|
|
This means that libproc has changed soname, as the proc_t data
|
|
structure has changed incompatibly.
|
|
|
|
File descriptor leaks in libproc were fixed.
|
|
|
|
|
|
NEWS for version 1.2.5 of procps
|
|
|
|
Potential security hole fixed: if there was no /etc/psdevtab on
|
|
a system, a user could put a link from /tmp/psdevtab to a file
|
|
owned by another user, and when that other user ran ps, the
|
|
file it pointed to would be killed. This wouldn't work for
|
|
root because root would be able to create /etc/psdevtab first,
|
|
so arbitrary system files would not be killable. This was fixed
|
|
by avoiding psdevtab files that are symlinks or have link counts
|
|
higher than 1, and by not looking for /tmp/psdevtab anymore, as
|
|
the reason for it to exist is really obsolete.
|
|
|
|
w -s output has been fixed. Scripts that depend on w -s output
|
|
should be examined. The output was broken enough to warrant this
|
|
change; it was extremely buggy.
|
|
|
|
|
|
NEWS for version 1.2.4 of procps
|
|
|
|
I_WANT_A_BROKEN_PS environment variable turns off usage warning.
|
|
|
|
"w <username>" sense corrected.
|
|
|
|
argument order problem fixed.
|
|
|
|
XConsole doesn't dump core on exit any more (only fclose if the
|
|
file is open...)
|
|
|
|
NEWS for version 1.2.3 of procps
|
|
|
|
psupdate moved to /usr/sbin, since it is no longer necessary.
|
|
|
|
Added wmconfig for Red Hat systems (others can use it if they
|
|
want; if/when wmconfig becomes standard, I'll move it into the
|
|
install target of the makefile).
|
|
|
|
Ugly hack to get around a problem some people were getting with
|
|
a too-small variable.
|
|
|
|
The usage message no longer recommends a deprecated syntax. :-)
|
|
|
|
NEWS for version 1.2.2 of procps
|
|
|
|
Made procps report its version number correctly.
|
|
Fixed typo in w.1 man page.
|
|
|
|
NEWS for version 1.2.1 of procps
|
|
|
|
New address for bug reports against procps: procps-bugs@redhat.com
|
|
(That's not an official service of Red Hat Software, just an alias
|
|
for me so that bugs get filed properly where I don't lose them...)
|
|
|
|
Better memory checks.
|
|
Fixed a file descriptor leak.
|
|
In top, the space key updates immediately.
|
|
Fixed broken signal code in top.
|
|
Fixed broken screen size calculations in top.
|
|
Fixed broken user count calculations in top.
|
|
Fixed broken time difference calculations in w.
|
|
Link libproc against libc explicitly for better co-existance with libc.
|
|
|
|
NEWS for version 1.2 of procps
|
|
|
|
Original author/maintainer, Michael K. Johnson <johnsonm@redhat.com>,
|
|
has taken over maintenance again.
|
|
|
|
psmisc removed, as it is better maintained separately. xload removed,
|
|
as it is better maintained as part of XFree86. mknewpty removed, as
|
|
it duplicates /dev/MAKEDEV and MAKEDEV is maintained.
|
|
|
|
Support for 2.1.x kernels and for glibc 2.0.5.
|
|
|
|
Lots of documentation updates.
|
|
|
|
BFD support and shared library enabled by default.
|
|
|
|
Binaries are no longer included in the archive -- get them from your
|
|
favorite Linux distributor.
|
|
|
|
free's display fixed in several ways: no such thing as cached swap,
|
|
buffer+ display was incorrectly calculated, and buffer calculations
|
|
didn't include cached memory.
|
|
|
|
Removed mknewpty, because it wasn't perfect and collides with MAKEDEV.
|
|
|
|
NEWS for version 1.01 of procps
|
|
|
|
top bugfix release. Fixes memory leak, extra line after loadavg and broken
|
|
no-idle mode. Also be a little more aggressive utmp 'from host' filtering in w.
|
|
|
|
NEWS for version 1.00 of procps
|
|
|
|
Fixed the ps -t without a -a segfault bug. Royal screwup on my part.
|
|
Updated libproc parsing routine for the new vsize output as of 1.3.91-ish.
|
|
Expanded the room for the FLAGS in ps -l due to high order bits now being set.
|
|
|
|
Added a brand new top to the distribution. Highly run-time configurable. The
|
|
old top is available for at least a release or so as "top.old". See the new man
|
|
page for details, or just run it and type 'h'. This is courtesy of Helmut
|
|
Geyer. Thanks Helmut!
|
|
|
|
egrep -n '\<(tgetent|cm|top_clrtoeol|top_clrtobot|cl|ho|me|md|mr|tgoto)\>' on
|
|
top.c and cleaned up all terminal strings being just dumped to stdout. All such
|
|
strings are now tputs'd out with putchar. This should fix a lot of problems
|
|
people have been having.
|
|
|
|
Also cleaned up non-HZ based references to jiffies -> real time conversion. I
|
|
may have missed one or two, though...
|
|
|
|
Cleaned up some Makefile things. make distclean; make should really work now.
|
|
removed function pointer warnings in xcpustate.c. .depend is properly removed
|
|
as are the imake generated makefiles. Shared lib generation bug for libproc
|
|
fixed. In general the build should be a lot cleaner, but may still have a glitch
|
|
or two.
|
|
|
|
Fixed a few (but probably not all) Alpha compatibility bugs dealing with memory
|
|
alignment. Please let me know if I missed any, or if you like give me a test
|
|
account on some Alpha. I don't have access to any Linux other than x86 which is
|
|
notoriously forgiving about unaligned memory accesses. Thanks to Alfred Arnold
|
|
(a.arnold@kfa-juelich.de) and Harald Koenig for their help so far with this.
|
|
|
|
Completely (well almost) re-wrote 'w'. From on by default, J/PCPU display is
|
|
accurate to 0.01s. w and top use readproc, so snap.c has gone away completely.
|
|
|
|
'skill' should actually work now, but you may have to use '-c', '-u', etc. to
|
|
actually get it to parse the command line correctly.
|
|
|
|
*** Significant changes in psdevtab inverse device name resolution
|
|
------------------------------------------------------------------
|
|
Extended semantics of the -n (numeric) option to output the full device number
|
|
in hexadecimal for the tty field. That way if /etc/psdevtab cannot be created
|
|
rescanning the /dev directory can be short-circuited. Fixed incorrect file
|
|
creation mode for /etc/psdevtab. I just forgot to alter my original 0 mode to
|
|
something reasonable like 0664. Added fallback locations for psdevtab. First
|
|
it tries /etc/psdevtab, then /tmp/psdevtab and then $HOME/.psdevtab. Also,
|
|
decided to go ahead and create the devtab file with regular old write instead of
|
|
the rw mmap. I still read it with mmap, but there should be no trouble with
|
|
that even in ancient kernels. Also changed the semantics such that if any
|
|
devtab file is found, it is assumed to be correct regardless of the relative
|
|
timestamps of /dev and the file. Hopefully all this will avoid any unnecessary
|
|
slowness. I'm still willing to reactivate the older somewhat broken code to
|
|
do the mapping without any file as a fallback if the file doesn't exist.
|
|
|
|
*** Significant changes in psdatabase/WCHAN inverse name resolution
|
|
-------------------------------------------------------------------
|
|
libproc reads directly from System.map, so psupdate and /etc/psdatabase are no
|
|
longer necessary. Hopefully this will make kernel configuration management
|
|
simpler requiring only the zImage and System.map, which being the stripped
|
|
(compressed) kernel and the symbol table before stripping are natural
|
|
complements. This is probably how things should have been all along even going
|
|
back to kmem ps days four years ago. Oh well. This change should make dealing
|
|
with x86, AXP, Sparc, etc binary formats for kernels a lot easier. All that is
|
|
required of System.map is that there be exactly 3 space delimited columns:
|
|
"address[single space]anything_with_no_spaces[single space]symbol[newline]"
|
|
[ Well, ok, the addresses have to be zero padded so that lexicographic order is
|
|
the same as numerical order and the addresses all have to be the same ascii
|
|
length and I haven't tested to see how resilient it is to bogus internal records
|
|
like multiple newlines in a row. Hopefully aren't editting and commenting their
|
|
System.map files. ;-) This could actually work on "sort < /proc/ksyms" also if
|
|
we generalize the behavior to work with either two or three columns. ]
|
|
|
|
We take advantage of the following files in this order:
|
|
PS_SYSTEM_MAP # may only point to System.map, not psdatabase
|
|
/boot/System.map-`uname -r`, # Note: this is the preferred path
|
|
/boot/System.map
|
|
/lib/modules/`uname -r`/System.map
|
|
/etc/psdatabase
|
|
/boot/psdatabase-`uname -r`,
|
|
/boot/psdatabase,
|
|
/lib/modules/`uname -r`/psdatabase
|
|
|
|
The reason for the /lib/modules/*/file location is that I imagine many people
|
|
have enough trouble keeping track of kernel version-dependent files in the
|
|
filesystem as it is, so I didn't want to invent a new place. I keep things in
|
|
/boot myself and don't usually have more than 8 or so kernel versions, so this
|
|
works for me. I know not everyone uses modules, but it's just a search path
|
|
folks... In case it isn't obvious from all of the above, this means that
|
|
psupdate is no longer necessary. I include it in this release and include
|
|
recognition of it because I realize that some distributions may have scripts
|
|
which depend on the old semantics. I doubt there will ever be a compelling
|
|
reason to not include support for generating or reading the old psdatabase
|
|
files, but they aren't necessary anymore if you have the System.map files from
|
|
the kernel builds.
|
|
|
|
I'm not 100% sold on the ordering of the search path, but I think it makes
|
|
sense. If you have reasons why it should be different I may be convincable.
|
|
Also I'm interested in exactly what the output of 'nm' looks like on Alpha,
|
|
Sparc, etc., architectures. It should be easy enough to adapt the code if it is
|
|
basically the same format of <0 padded hex> ... <symbol>\n.
|
|
|
|
Thanks to Helmut Geyer for the idea of living off the System.map file natively
|
|
and Mike Dean for the idea of using an approximate binary search instead of
|
|
padding out the lines of System.map with tons of spaces to get equal record
|
|
lengths. The cost of doing it approximately is mild, mostly consisting of lots
|
|
of scans to get to the next or last newline and a logarithmically few extra
|
|
steps to get to the desired record. Only an order of magnitude guess for the
|
|
record length is necessary. The code is all mine, though, so all bugs are due
|
|
to me alone.
|
|
|
|
NEWS for version 0.99a of procps
|
|
================================
|
|
This is a quick bug-fix release to solve a few thorny problems with my probably
|
|
overzealous attempt to use the inline-assembly string.h and a Makefile bug or
|
|
two. It also fixes free to +/- the cached column too and makes it ignore the
|
|
new extra-pretty non-numeric lines that /proc/meminfo is spitting out. It also
|
|
fixes the lack of set_linux_verion() in 'w' that caused no command line to be
|
|
displayed. I am still working on a much condensed 'w' that should be a lot
|
|
easier to maintain and a readproctree that should be usable by both 'ps',
|
|
'pstree', and 'w'.
|
|
|
|
Apparently memory-mapped files are pretty broken before the early 1.3.X kernels
|
|
so I may have to rewrite devname.c to not use MAP_WRITE to create psdevtab. Some
|
|
people have been claiming that /dev changes at boot-up in some rc scripts. I'm
|
|
not really sure why they would want to do that. Seems kind of paranoid to
|
|
continually re-make /dev/log. Anyhow, I'm open to suggestions for psdevtab
|
|
behaviors. I've been thinking a /tmp/psdevtab fallback (with a careful world
|
|
readable umask to avoid repetition) or maybe a $HOME/.psdevtab fallback too.
|
|
|
|
NEWS for version 0.99 of procps
|
|
===============================
|
|
This file is a brief catalog of new features or developments in the package.
|
|
For general information about using the programs see their man pages.
|
|
|
|
NEW PACKAGES OR PROGRAMS
|
|
========================
|
|
|
|
LIBPROC
|
|
I've modularized some routines and fixed some long standing bugs. Replaced
|
|
the regex() recognition of /proc/PID with a simple check of the first
|
|
character of the filename being a digit which should be just as safe.
|
|
|
|
Added an opendir/readdir/closedir style interface to the process table. The
|
|
new interface seems cleaner, more intuitive and generally more applicable
|
|
(to me anyway). The only program which uses the new interface is ps. 'w'
|
|
will follow soon. 'top' may take a while longer... openproc,readproc, and
|
|
closeproc are implemented. I still want to do readproctab and rewindproc,
|
|
too though.
|
|
|
|
Added some kernel and package versioning things to make it easier to be run
|
|
time adaptable. Also updated sysinfo to understand any /proc/meminfo. A
|
|
/proc/stat parser should probably be in there as well with the appropriate
|
|
updates to vmstat and xcpustate.
|
|
|
|
The general direction procps should move in is lightweight command-line or
|
|
X11/Motif display/format programs and compartmentalized libproc routines to
|
|
parse all of the /proc files. This isolates the utilities from kernel
|
|
versioning.
|
|
|
|
TTY DEVICE NUMBER TO NAME RESOLUTION
|
|
Tty device name <-> number mapping has been completely generalized. It now
|
|
stat's every character special file in /dev and builds a memory mapped table
|
|
of device names indexed in a way that makes lookup of name from number a
|
|
fast, constant time process. The extra overhead incurred by building
|
|
/etc/psdevtab is non-negligible if you have a large /dev and permissions to
|
|
write the file (or its directory) are required to update the file (which is
|
|
done if it does not exist or if /dev is newer than /etc/psdevtab).
|
|
|
|
Hence `root' should `ps' shortly after any modification to /dev (or chmod
|
|
666 /etc/psdevtab :-) to avoid ordinary users rebuilding it over and over.
|
|
Since such modifications are rare, hopefully having a fallback $HOME
|
|
location will not be necessary. If the file is up to date, the overhead
|
|
incurred is very small. The generality bought is essentially optimal since
|
|
`ps' tailors its notion of name<->devno mapping according to the /dev of the
|
|
local system which is the canonical repository of this information.
|
|
|
|
In principle the name database could encompass all device majors. The file
|
|
would be large, but since I use mmap to access it, only the pages with the
|
|
major of interest are ever actually read off the disk. Right now I just use
|
|
the majors 2,3,4,5,19,20 which should cover both old and new systems with
|
|
both master and slave devices (I know... no reason for the masters... :-)
|
|
and the multiport serial devices. Also the 'mknewpty' script is provided
|
|
to update your /dev directory to the new pty master/slave devices.
|
|
|
|
The tty abbreviation scheme has been rationalized to match device special
|
|
files. The leading "tty" or "cu" is stripped, so cua3 -> a3, tty1 -> 1 and
|
|
ttyp9 -> p9. The t flag in ps now works with a full device names and to
|
|
pick up processes even if they aren't owned by the owner of ps, e.g.
|
|
"ps tcua0" picks up gpm for everyone. This seems desirable.
|
|
|
|
WATCH
|
|
A little program similar to another called 'vis' which simply re-displays
|
|
in a polling fashion the output of other programs. "watch ps --sort:utime"
|
|
might be dubbed a poor man's 'top'. Though this has been included in procps
|
|
for some time it hasn't been built or installed by default. It is now.
|
|
|
|
SKILL/SNICE
|
|
I have written the necessary machine-dependant file for 'skill' and tested
|
|
it somewhat under Linux. It seems to mostly work, but there are probably a
|
|
few glitches. This is a generalization of the 'killall' concept. You can
|
|
send signals or change priority based upon user, command basename (the same
|
|
that 'ps c' gives), terminal, etc. If you have a user named 'satan' "skill
|
|
-u satan" will kill all their processes. :-) See the man page for more
|
|
details.
|
|
|
|
An annoyance of the current implementation is that although permission to
|
|
send signals is based upon the real user id, /proc only gives the effective
|
|
uids of processes. Hence processes which you *could* kill because they're
|
|
suid-root (X say) won't be detected as kill-able. Either /proc + readproc
|
|
need to be updated to report the *real* uid to skil or skill needs to try to
|
|
send the signal even if the uid doesn't match.
|
|
|
|
|
|
CHANGES TO OLD PROGRAMS
|
|
=======================
|
|
|
|
MAKEFILE
|
|
The directory hierarchy has been restructured. It is now easier to have the
|
|
multiple components to the suite under nearly autonomous administration.
|
|
The library code has also been moved to a subdirectory. The best thing
|
|
about the new setup is that things like Imake generated Makefiles with
|
|
preconceived notions of 'make install' can be used without getting into the
|
|
business of re-writing component package makefiles.
|
|
|
|
There is now an option to build a shared libproc.a which reduces 'ps' and
|
|
'top' sizes by about 10K apiece. Simply change the value of SHARED. Also,
|
|
one may optionally install the library header files and archive/shared
|
|
object files into standard system directories. There are no library man
|
|
pages yet, but the headers are fairly descriptive.
|
|
|
|
PS
|
|
Several long standing bugs have been fixed and much of the internal code was
|
|
re-written to use my new directory-style interface to the process table. In
|
|
particular if sorting is disabled (with '-o') the process entries are output
|
|
to the terminal as soon as possible (making it more helpful under heavy
|
|
system load).
|
|
|
|
I am considering several new additional features to `ps' including
|
|
regex filtering of which processes to list,
|
|
"grep -s" silent testing for existing of processes matching criteria,
|
|
run-time/user-defined output formats.
|
|
I would also like to completely phase the w,top code which uses the snapshot
|
|
interface instead of the 'readproc' interface. And of course adding long
|
|
options for the rest of the options would be nice too (I may not get around
|
|
to doing this anytime really soon so patches which implement any of these
|
|
things would most likely be gleefully accepted).
|
|
|
|
PSUPDATE
|
|
psupdate has been updated to work with ELF kernels. If you compile it as
|
|
an ELF binary it will handle both a.out and ELF kernels. If you compile it
|
|
as an a.out binary it will only handle a.out kernels. Many thanks to Jeff
|
|
Uphoff.
|
|
|
|
psupdate has also been updated to work with any binary type supported
|
|
by libbfd. This is the default configuration.
|
|
Many thanks to David Mossberger-Tang.
|
|
|
|
TOP
|
|
A user-defined format would be nice here too. Alternate sorting criteria
|
|
(top memory users instead of top CPU users, etc.) may be another interesting
|
|
alternative. Of course the sorting in ps can do all of that, but it doesn't
|
|
have any optimal screen update action going down... :-)
|