/
githubmirror
/
lsof
Обзор
Документация
Войти
/
githubmirror
/
lsof
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
4.95.0
OLD/lsof2_00DIST
360 строк
17 KB
Masatake YAMATO
Import the final source tree published by Vic, the original lsof maintainer.
23 июл 2018, 06:45
23 июл 2018, 06:45
8662085
Код
Авторство
О чём код?
*********** 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