Blob Blame History Raw
*********** THIS IS THE FINAL RELEASE OF VERSION 2 OF LSOF. *************
|									|
|  Version 3 of lsof is now available.  Look in this directory for:	|
|									|
|	lsof_3.<level>.tar.gz						|
|									|
| (<level> is the release level, 0 as of 24 May 1994.)			|
|									|
| Vic Abell								|
|									|
*************************************************************************

		Notes for the distribution of lsof version 2.36

Lsof (for LiSt Open Files) lists files opened by processes on selected UNIX
systems.  It's my update to fstat (comp.sources.unix volume 18, number 107)
and ofiles (volume 18, number 57).  A description of the changes lsof has
undergone to reach its current version is in What's new in Version 2.36?
					     ---------------------------

Lsof is a complete redesign of the fstat/ofiles series and its closer parent,
lsof 1.09.  It has been tested on:

      AIX 3.2.[1234]		for the IBM RISC/System 6000
      BSDI BSD/386 1.0		for PC compatibles
      EP/IX 2.1.1		for the CDC 4680
      FreeBSD 1.0e		for PC compatibles
      HP-UX [789].x		for HP systems (some combinations)
      IRIX 5.1.1		for SGI systems
      NetBSD 0.9a		for PC compatibles
      NeXTStep 2.1, 3.0, 3.1	for NeXT work stations
      OSF/1 1.[23] and 2.0	for DEC Alpha work stations
      Sequent Dynix 3.0.12	for the Sequent Symmetry
      SunOS 4.1.[123]		for Sun 3 and 4
      SunOS 5.1 (Solaris 2.1)	for Sun 4 systems
      SunOS 5.3 (Solaris 2.3)	for Sun 4 systems
      Ultrix 2.2 and 4.2	for DEC work stations

Although it has not been tested on them, lsof will probably work on AIX
3.1.[357], EP/IX 1.4.3, ETAV 1.17, IRIX 4.0.5, NeXTStep 2.0 and SunOS 4.1.
(It used to work on those UNIX dialects, but I no longer have access to
them for testing.)

Using available kernel data access methods -- getproc(), getuser(), kvm_*(),
nlist(), pstat(), read(), readx() -- lsof reads process table entries, user
areas and file pointers to reach the underlying structures that describe
files opened by processes.

Lsof interprets most file node structures -- cdrnodes, devnodes, fifonodes,
gnodes, High Sierra nodes, inodes, mfsnodes, procnodes, rnodes, snodes,
specnodes, s5inodes, tmpnodes.  It understands NFS connections.  It
recognizes FIFOs, multiplexed files, UNIX and Internet sockets.  It knows
about System V streams.  On many systems it recognizes execution text and
library references.

Lsof accepts options to limit and filter its output.  That output describes
the process that has opened the file, the command the process is executing,
the owner of the process, the file descriptor of the file, and the file's
access mode, lock status, device, inode number, size or offset, file system
name and stream head name.  Additional special output is provided for special
files -- e. g., the local and destination Internet addresses of Internet
socket files.  (Lsof has a special filter that limits output to the listing
of Internet socket files having designated protocol usage, host name or
address, or service name or port.)

Lsof may be used and distributed freely, subject to the limitations described
in its source files.

What's new in Version 2.36?
---------------------------

This is a list of the changes that have led to version 2.36.

	*  The version 1.09 sources were reorganized and broken into smaller
	   files.  There are three header files -- one for includes and
	   defines, one for function prototypes and a third for machine-
	   dependent definitions.

	*  Lsof understands some System V platforms: the ETA-10P* running
	   Release 3.1 and Lachman Associates, Inc. TCP/IP Release 3.0;
	   Silicon Graphics Indigo systems running IRIX 4.0.5 and 5.1.1;
	   CDC 4680 systems running EP/IX 1.4.3 and 2.1.1.
	   
	*  Lsof has a security compilation option, enabled by defining the
	   HASSECURITY symbol (e.g., in the Makefile or in machine.h).  When
	   the security mode is enabled, only the root user may list all
	   open files; the non-root user may list only open files whose
	   processes have the same user ID as the real user ID of the lsof
	   process (the one that its user logged on with).  Lsof is
	   distributed with the security mode disabled, but there is a
	   skeleton for defining it in the machine.h header file.

	*  Lsof has a SLOWDEV mode for systems whose /dev directory tree is
	   deep and whose stat() function is slow.  This mode is activated
	   with the -T option and prevents lsof from plumbing the depths of
	   the /dev tree.  When the mode is active, lsof may be unable to
	   associate /dev path names with all major/minor device number pairs.

	   This mode is enabled for EP/IX 1.4.3, because it takes a minimum
	   of 27 seconds to stat() all the entries in its /dev tree.  The
	   mode is no longer needed for EP/IX 2.1.1.

	   Note: at versions 2.07, 2.08 and 2.09, when SLOWDEV was enabled,
	   the -T option inhibited a full /dev search; at version 2.10 -T
	   enables a full search.

	*  An attempt has been made to make the lsof sources ANSI C compliant.
	   Compliance has been tested with the -ansi and -pedantic options of
	   the NeXTStep gcc compiler.  The compliance changes have been
	   verified to compile without error on all other available platforms.
	   However, there may be older platforms or untested ones where the
	   changes cause compilation errors.

	*  In version 2.09 the timeout handling of stat() calls, particularly
	   on inaccessible NFS directories, was improved, thanks to a
	   suggestion from Benson I. Margulies <benson@odi.com>.

	*  In version 2.10 the Margulies stat() timeout suggestion was
	   significantly extended to handle more systems and situations.

	*  In version 2.11 the interpolation of symbolic links was extended to
	   directory names, obtained via the getmntent() function, improving
	   the usability of lsof under HP-UX.

	   Steinar Haug <Steinar.Haug@delab.sintef.no> pointed out the need
	   for this addition.

	*  At Steinar Haug's suggestion I added the -i network address option
	   in version 2.12.

	*  At version 2.13 I enhanced network address argument processing
	   and correctly allocated the user area buffer for swapped DYNIX
	   processes.

	*  I added a UID cache at version 2.14 to improve speed on systems
	   with many processes and many users.

	*  I added SunOS support at 2.15 to read the current working directory
	   and root directory paths, thanks to a hint from Carl Johnson
	   <carlj@cyclone.bt.co.uk>.

	*  I added SunOS 5.1 (Solaris 2.1) support at version 2.16, thanks to
	   Dave Curry <davy@ecn.purdue.edu>.

	*  February 24, 1993: I changed Makefile generation to produce more
	   generic Makefiles.  No source code changes were involved, so the
	   version number didn't change.

	*  April 12, 1993: at the suggestion of Dave Stevens of the Purdue
	   University Computing Center <dls@cc.purdue.edu> I added better
	   support in version 2.17 for raw sockets, especially determining
	   Internet addresses for applications like ping.  This support is
	   uneven, because it depends on how a given UNIX OS supports raw
	   socket addressing.  The changes of version 2.17 have not been
	   tested on older OS dialects -- e.g., AIX 3.1.x, HP-UX 7.x, etc.

	*  May 11, 1993, version 2.18: in response to a bug report from Greg
	   Earle <earle@isolar.Tujunga.CA.US>, I added support for Sun High
	   Sierra file system nodes.  This support allows one to search for
	   processes using CD-ROM files, for example.  The code has been tested
	   under Solaris 2.1 and SunOS 4.1.3.
	   
	   The High Sierra support code exposed a difficulty with identifying
	   the major/minor device numbers of some SunOS and Solaris files.  It
	   seems that both systems will return different major/minor device
	   numbers for the directory on which a CD-ROM is mounted (e.g.,
	   /cdrom) and the file system associated with it (e.g., /dev/sr0).
	   Further, some Solaris device values can't be converted to major/
	   minor device numbers with the makedev(3) functions; lsof prints
	   such device values as one hexadecimal number.

	   I fixed a bug in the SGI file pointer scan loop in response to a
	   report from Dave Olson <olson@anchor.esd.sgi.com>.

	*  May 24, 1993 -- I corrected an incompatibility with AIX 3.2.3. Its
	   strncpy() is now a built-in and can't be split by a #if.  The fix
	   was supplied by Scott J. Ellentuch <scoell@stormking.com> and Horst
	   Luehrsen <Horst.Luehrsen@Informatik.Uni-Erlangen.De>.

	*  July 1, 1993, version 2.19: in response to a request from Jos
	   Vos <jos@bull.nl>, I added network address to host name and port
	   number to port name conversions.  I added the -H flag to disable
	   host name conversion; -P, port name.

	*  July 22, 1993, version 2.19: at NeXTStep 3.1 it is no longer
	   possible to use the -ansi and -pedantic compiler flags to check for
	   ANSI C compliance.  The flags cause compilation errors in system
	   header files.  The Makefile for NeXTStep 3.1, Makefile.next31,
	   reflects this sad fact.

	*  August 13, 1993, version 2.20: I added code for SunOS to skip
	   automountable file systems that are not mounted.  The change was
	   suggested by Dominique Petitpierre <petitp@divsun.unige.ch>.

	   I shifted ANSI C conformance testing to gcc 2.3.3 under SunOS 4.1.3,
	   because of system header file problems under NeXTStep 3.1.  The
	   CDEFS macro for gcc is:

		CDEFS=  -ansi -Dsun

	*  August 17, 1993, version 2.21: I added code to display SunOS and
	   Solaris text file usage.  I added code to handle readlink() and
	   stat() deadlocks better, including the new options "-m" and "-S t".

	*  September 10, 1993, version 2.22: I updated CLONEMAJ and N_UNIX
	   definitions for SunOS 5.1 (Solaris 2.1) per information received
	   from Casper Dik <casper@fwi.uva.nl>.

	*  September 16, 1993, version 2.23: I updated EP/IX support to OS
	   version 2.1.1.  Theoretically the EP/IX 1.4.3 support should still
	   work, provided the Makefile has "-D_EPIXV=10403".

	   The SLOWDEV definition was removed for EP/IX 2.1.1.  It remains
	   27 for EP/IX 1.4.3.

	*  October 14, 1993, version 2.24: I completely revised the breaking
	   of NFS deadlocks in response to a discovery that the AIX 3.2.4
	   lstat() call can only be broken with a SIGKILL.  Lsof now does
	   system calls that have NFS deadlock potential -- lstat() and
	   readlink() -- in a child process, retrieving the output via a
	   pipe, limiting the read via a SIGALRM, and stopping a deadlocked
	   child process with a SIGKILL.

	   Version 2.24 has a correction that makes it possible to search
	   for EP/IX 2.1.1 files by name.

	*  October 20, 1993, version 2.25: I added code, provided by John
	   Silva <johns@hpwarf.wal.hp.com>, that prints HP-UX [89].x text and
	   memory region nodes.  The -L option was enabled for HP-UX [89].x
	   to allow the printing of duplicate text and memory region nodes.

	   I added rudimentary support for HP-UX [89].x link level access
	   files.

	   I removed a trailing `/' from path arguments longer than one
	   character to make file system name matching possible.  The bug was
	   reported by John Silva <johns@hpwarf.wal.hp.com>.

	   I made yet another correction to make it possible to search for
	   EP/IX 2.1.1 files by name and file system.

	   I corrected some serious omissions and bugs in the version 2.24
	   deadlock breaking code.  A close() and wait() were missing, and
	   the child process was using exit() instead of _exit().  The
	   problems only seemed to bother the Solaris version of lsof.

	*  November 14, 1993, version 2.26: I added support for SGI IRIX 5.1.1,
	   thanks to much help from Dave Olson <olson@anchor.esd.sgi.com>.
	   There are now separate Makefiles for IRIX 4.0.5 and 5.1.1.

	   All user ID references are now type cast uid_t to correct problems
	   in the UID cacheing algorithm, used by printuid() in print.c.

	*  December 2, 1993, version 2.27: I added changes for SunOS 5.3
	   (Solaris 2.3) to display socket information correctly, courtesy of
	   Casper Dik <casper@fwi.uva.nl>.  Kernel structures for SunOS 5.3
	   sockets whose connections originate locally no longer contain the
	   local network address -- hence lsof displays * for the INADDR_ANY
	   value they do contain.

	   I added support for CCITT x.25 sockets under HP-UX 8.x and
	   (presumably) 9.x, courtesy of Pasi Kaara <Pasi.Kaara@atk.tpo.fi>.
	   Pasi also helped find a couple bugs in the HP-UX [89].x handling
	   of virtual file system names.

	*  December 20, 1993 (no version number change): I added display of
	   x.25 socket's PCB.  I changed the Solaris Makefile to use the GID
	   for sys.  I added fix to allow IRIX 4.0.5 usage, based on bug report
	   and testing by Brian Silver <silver@ctron.com>.

	*  January 11, 1994, version 2.28: I ported lsof to OSF/1 1.[23] for
	   the DEC Alpha.  Anthony Baxter <anthony.baxter@aaii.oz.au>, Dwight
	   McKay <mckay@gimli.bio.purdue.edu>, and Jeffrey Mogul
	   <mogul@pa.dec.com> gave generous assistance.  Dwight provided the
	   test system; Anthony and Jeffrey advised on OSF/1 matters.

	*  January 26, 1994, version 2.29; I ported lsof to OSF/1 2.0 for the
	   DEC Alpha.  Axel Clauberg <clauberg@rrz.uni-koeln.de> and Claus
	   Kalle <kalle@rrz.uni-koeln.de> graciously provided a test system.
	   Axel provided a critical clue to the organization of the
	   <sys/proc.h> header file that enabled me to accomplish this port.

	*  February 12, 1994, version 2.30: I ported lsof to Ultrix 2.2 and
	   4.2 for DEC work stations.  The system to which the 2.2 port was
	   directed is a local one that has been extensively updated with
	   4.3BSD{Tahoe,Reno} network features, so it may not match a
	   standard 2.2 system, if there is any such system still in use.

	   Terry Friedrichsen <terry@venus.sunquest.com>, Dwight McKay
	   <mckay@gimli.bio.purdue.edu>, and Jeffrey Mogul
	   <mogul@pa.dec.com> gave generous assistance.  Dwight provided the
	   test system; Jeff and Terry advised on Ultrix matters.

	*  February 17, 1994, version 2.31: this is a bug fix release.  It
	   includes fixes to:

	   o  Allow specifying more than one file or file system argument;

	   o  Display correct SunOS 4.x VCHR inode numbers -- e.g., /dev/kmem,
	      /dev/console -- and allow searching for them by name in versions
	      of SunOS older than 4.1.3;

	   o  Search for OSF/1 /dev/ptyp? files by name, even though there is
	      no inode number in the kernel open file structures for these
	      files that corresponds to the inode number available from the
	      stat() function call.
	      
	      Terry Friedrichsen <terry@venus.sunquest.com> reported this bug.
	      Jeffrey Mogul <mogul@pa.dec.com> provided conclusive evidence
	      that the inode number does not exists in the kernel open file
	      structures.

	*  February 25, 1994, version 2.32: I ported lsof to BSDI BSD/386 1.0,
	   FreeBSD 1.0e, and NetBSD 0.9a for PC compatibles.

	   Bill Bormann <bormann@vm.cc.purdue.edu> provided the FreeBSD test
	   platform.  Dave Stevens <dls@mace.cc.purdue.edu> provided the
	   BSDI BSD/386 test platform.

	   Sean McDermott <spm@staff.cc.purdue.edu> did the NetBSD 0.9a
	   testing.

	   I added code to the handling of NFS deadlocks to time out the wait
	   for a child process to complete.  The time-out is accompanied by a
	   warning that the child process may be hung.

	   I fixed a few minor OSF/1 bugs.

	   I corrected an #if test that made it impossible to compile misc.c
	   under IRIX 4.0.5.  Bob Mende Pie <mende@piecomputer.rutgers.edu>
	   supplied the correction.

	*  March 10, 1994, version 2.33: I added ADVFS/MSFS file system support
	   for DEC OSF/1 1.3a.  This has not been tested under versions 1.2
	   or 2.0 of DEC OSF/1.

	   Achim Bohnet <ach@mpe-garching.mpg.de> and Bernt Christandl
	   <beb@mpe-garching.mpg.de> graciously provided test time on a 1.3a
	   system with the ADVFS/MSFS layered file system product.

	   I fixed a Solaris 2.[13] bug that prevented proper lookup of socket
	   streams.  Steve Kirsch <stk@infoseek.com> reported the bug and
	   graciously provided test time for locating and fixing it.

	*  April 13, 1994, version 2.34: I fixed some minor bugs, including:
	   using Purdue DYNIX's /etc/passwd stay-open mode; handling an
	   empty /etc/services file without causing a segmentation fault;
	   handling Unix domain sockets consistently; eliminating an IRIX
	   reference to a virtual memory region pointer that is obsolescent.

	*  April 19, 1994, version 2.35: I extended the /etc/passwd stay-open
	   mode handling to another Purdue dialect: Ultrix 2.2.

	*  May 2, 1994, version 2.36: a child process, blocked by NFS, is now
	   sent both the SIGINT and the SIGKILL signals in an attempt to
	   terminate it.  David DiGiacomo <dd@mv.us.adobe.com suggested this.

Victor A. Abell <abe@cc.purdue.edu>
Purdue University Computing Center
May 24, 1994