summaryrefslogtreecommitdiff
path: root/lsof.man
diff options
context:
space:
mode:
Diffstat (limited to 'lsof.man')
-rw-r--r--lsof.man3894
1 files changed, 3894 insertions, 0 deletions
diff --git a/lsof.man b/lsof.man
new file mode 100644
index 0000000..158d45e
--- /dev/null
+++ b/lsof.man
@@ -0,0 +1,3894 @@
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+NAME
+ lsof - list open files
+
+SYNOPSIS
+ lsof [ -?abChKlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [
+ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-f [cfgGn] ] [ -F [f] ] [
+ -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M
+ ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S
+ [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [
+ -Z [Z] ] [ -- ] [names]
+
+DESCRIPTION
+ Lsof revision 4.87 lists on its standard output file infor-
+ mation about files opened by processes for the following
+ UNIX dialects:
+
+ Apple Darwin 9 and Mac OS X 10.[567]
+ FreeBSD 4.9 and 6.4 for x86-based systems
+ FreeBSD 8.2, 9.0 and 10.0 for AMD64-based systems
+ Linux 2.1.72 and above for x86-based systems
+ Solaris 9, 10 and 11
+
+ (See the DISTRIBUTION section of this manual page for infor-
+ mation on how to obtain the latest lsof revision.)
+
+ An open file may be a regular file, a directory, a block
+ special file, a character special file, an executing text
+ reference, a library, a stream or a network file (Internet
+ socket, NFS file or UNIX domain socket.) A specific file or
+ all the files in a file system may be selected by path.
+
+ Instead of a formatted display, lsof will produce output
+ that can be parsed by other programs. See the -F, option
+ description, and the OUTPUT FOR OTHER PROGRAMS section for
+ more information.
+
+ In addition to producing a single output list, lsof will run
+ in repeat mode. In repeat mode it will produce output,
+ delay, then repeat the output operation until stopped with
+ an interrupt or quit signal. See the +|-r [t[m<fmt>]]
+ option description for more information.
+
+OPTIONS
+ In the absence of any options, lsof lists all open files
+ belonging to all active processes.
+
+ If any list request option is specified, other list requests
+ must be specifically requested - e.g., if -U is specified
+ for the listing of UNIX socket files, NFS files won't be
+ listed unless -N is also specified; or if a user list is
+ specified with the -u option, UNIX domain socket files,
+ belonging to users not in the list, won't be listed unless
+
+
+
+SunOS 5.9 Last change: Revision-4.87 1
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ the -U option is also specified.
+
+ Normally list options that are specifically stated are ORed
+ - i.e., specifying the -i option without an address and the
+ -ufoo option produces a listing of all network files OR
+ files belonging to processes owned by user ``foo''. The
+ exceptions are:
+
+ 1) the `^' (negated) login name or user ID (UID), specified
+ with the -u option;
+
+ 2) the `^' (negated) process ID (PID), specified with the -p
+ option;
+
+ 3) the `^' (negated) process group ID (PGID), specified with
+ the -g option;
+
+ 4) the `^' (negated) command, specified with the -c option;
+
+ 5) the (`^') negated TCP or UDP protocol state names, speci-
+ fied with the -s [p:s] option.
+
+ Since they represent exclusions, they are applied without
+ ORing or ANDing and take effect before any other selection
+ criteria are applied.
+
+ The -a option may be used to AND the selections. For exam-
+ ple, specifying -a, -U, and -ufoo produces a listing of only
+ UNIX socket files that belong to processes owned by user
+ ``foo''.
+
+ Caution: the -a option causes all list selection options to
+ be ANDed; it can't be used to cause ANDing of selected pairs
+ of selection options by placing it between them, even though
+ its placement there is acceptable. Wherever -a is placed,
+ it causes the ANDing of all selection options.
+
+ Items of the same selection set - command names, file
+ descriptors, network addresses, process identifiers, user
+ identifiers, zone names, security contexts - are joined in a
+ single ORed set and applied before the result participates
+ in ANDing. Thus, for example, specifying -i@aaa.bbb,
+ -i@ccc.ddd, -a, and -ufff,ggg will select the listing of
+ files that belong to either login ``fff'' OR ``ggg'' AND
+ have network connections to either host aaa.bbb OR ccc.ddd.
+
+ Options may be grouped together following a single prefix --
+ e.g., the option set ``-a -b -C'' may be stated as -abC.
+ However, since values are optional following +|-f, -F, -g,
+ -i, +|-L, -o, +|-r, -s, -S, -T, -x and -z. when you have no
+ values for them be careful that the following character
+ isn't ambiguous. For example, -Fn might represent the -F
+
+
+
+SunOS 5.9 Last change: Revision-4.87 2
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ and -n options, or it might represent the n field identifier
+ character following the -F option. When ambiguity is possi-
+ ble, start a new option with a `-' character - e.g., ``-F
+ -n''. If the next option is a file name, follow the possi-
+ bly ambiguous option with ``--'' - e.g., ``-F -- name''.
+
+ Either the `+' or the `-' prefix may be applied to a group
+ of options. Options that don't take on separate meanings
+ for each prefix - e.g., -i - may be grouped under either
+ prefix. Thus, for example, ``+M -i'' may be stated as
+ ``+Mi'' and the group means the same as the separate
+ options. Be careful of prefix grouping when one or more
+ options in the group does take on separate meanings under
+ different prefixes - e.g., +|-M; ``-iM'' is not the same
+ request as ``-i +M''. When in doubt, use separate options
+ with appropriate prefixes.
+
+ -? -h These two equivalent options select a usage (help)
+ output list. Lsof displays a shortened form of
+ this output when it detects an error in the options
+ supplied to it, after it has displayed messages
+ explaining each error. (Escape the `?' character
+ as your shell requires.)
+
+ -a causes list selection options to be ANDed, as
+ described above.
+
+ -A A is available on systems configured for AFS whose
+ AFS kernel code is implemented via dynamic modules.
+ It allows the lsof user to specify A as an alter-
+ nate name list file where the kernel addresses of
+ the dynamic modules might be found. See the lsof
+ FAQ (The FAQ section gives its location.) for more
+ information about dynamic modules, their symbols,
+ and how they affect lsof.
+
+ -b causes lsof to avoid kernel functions that might
+ block - lstat(2), readlink(2), and stat(2).
+
+ See the BLOCKS AND TIMEOUTS and AVOIDING KERNEL
+ BLOCKS sections for information on using this
+ option.
+
+ -c c selects the listing of files for processes execut-
+ ing the command that begins with the characters of
+ c. Multiple commands may be specified, using mul-
+ tiple -c options. They are joined in a single ORed
+ set before participating in AND option selection.
+
+ If c begins with a `^', then the following charac-
+ ters specify a command name whose processes are to
+ be ignored (excluded.)
+
+
+
+SunOS 5.9 Last change: Revision-4.87 3
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ If c begins and ends with a slash ('/'), the char-
+ acters between the slashes are interpreted as a
+ regular expression. Shell meta-characters in the
+ regular expression must be quoted to prevent their
+ interpretation by the shell. The closing slash may
+ be followed by these modifiers:
+
+
+ b the regular expression is a basic one.
+ i ignore the case of letters.
+ x the regular expression is an extended one
+ (default).
+
+ See the lsof FAQ (The FAQ section gives its loca-
+ tion.) for more information on basic and extended
+ regular expressions.
+
+ The simple command specification is tested first.
+ If that test fails, the command regular expression
+ is applied. If the simple command test succeeds,
+ the command regular expression test isn't made.
+ This may result in ``no command found for regex:''
+ messages when lsof's -V option is specified.
+
+ +c w defines the maximum number of initial characters of
+ the name, supplied by the UNIX dialect, of the UNIX
+ command associated with a process to be printed in
+ the COMMAND column. (The lsof default is nine.)
+
+ Note that many UNIX dialects do not supply all com-
+ mand name characters to lsof in the files and
+ structures from which lsof obtains command name.
+ Often dialects limit the number of characters sup-
+ plied in those sources. For example, Linux 2.4.27
+ and Solaris 9 both limit command name length to 16
+ characters.
+
+ If w is zero ('0'), all command characters supplied
+ to lsof by the UNIX dialect will be printed.
+
+ If w is less than the length of the column title,
+ ``COMMAND'', it will be raised to that length.
+
+ -C disables the reporting of any path name components
+ from the kernel's name cache. See the KERNEL NAME
+ CACHE section for more information.
+
+ +d s causes lsof to search for all open instances of
+ directory s and the files and directories it con-
+ tains at its top level. +d does NOT descend the
+ directory tree, rooted at s. The +D D option may
+ be used to request a full-descent directory tree
+
+
+
+SunOS 5.9 Last change: Revision-4.87 4
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ search, rooted at directory D.
+
+ Processing of the +d option does not follow sym-
+ bolic links within s unless the -x or -x l option
+ is also specified. Nor does it search for open
+ files on file system mount points on subdirectories
+ of s unless the -x or -x f option is also speci-
+ fied.
+
+ Note: the authority of the user of this option lim-
+ its it to searching for files that the user has
+ permission to examine with the system stat(2) func-
+ tion.
+
+ -d s specifies a list of file descriptors (FDs) to
+ exclude from or include in the output listing. The
+ file descriptors are specified in the
+ comma-separated set s - e.g., ``cwd,1,3'',
+ ``^6,^2''. (There should be no spaces in the set.)
+
+ The list is an exclusion list if all entries of the
+ set begin with `^'. It is an inclusion list if no
+ entry begins with `^'. Mixed lists are not permit-
+ ted.
+
+ A file descriptor number range may be in the set as
+ long as neither member is empty, both members are
+ numbers, and the ending member is larger than the
+ starting one - e.g., ``0-7'' or ``3-10''. Ranges
+ may be specified for exclusion if they have the `^'
+ prefix - e.g., ``^0-7'' excludes all file descrip-
+ tors 0 through 7.
+
+ Multiple file descriptor numbers are joined in a
+ single ORed set before participating in AND option
+ selection.
+
+ When there are exclusion and inclusion members in
+ the set, lsof reports them as errors and exits with
+ a non-zero return code.
+
+ See the description of File Descriptor (FD) output
+ values in the OUTPUT section for more information
+ on file descriptor names.
+
+ +D D causes lsof to search for all open instances of
+ directory D and all the files and directories it
+ contains to its complete depth.
+
+ Processing of the +D option does not follow sym-
+ bolic links within D unless the -x or -x l option
+ is also specified. Nor does it search for open
+
+
+
+SunOS 5.9 Last change: Revision-4.87 5
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ files on file system mount points on subdirectories
+ of D unless the -x or -x f option is also speci-
+ fied.
+
+ Note: the authority of the user of this option lim-
+ its it to searching for files that the user has
+ permission to examine with the system stat(2) func-
+ tion.
+
+ Further note: lsof may process this option slowly
+ and require a large amount of dynamic memory to do
+ it. This is because it must descend the entire
+ directory tree, rooted at D, calling stat(2) for
+ each file and directory, building a list of all the
+ files it finds, and searching that list for a match
+ with every open file. When directory D is large,
+ these steps can take a long time, so use this
+ option prudently.
+
+ -D D directs lsof's use of the device cache file. The
+ use of this option is sometimes restricted. See
+ the DEVICE CACHE FILE section and the sections that
+ follow it for more information on this option.
+
+ -D must be followed by a function letter; the func-
+ tion letter may optionally be followed by a path
+ name. Lsof recognizes these function letters:
+
+
+ ? - report device cache file paths
+ b - build the device cache file
+ i - ignore the device cache file
+ r - read the device cache file
+ u - read and update the device cache file
+
+ The b, r, and u functions, accompanied by a path
+ name, are sometimes restricted. When these func-
+ tions are restricted, they will not appear in the
+ description of the -D option that accompanies -h or
+ -? option output. See the DEVICE CACHE FILE sec-
+ tion and the sections that follow it for more
+ information on these functions and when they're
+ restricted.
+
+ The ? function reports the read-only and write
+ paths that lsof can use for the device cache file,
+ the names of any environment variables whose values
+ lsof will examine when forming the device cache
+ file path, and the format for the personal device
+ cache file path. (Escape the `?' character as your
+ shell requires.)
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 6
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ When available, the b, r, and u functions may be
+ followed by the device cache file's path. The
+ standard default is .lsof_hostname in the home
+ directory of the real user ID that executes lsof,
+ but this could have been changed when lsof was con-
+ figured and compiled. (The output of the -h and -?
+ options show the current default prefix - e.g.,
+ ``.lsof''.) The suffix, hostname, is the first
+ component of the host's name returned by gethost-
+ name(2).
+
+ When available, the b function directs lsof to
+ build a new device cache file at the default or
+ specified path.
+
+ The i function directs lsof to ignore the default
+ device cache file and obtain its information about
+ devices via direct calls to the kernel.
+
+ The r function directs lsof to read the device
+ cache at the default or specified path, but
+ prevents it from creating a new device cache file
+ when none exists or the existing one is improperly
+ structured. The r function, when specified without
+ a path name, prevents lsof from updating an
+ incorrect or outdated device cache file, or creat-
+ ing a new one in its place. The r function is
+ always available when it is specified without a
+ path name argument; it may be restricted by the
+ permissions of the lsof process.
+
+ When available, the u function directs lsof to read
+ the device cache file at the default or specified
+ path, if possible, and to rebuild it, if necessary.
+ This is the default device cache file function when
+ no -D option has been specified.
+
+ +|-e s exempts the file system whose path name is s from
+ being subjected to kernel function calls that might
+ block. The +e option exempts stat(2), lstat(2) and
+ most readlink(2) kernel function calls. The -e
+ option exempts only stat(2) and lstat(2) kernel
+ function calls. Multiple file systems may be
+ specified with separate +|-e specifications and
+ each may have readlink(2) calls exempted or not.
+
+ This option is currently implemented only for
+ Linux.
+
+ CAUTION: this option can easily be mis-applied to
+ other than the file system of interest, because it
+ uses path name rather than the more reliable device
+
+
+
+SunOS 5.9 Last change: Revision-4.87 7
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ and inode numbers. (Device and inode numbers are
+ acquired via the potentially blocking stat(2) ker-
+ nel call and are thus not available, but see the
+ +|-m m option as a possible alternative way to sup-
+ ply device numbers.) Use this option with great
+ care and fully specify the path name of the file
+ system to be exempted.
+
+ When open files on exempted file systems are
+ reported, it may not be possible to obtain all
+ their information. Therefore, some information
+ columns will be blank, the characters ``UNKN'' pre-
+ face the values in the TYPE column, and the appli-
+ cable exemption option is added in parentheses to
+ the end of the NAME column. (Some device number
+ information might be made available via the +|-m m
+ option.)
+
+ +|-f [cfgGn]
+ f by itself clarifies how path name arguments are
+ to be interpreted. When followed by c, f, g, G, or
+ n in any combination it specifies that the listing
+ of kernel file structure information is to be
+ enabled (`+') or inhibited (`-').
+
+ Normally a path name argument is taken to be a file
+ system name if it matches a mounted-on directory
+ name reported by mount(8), or if it represents a
+ block device, named in the mount output and associ-
+ ated with a mounted directory name. When +f is
+ specified, all path name arguments will be taken to
+ be file system names, and lsof will complain if any
+ are not. This can be useful, for example, when the
+ file system name (mounted-on device) isn't a block
+ device. This happens for some CD-ROM file systems.
+
+ When -f is specified by itself, all path name argu-
+ ments will be taken to be simple files. Thus, for
+ example, the ``-f -- /'' arguments direct lsof to
+ search for open files with a `/' path name, not all
+ open files in the `/' (root) file system.
+
+ Be careful to make sure +f and -f are properly ter-
+ minated and aren't followed by a character (e.g.,
+ of the file or file system name) that might be
+ taken as a parameter. For example, use ``--''
+ after +f and -f as in these examples.
+
+
+ $ lsof +f -- /file/system/name
+ $ lsof -f -- /file/name
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 8
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ The listing of information from kernel file struc-
+ tures, requested with the +f [cfgGn] option form,
+ is normally inhibited, and is not available in
+ whole or part for some dialects - e.g., /proc-based
+ Linux kernels below 2.6.22. When the prefix to f
+ is a plus sign (`+'), these characters request file
+ structure information:
+
+
+ c file structure use count (not Linux)
+ f file structure address (not Linux)
+ g file flag abbreviations (Linux 2.6.22 and up)
+ G file flags in hexadecimal (Linux 2.6.22 and up)
+ n file structure node address (not Linux)
+
+ When the prefix is minus (`-') the same characters
+ disable the listing of the indicated values.
+
+ File structure addresses, use counts, flags, and
+ node addresses may be used to detect more readily
+ identical files inherited by child processes and
+ identical files in use by different processes.
+ Lsof column output can be sorted by output columns
+ holding the values and listed to identify identical
+ file use, or lsof field output can be parsed by an
+ AWK or Perl post-filter script, or by a C program.
+
+ -F f specifies a character list, f, that selects the
+ fields to be output for processing by another pro-
+ gram, and the character that terminates each output
+ field. Each field to be output is specified with a
+ single character in f. The field terminator
+ defaults to NL, but may be changed to NUL (000).
+ See the OUTPUT FOR OTHER PROGRAMS section for a
+ description of the field identification characters
+ and the field output process.
+
+ When the field selection character list is empty,
+ all standard fields are selected (except the raw
+ device field, security context and zone field for
+ compatibility reasons) and the NL field terminator
+ is used.
+
+ When the field selection character list contains
+ only a zero (`0'), all fields are selected (except
+ the raw device field for compatibility reasons) and
+ the NUL terminator character is used.
+
+ Other combinations of fields and their associated
+ field terminator character must be set with expli-
+ cit entries in f, as described in the OUTPUT FOR
+ OTHER PROGRAMS section.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 9
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ When a field selection character identifies an item
+ lsof does not normally list - e.g., PPID, selected
+ with -R - specification of the field character -
+ e.g., ``-FR'' - also selects the listing of the
+ item.
+
+ When the field selection character list contains
+ the single character `?', lsof will display a help
+ list of the field identification characters.
+ (Escape the `?' character as your shell requires.)
+
+ -g [s] excludes or selects the listing of files for the
+ processes whose optional process group IDentifica-
+ tion (PGID) numbers are in the comma-separated set
+ s - e.g., ``123'' or ``123,^456''. (There should
+ be no spaces in the set.)
+
+ PGID numbers that begin with `^' (negation)
+ represent exclusions.
+
+ Multiple PGID numbers are joined in a single ORed
+ set before participating in AND option selection.
+ However, PGID exclusions are applied without ORing
+ or ANDing and take effect before other selection
+ criteria are applied.
+
+ The -g option also enables the output display of
+ PGID numbers. When specified without a PGID set
+ that's all it does.
+
+ -i [i] selects the listing of files any of whose Internet
+ address matches the address specified in i. If no
+ address is specified, this option selects the list-
+ ing of all Internet and x.25 (HP-UX) network files.
+
+ If -i4 or -i6 is specified with no following
+ address, only files of the indicated IP version,
+ IPv4 or IPv6, are displayed. (An IPv6 specifica-
+ tion may be used only if the dialects supports
+ IPv6, as indicated by ``[46]'' and ``IPv[46]'' in
+ lsof's -h or -? output.) Sequentially specifying
+ -i4, followed by -i6 is the same as specifying -i,
+ and vice-versa. Specifying -i4, or -i6 after -i is
+ the same as specifying -i4 or -i6 by itself.
+
+ Multiple addresses (up to a limit of 100) may be
+ specified with multiple -i options. (A port number
+ or service name range is counted as one address.)
+ They are joined in a single ORed set before parti-
+ cipating in AND option selection.
+
+ An Internet address is specified in the form (Items
+
+
+
+SunOS 5.9 Last change: Revision-4.87 10
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ in square brackets are optional.):
+
+ [46][protocol][@hostname|hostaddr][:service|port]
+
+ where:
+ 46 specifies the IP version, IPv4 or IPv6
+ that applies to the following address.
+ '6' may be be specified only if the UNIX
+ dialect supports IPv6. If neither '4' nor
+ '6' is specified, the following address
+ applies to all IP versions.
+ protocol is a protocol name - TCP, UDP
+ hostname is an Internet host name. Unless a
+ specific IP version is specified, open
+ network files associated with host names
+ of all versions will be selected.
+ hostaddr is a numeric Internet IPv4 address in
+ dot form; or an IPv6 numeric address in
+ colon form, enclosed in brackets, if the
+ UNIX dialect supports IPv6. When an IP
+ version is selected, only its numeric
+ addresses may be specified.
+ service is an /etc/services name - e.g., smtp -
+ or a list of them.
+ port is a port number, or a list of them.
+
+ IPv6 options may be used only if the UNIX dialect
+ supports IPv6. To see if the dialect supports
+ IPv6, run lsof and specify the -h or -? (help)
+ option. If the displayed description of the -i
+ option contains ``[46]'' and ``IPv[46]'', IPv6 is
+ supported.
+
+ IPv4 host names and addresses may not be specified
+ if network file selection is limited to IPv6 with
+ -i 6. IPv6 host names and addresses may not be
+ specified if network file selection is limited to
+ IPv4 with -i 4. When an open IPv4 network file's
+ address is mapped in an IPv6 address, the open
+ file's type will be IPv6, not IPv4, and its display
+ will be selected by '6', not '4'.
+
+ At least one address component - 4, 6, protocol,
+ hostname, hostaddr, or service - must be supplied.
+ The `@' character, leading the host specification,
+ is always required; as is the `:', leading the port
+ specification. Specify either hostname or hos-
+ taddr. Specify either service name list or port
+ number list. If a service name list is specified,
+ the protocol may also need to be specified if the
+ TCP, UDP and UDPLITE port numbers for the service
+ name are different. Use any case - lower or upper
+
+
+
+SunOS 5.9 Last change: Revision-4.87 11
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ - for protocol.
+
+ Service names and port numbers may be combined in a
+ list whose entries are separated by commas and
+ whose numeric range entries are separated by minus
+ signs. There may be no embedded spaces, and all
+ service names must belong to the specified proto-
+ col. Since service names may contain embedded
+ minus signs, the starting entry of a range can't be
+ a service name; it can be a port number, however.
+
+ Here are some sample addresses:
+
+ -i6 - IPv6 only
+ TCP:25 - TCP and port 25
+ @1.2.3.4 - Internet IPv4 host address 1.2.3.4
+ @[3ffe:1ebc::1]:1234 - Internet IPv6 host address
+ 3ffe:1ebc::1, port 1234
+ UDP:who - UDP who service port
+ TCP@lsof.itap:513 - TCP, port 513 and host name lsof.itap
+ tcp@foo:1-10,smtp,99 - TCP, ports 1 through 10,
+ service name smtp, port 99, host name foo
+ tcp@bar:1-smtp - TCP, ports 1 through smtp, host bar
+ :time - either TCP, UDP or UDPLITE time service port
+
+ -K selects the listing of tasks (threads) of
+ processes, on dialects where task (thread) report-
+ ing is supported. (If help output - i.e., the out-
+ put of the -h or -? options - shows this option,
+ then task (thread) reporting is supported by the
+ dialect.)
+
+ When -K and -a are both specified on Linux, and the
+ tasks of a main process are selected by other
+ options, the main process will also be listed as
+ though it were a task, but without a task ID. (See
+ the description of the TID column in the OUTPUT
+ section.)
+
+ Where the FreeBSD version supports threads, all
+ threads will be listed with their IDs.
+
+ In general threads and tasks inherit the files of
+ the caller, but may close some and open others, so
+ lsof always reports all the open files of threads
+ and tasks.
+
+ -k k specifies a kernel name list file, k, in place of
+ /vmunix, /mach, etc. -k is not available under AIX
+ on the IBM RISC/System 6000.
+
+ -l inhibits the conversion of user ID numbers to login
+
+
+
+SunOS 5.9 Last change: Revision-4.87 12
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ names. It is also useful when login name lookup is
+ working improperly or slowly.
+
+ +|-L [l] enables (`+') or disables (`-') the listing of file
+ link counts, where they are available - e.g., they
+ aren't available for sockets, or most FIFOs and
+ pipes.
+
+ When +L is specified without a following number,
+ all link counts will be listed. When -L is speci-
+ fied (the default), no link counts will be listed.
+
+ When +L is followed by a number, only files having
+ a link count less than that number will be listed.
+ (No number may follow -L.) A specification of the
+ form ``+L1'' will select open files that have been
+ unlinked. A specification of the form
+ ``+aL1 <file_system>'' will select unlinked open
+ files on the specified file system.
+
+ For other link count comparisons, use field output
+ (-F) and a post-processing script or program.
+
+ +|-m m specifies an alternate kernel memory file or
+ activates mount table supplement processing.
+
+ The option form -m m specifies a kernel memory
+ file, m, in place of /dev/kmem or /dev/mem - e.g.,
+ a crash dump file.
+
+ The option form +m requests that a mount supplement
+ file be written to the standard output file. All
+ other options are silently ignored.
+
+ There will be a line in the mount supplement file
+ for each mounted file system, containing the
+ mounted file system directory, followed by a single
+ space, followed by the device number in hexadecimal
+ "0x" format - e.g.,
+
+
+ / 0x801
+
+ Lsof can use the mount supplement file to get dev-
+ ice numbers for file systems when it can't get them
+ via stat(2) or lstat(2).
+
+ The option form +m m identifies m as a mount sup-
+ plement file.
+
+ Note: the +m and +m m options are not available for
+ all supported dialects. Check the output of lsof's
+
+
+
+SunOS 5.9 Last change: Revision-4.87 13
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ -h or -? options to see if the +m and +m m options
+ are available.
+
+ +|-M Enables (+) or disables (-) the reporting of port-
+ mapper registrations for local TCP, UDP and UDPLITE
+ ports, where port mapping is supported. (See the
+ last paragraph of this option description for
+ information about where portmapper registration
+ reporting is suported.)
+
+ The default reporting mode is set by the lsof
+ builder with the HASPMAPENABLED #define in the
+ dialect's machine.h header file; lsof is distri-
+ buted with the HASPMAPENABLED #define deactivated,
+ so portmapper reporting is disabled by default and
+ must be requested with +M. Specifying lsof's -h or
+ -? option will report the default mode. Disabling
+ portmapper registration when it is already disabled
+ or enabling it when already enabled is acceptable.
+ When portmapper registration reporting is enabled,
+ lsof displays the portmapper registration (if any)
+ for local TCP, UDP or UDPLITE ports in square
+ brackets immediately following the port numbers or
+ service names - e.g., ``:1234[name]'' or
+ ``:name[100083]''. The registration information
+ may be a name or number, depending on what the
+ registering program supplied to the portmapper when
+ it registered the port.
+
+ When portmapper registration reporting is enabled,
+ lsof may run a little more slowly or even become
+ blocked when access to the portmapper becomes cong-
+ ested or stopped. Reverse the reporting mode to
+ determine if portmapper registration reporting is
+ slowing or blocking lsof.
+
+ For purposes of portmapper registration reporting
+ lsof considers a TCP, UDP or UDPLITE port local if:
+ it is found in the local part of its containing
+ kernel structure; or if it is located in the
+ foreign part of its containing kernel structure and
+ the local and foreign Internet addresses are the
+ same; or if it is located in the foreign part of
+ its containing kernel structure and the foreign
+ Internet address is INADDR_LOOPBACK (127.0.0.1).
+ This rule may make lsof ignore some foreign ports
+ on machines with multiple interfaces when the
+ foreign Internet address is on a different inter-
+ face from the local one.
+
+ See the lsof FAQ (The FAQ section gives its loca-
+ tion.) for further discussion of portmapper
+
+
+
+SunOS 5.9 Last change: Revision-4.87 14
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ registration reporting issues.
+
+ Portmapper registration reporting is supported only
+ on dialects that have RPC header files. (Some
+ Linux distributions with GlibC 2.14 do not have
+ them.) When portmapper registration reporting is
+ supported, the -h or -? help output will show the
+ +|-M option.
+
+ -n inhibits the conversion of network numbers to host
+ names for network files. Inhibiting conversion may
+ make lsof run faster. It is also useful when host
+ name lookup is not working properly.
+
+ -N selects the listing of NFS files.
+
+ -o directs lsof to display file offset at all times.
+ It causes the SIZE/OFF output column title to be
+ changed to OFFSET. Note: on some UNIX dialects
+ lsof can't obtain accurate or consistent file
+ offset information from its kernel data sources,
+ sometimes just for particular kinds of files (e.g.,
+ socket files.) Consult the lsof FAQ (The FAQ sec-
+ tion gives its location.) for more information.
+
+ The -o and -s options are mutually exclusive; they
+ can't both be specified. When neither is speci-
+ fied, lsof displays whatever value - size or offset
+ - is appropriate and available for the type of the
+ file.
+
+ -o o defines the number of decimal digits (o) to be
+ printed after the ``0t'' for a file offset before
+ the form is switched to ``0x...''. An o value of
+ zero (unlimited) directs lsof to use the ``0t''
+ form for all offset output.
+
+ This option does NOT direct lsof to display offset
+ at all times; specify -o (without a trailing
+ number) to do that. -o o only specifies the number
+ of digits after ``0t'' in either mixed size and
+ offset or offset-only output. Thus, for example,
+ to direct lsof to display offset at all times with
+ a decimal digit count of 10, use:
+
+
+ -o -o 10
+ or
+ -oo10
+
+ The default number of digits allowed after ``0t''
+ is normally 8, but may have been changed by the
+
+
+
+SunOS 5.9 Last change: Revision-4.87 15
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ lsof builder. Consult the description of the -o o
+ option in the output of the -h or -? option to
+ determine the default that is in effect.
+
+ -O directs lsof to bypass the strategy it uses to
+ avoid being blocked by some kernel operations -
+ i.e., doing them in forked child processes. See
+ the BLOCKS AND TIMEOUTS and AVOIDING KERNEL BLOCKS
+ sections for more information on kernel operations
+ that may block lsof.
+
+ While use of this option will reduce lsof startup
+ overhead, it may also cause lsof to hang when the
+ kernel doesn't respond to a function. Use this
+ option cautiously.
+
+ -p s excludes or selects the listing of files for the
+ processes whose optional process IDentification
+ (PID) numbers are in the comma-separated set s -
+ e.g., ``123'' or ``123,^456''. (There should be no
+ spaces in the set.)
+
+ PID numbers that begin with `^' (negation)
+ represent exclusions.
+
+ Multiple process ID numbers are joined in a single
+ ORed set before participating in AND option selec-
+ tion. However, PID exclusions are applied without
+ ORing or ANDing and take effect before other selec-
+ tion criteria are applied.
+
+ -P inhibits the conversion of port numbers to port
+ names for network files. Inhibiting the conversion
+ may make lsof run a little faster. It is also use-
+ ful when port name lookup is not working properly.
+
+ +|-r [t[m<fmt>]]
+ puts lsof in repeat mode. There lsof lists open
+ files as selected by other options, delays t
+ seconds (default fifteen), then repeats the list-
+ ing, delaying and listing repetitively until
+ stopped by a condition defined by the prefix to the
+ option.
+
+ If the prefix is a `-', repeat mode is endless.
+ Lsof must be terminated with an interrupt or quit
+ signal.
+
+ If the prefix is `+', repeat mode will end the
+ first cycle no open files are listed - and of
+ course when lsof is stopped with an interrupt or
+ quit signal. When repeat mode ends because no
+
+
+
+SunOS 5.9 Last change: Revision-4.87 16
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ files are listed, the process exit code will be
+ zero if any open files were ever listed; one, if
+ none were ever listed.
+
+ Lsof marks the end of each listing: if field out-
+ put is in progress (the -F, option has been speci-
+ fied), the default marker is `m'; otherwise the
+ default marker is ``========''. The marker is fol-
+ lowed by a NL character.
+
+ The optional "m<fmt>" argument specifies a format
+ for the marker line. The <fmt> characters follow-
+ ing `m' are interpreted as a format specification
+ to the strftime(3) function, when both it and the
+ localtime(3) function are available in the
+ dialect's C library. Consult the strftime(3) docu-
+ mentation for what may appear in its format specif-
+ ication. Note that when field output is requested
+ with the -F option, <fmt> cannot contain the NL
+ format, ``%n''. Note also that when <fmt> contains
+ spaces or other characters that affect the shell's
+ interpretation of arguments, <fmt> must be quoted
+ appropriately.
+
+ Repeat mode reduces lsof startup overhead, so it is
+ more efficient to use this mode than to call lsof
+ repetitively from a shell script, for example.
+
+ To use repeat mode most efficiently, accompany +|-r
+ with specification of other lsof selection options,
+ so the amount of kernel memory access lsof does
+ will be kept to a minimum. Options that filter at
+ the process level - e.g., -c, -g, -p, -u - are the
+ most efficient selectors.
+
+ Repeat mode is useful when coupled with field out-
+ put (see the -F, option description) and a
+ supervising awk or Perl script, or a C program.
+
+ -R directs lsof to list the Parent Process IDentifica-
+ tion number in the PPID column.
+
+ -s [p:s] s alone directs lsof to display file size at all
+ times. It causes the SIZE/OFF output column title
+ to be changed to SIZE. If the file does not have a
+ size, nothing is displayed.
+
+ The optional -s p:s form is available only for
+ selected dialects, and only when the -h or -? help
+ output lists it.
+
+ When the optional form is available, the s may be
+
+
+
+SunOS 5.9 Last change: Revision-4.87 17
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ followed by a protocol name (p), either TCP or UDP,
+ a colon (`:') and a comma-separated protocol state
+ name list, the option causes open TCP and UDP files
+ to be excluded if their state name(s) are in the
+ list (s) preceded by a `^'; or included if their
+ name(s) are not preceded by a `^'.
+
+ When an inclusion list is defined, only network
+ files with state names in the list will be present
+ in the lsof output. Thus, specifying one state
+ name means that only network files with that lone
+ state name will be listed.
+
+ Case is unimportant in the protocol or state names,
+ but there may be no spaces and the colon (`:')
+ separating the protocol name (p) and the state name
+ list (s) is required.
+
+ If only TCP and UDP files are to be listed, as con-
+ trolled by the specified exclusions and inclusions,
+ the -i option must be specified, too. If only a
+ single protocol's files are to be listed, add its
+ name as an argument to the -i option.
+
+ For example, to list only network files with TCP
+ state LISTEN, use:
+
+
+ -iTCP -sTCP:LISTEN
+
+ Or, for example, to list network files with all UDP
+ states except Idle, use:
+
+
+ -iUDP -sUDP:Idle
+
+ State names vary with UNIX dialects, so it's not
+ possible to provide a complete list. Some common
+ TCP state names are: CLOSED, IDLE, BOUND, LISTEN,
+ ESTABLISHED, SYN_SENT, SYN_RCDV, ESTABLISHED,
+ CLOSE_WAIT, FIN_WAIT1, CLOSING, LAST_ACK,
+ FIN_WAIT_2, and TIME_WAIT. Two common UDP state
+ names are Unbound and Idle.
+
+ See the lsof FAQ (The FAQ section gives its loca-
+ tion.) for more information on how to use protocol
+ state exclusion and inclusion, including examples.
+
+ The -o (without a following decimal digit count)
+ and -s option (without a following protocol and
+ state name list) are mutually exclusive; they can't
+ both be specified. When neither is specified, lsof
+
+
+
+SunOS 5.9 Last change: Revision-4.87 18
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ displays whatever value - size or offset - is
+ appropriate and available for the type of file.
+
+ Since some types of files don't have true sizes -
+ sockets, FIFOs, pipes, etc. - lsof displays for
+ their sizes the content amounts in their associated
+ kernel buffers, if possible.
+
+ -S [t] specifies an optional time-out seconds value for
+ kernel functions - lstat(2), readlink(2), and
+ stat(2) - that might otherwise deadlock. The
+ minimum for t is two; the default, fifteen; when no
+ value is specified, the default is used.
+
+ See the BLOCKS AND TIMEOUTS section for more infor-
+ mation.
+
+ -T [t] controls the reporting of some TCP/TPI information,
+ also reported by netstat(1), following the network
+ addresses. In normal output the information
+ appears in parentheses, each item except TCP or TPI
+ state name identified by a keyword, followed by
+ `=', separated from others by a single space:
+
+
+ <TCP or TPI state name>
+ QR=<read queue length>
+ QS=<send queue length>
+ SO=<socket options and values>
+ SS=<socket states>
+ TF=<TCP flags and values>
+ WR=<window read length>
+ WW=<window write length>
+
+ Not all values are reported for all UNIX dialects.
+ Items values (when available) are reported after
+ the item name and '='.
+
+ When the field output mode is in effect (See OUTPUT
+ FOR OTHER PROGRAMS.) each item appears as a field
+ with a `T' leading character.
+
+ -T with no following key characters disables
+ TCP/TPI information reporting.
+
+ -T with following characters selects the reporting
+ of specific TCP/TPI information:
+
+
+ f selects reporting of socket options,
+ states and values, and TCP flags and
+ values.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 19
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ q selects queue length reporting.
+ s selects connection state reporting.
+ w selects window size reporting.
+
+ Not all selections are enabled for some UNIX
+ dialects. State may be selected for all dialects
+ and is reported by default. The -h or -? help out-
+ put for the -T option will show what selections may
+ be used with the UNIX dialect.
+
+ When -T is used to select information - i.e., it is
+ followed by one or more selection characters - the
+ displaying of state is disabled by default, and it
+ must be explicitly selected again in the characters
+ following -T. (In effect, then, the default is
+ equivalent to -Ts.) For example, if queue lengths
+ and state are desired, use -Tqs.
+
+ Socket options, socket states, some socket values,
+ TCP flags and one TCP value may be reported (when
+ available in the UNIX dialect) in the form of the
+ names that commonly appear after SO_, so_, SS_,
+ TCP_ and TF_ in the dialect's header files - most
+ often <sys/socket.h>, <sys/socketvar.h> and
+ <netinet/tcp_var.h>. Consult those header files
+ for the meaning of the flags, options, states and
+ values.
+
+ ``SO='' precedes socket options and values;
+ ``SS='', socket states; and ``TF='', TCP flags and
+ values.
+
+ If a flag or option has a value, the value will
+ follow an '=' and the name -- e.g.,
+ ``SO=LINGER=5'', ``SO=QLIM=5'', ``TF=MSS=512''.
+ The following seven values may be reported:
+
+
+ Name
+ Reported Description (Common Symbol)
+
+ KEEPALIVE keep alive time (SO_KEEPALIVE)
+ LINGER linger time (SO_LINGER)
+ MSS maximum segment size (TCP_MAXSEG)
+ PQLEN partial listen queue connections
+ QLEN established listen queue connections
+ QLIM established listen queue limit
+ RCVBUF receive buffer length (SO_RCVBUF)
+ SNDBUF send buffer length (SO_SNDBUF)
+
+ Details on what socket options and values, socket
+ states, and TCP flags and values may be displayed
+
+
+
+SunOS 5.9 Last change: Revision-4.87 20
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ for particular UNIX dialects may be found in the
+ answer to the ``Why doesn't lsof report socket
+ options, socket states, and TCP flags and values
+ for my dialect?'' and ``Why doesn't lsof report the
+ partial listen queue connection count for my
+ dialect?'' questions in the lsof FAQ (The FAQ sec-
+ tion gives its location.)
+
+ -t specifies that lsof should produce terse output
+ with process identifiers only and no header - e.g.,
+ so that the output may be piped to kill(1). -t
+ selects the -w option.
+
+ -u s selects the listing of files for the user whose
+ login names or user ID numbers are in the
+ comma-separated set s - e.g., ``abe'', or
+ ``548,root''. (There should be no spaces in the
+ set.)
+
+ Multiple login names or user ID numbers are joined
+ in a single ORed set before participating in AND
+ option selection.
+
+ If a login name or user ID is preceded by a `^', it
+ becomes a negation - i.e., files of processes owned
+ by the login name or user ID will never be listed.
+ A negated login name or user ID selection is nei-
+ ther ANDed nor ORed with other selections; it is
+ applied before all other selections and absolutely
+ excludes the listing of the files of the process.
+ For example, to direct lsof to exclude the listing
+ of files belonging to root processes, specify
+ ``-u^root'' or ``-u^0''.
+
+ -U selects the listing of UNIX domain socket files.
+
+ -v selects the listing of lsof version information,
+ including: revision number; when the lsof binary
+ was constructed; who constructed the binary and
+ where; the name of the compiler used to construct
+ the lsof binary; the version number of the compiler
+ when readily available; the compiler and loader
+ flags used to construct the lsof binary; and system
+ information, typically the output of uname's -a
+ option.
+
+ -V directs lsof to indicate the items it was asked to
+ list and failed to find - command names, file
+ names, Internet addresses or files, login names,
+ NFS files, PIDs, PGIDs, and UIDs.
+
+ When other options are ANDed to search options, or
+
+
+
+SunOS 5.9 Last change: Revision-4.87 21
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ compile-time options restrict the listing of some
+ files, lsof may not report that it failed to find a
+ search item when an ANDed option or compile-time
+ option prevents the listing of the open file con-
+ taining the located search item.
+
+ For example, ``lsof -V -iTCP@foobar -a -d 999'' may
+ not report a failure to locate open files at
+ ``TCP@foobar'' and may not list any, if none have a
+ file descriptor number of 999. A similar situation
+ arises when HASSECURITY and HASNOSOCKSECURITY are
+ defined at compile time and they prevent the list-
+ ing of open files.
+
+ +|-w Enables (+) or disables (-) the suppression of
+ warning messages.
+
+ The lsof builder may choose to have warning mes-
+ sages disabled or enabled by default. The default
+ warning message state is indicated in the output of
+ the -h or -? option. Disabling warning messages
+ when they are already disabled or enabling them
+ when already enabled is acceptable.
+
+ The -t option selects the -w option.
+
+ -x [fl] may accompany the +d and +D options to direct their
+ processing to cross over symbolic links and|or file
+ system mount points encountered when scanning the
+ directory (+d) or directory tree (+D).
+
+ If -x is specified by itself without a following
+ parameter, cross-over processing of both symbolic
+ links and file system mount points is enabled.
+ Note that when -x is specified without a parameter,
+ the next argument must begin with '-' or '+'.
+
+ The optional 'f' parameter enables file system
+ mount point cross-over processing; 'l', symbolic
+ link cross-over processing.
+
+ The -x option may not be supplied without also sup-
+ plying a +d or +D option.
+
+ -X This is a dialect-specific option.
+
+ AIX:
+ This IBM AIX RISC/System 6000 option requests the
+ reporting of executed text file and shared library
+ references.
+
+ WARNING: because this option uses the kernel
+
+
+
+SunOS 5.9 Last change: Revision-4.87 22
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ readx() function, its use on a busy AIX system
+ might cause an application process to hang so com-
+ pletely that it can neither be killed nor stopped.
+ I have never seen this happen or had a report of
+ its happening, but I think there is a remote possi-
+ bility it could happen.
+
+ By default use of readx() is disabled. On AIX 5L
+ and above lsof may need setuid-root permission to
+ perform the actions this option requests.
+
+ The lsof builder may specify that the -X option be
+ restricted to processes whose real UID is root. If
+ that has been done, the -X option will not appear
+ in the -h or -? help output unless the real UID of
+ the lsof process is root. The default lsof distri-
+ bution allows any UID to specify -X, so by default
+ it will appear in the help output.
+
+ When AIX readx() use is disabled, lsof may not be
+ able to report information for all text and loader
+ file references, but it may also avoid exacerbating
+ an AIX kernel directory search kernel error, known
+ as the Stale Segment ID bug.
+
+ The readx() function, used by lsof or any other
+ program to access some sections of kernel virtual
+ memory, can trigger the Stale Segment ID bug. It
+ can cause the kernel's dir_search() function to
+ believe erroneously that part of an in-memory copy
+ of a file system directory has been zeroed.
+ Another application process, distinct from lsof,
+ asking the kernel to search the directory - e.g.,
+ by using open(2) - can cause dir_search() to loop
+ forever, thus hanging the application process.
+
+ Consult the lsof FAQ (The FAQ section gives its
+ location.) and the 00README file of the lsof dis-
+ tribution for a more complete description of the
+ Stale Segment ID bug, its APAR, and methods for
+ defining readx() use when compiling lsof.
+
+ Linux:
+ This Linux option requests that lsof skip the
+ reporting of information on all open TCP, UDP and
+ UDPLITE IPv4 and IPv6 files.
+
+ This Linux option is most useful when the system
+ has an extremely large number of open TCP, UDP and
+ UDPLITE files, the processing of whose information
+ in the /proc/net/tcp* and /proc/net/udp* files
+ would take lsof a long time, and whose reporting is
+
+
+
+SunOS 5.9 Last change: Revision-4.87 23
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ not of interest.
+
+ Use this option with care and only when you are
+ sure that the information you want lsof to display
+ isn't associated with open TCP, UDP or UDPLITE
+ socket files.
+
+ Solaris 10 and above:
+ This Solaris 10 and above option requests the
+ reporting of cached paths for files that have been
+ deleted - i.e., removed with rm(1) or unlink(2).
+
+ The cached path is followed by the string
+ `` (deleted)'' to indicate that the path by which
+ the file was opened has been deleted.
+
+ Because intervening changes made to the path -
+ i.e., renames with mv(1) or rename(2) - are not
+ recorded in the cached path, what lsof reports is
+ only the path by which the file was opened, not its
+ possibly different final path.
+
+ -z [z] specifies how Solaris 10 and higher zone informa-
+ tion is to be handled.
+
+ Without a following argument - e.g., NO z - the
+ option specifies that zone names are to be listed
+ in the ZONE output column.
+
+ The -z option may be followed by a zone name, z.
+ That causes lsof to list only open files for
+ processes in that zone. Multiple -z z option and
+ argument pairs may be specified to form a list of
+ named zones. Any open file of any process in any
+ of the zones will be listed, subject to other con-
+ ditions specified by other options and arguments.
+
+ -Z [Z] specifies how SELinux security contexts are to be
+ handled. It and 'Z' field output character support
+ are inhibited when SELinux is disabled in the run-
+ ning Linux kernel. See OUTPUT FOR OTHER PROGRAMS
+ for more information on the 'Z' field output char-
+ acter.
+
+ Without a following argument - e.g., NO Z - the
+ option specifies that security contexts are to be
+ listed in the SECURITY-CONTEXT output column.
+
+ The -Z option may be followed by a wildcard secu-
+ rity context name, Z. That causes lsof to list
+ only open files for processes in that security con-
+ text. Multiple -Z Z option and argument pairs may
+
+
+
+SunOS 5.9 Last change: Revision-4.87 24
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ be specified to form a list of security contexts.
+ Any open file of any process in any of the security
+ contexts will be listed, subject to other condi-
+ tions specified by other options and arguments.
+ Note that Z can be A:B:C or *:B:C or A:B:* or *:*:C
+ to match against the A:B:C context.
+
+ -- The double minus sign option is a marker that sig-
+ nals the end of the keyed options. It may be used,
+ for example, when the first file name begins with a
+ minus sign. It may also be used when the absence
+ of a value for the last keyed option must be signi-
+ fied by the presence of a minus sign in the follow-
+ ing option and before the start of the file names.
+
+ names These are path names of specific files to list.
+ Symbolic links are resolved before use. The first
+ name may be separated from the preceding options
+ with the ``--'' option.
+
+ If a name is the mounted-on directory of a file
+ system or the device of the file system, lsof will
+ list all the files open on the file system. To be
+ considered a file system, the name must match a
+ mounted-on directory name in mount(8) output, or
+ match the name of a block device associated with a
+ mounted-on directory name. The +|-f option may be
+ used to force lsof to consider a name a file system
+ identifier (+f) or a simple file (-f).
+
+ If name is a path to a directory that is not the
+ mounted-on directory name of a file system, it is
+ treated just as a regular file is treated - i.e.,
+ its listing is restricted to processes that have it
+ open as a file or as a process-specific directory,
+ such as the root or current working directory. To
+ request that lsof look for open files inside a
+ directory name, use the +d s and +D D options.
+
+ If a name is the base name of a family of multi-
+ plexed files - e. g, AIX's /dev/pt[cs] - lsof will
+ list all the associated multiplexed files on the
+ device that are open - e.g., /dev/pt[cs]/1,
+ /dev/pt[cs]/2, etc.
+
+ If a name is a UNIX domain socket name, lsof will
+ usually search for it by the characters of the name
+ alone - exactly as it is specified and is recorded
+ in the kernel socket structure. (See the next
+ paragraph for an exception to that rule for Linux.)
+ Specifying a relative path - e.g., ./file - in
+ place of the file's absolute path - e.g., /tmp/file
+
+
+
+SunOS 5.9 Last change: Revision-4.87 25
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ - won't work because lsof must match the characters
+ you specify with what it finds in the kernel UNIX
+ domain socket structures.
+
+ If a name is a Linux UNIX domain socket name, in
+ one case lsof is able to search for it by its dev-
+ ice and inode number, allowing name to be a rela-
+ tive path. The case requires that the absolute
+ path -- i.e., one beginning with a slash ('/') be
+ used by the process that created the socket, and
+ hence be stored in the /proc/net/unix file; and it
+ requires that lsof be able to obtain the device and
+ node numbers of both the absolute path in
+ /proc/net/unix and name via successful stat(2) sys-
+ tem calls. When those conditions are met, lsof
+ will be able to search for the UNIX domain socket
+ when some path to it is is specified in name.
+ Thus, for example, if the path is /dev/log, and an
+ lsof search is initiated when the working directory
+ is /dev, then name could be ./log.
+
+ If a name is none of the above, lsof will list any
+ open files whose device and inode match that of the
+ specified path name.
+
+ If you have also specified the -b option, the only
+ names you may safely specify are file systems for
+ which your mount table supplies alternate device
+ numbers. See the AVOIDING KERNEL BLOCKS and ALTER-
+ NATE DEVICE NUMBERS sections for more information.
+
+ Multiple file names are joined in a single ORed set
+ before participating in AND option selection.
+
+AFS
+ Lsof supports the recognition of AFS files for these
+ dialects (and AFS versions):
+
+ AIX 4.1.4 (AFS 3.4a)
+ HP-UX 9.0.5 (AFS 3.4a)
+ Linux 1.2.13 (AFS 3.3)
+ Solaris 2.[56] (AFS 3.4a)
+
+ It may recognize AFS files on other versions of these
+ dialects, but has not been tested there. Depending on how
+ AFS is implemented, lsof may recognize AFS files in other
+ dialects, or may have difficulties recognizing AFS files in
+ the supported dialects.
+
+ Lsof may have trouble identifying all aspects of AFS files
+ in supported dialects when AFS kernel support is implemented
+ via dynamic modules whose addresses do not appear in the
+
+
+
+SunOS 5.9 Last change: Revision-4.87 26
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ kernel's variable name list. In that case, lsof may have to
+ guess at the identity of AFS files, and might not be able to
+ obtain volume information from the kernel that is needed for
+ calculating AFS volume node numbers. When lsof can't com-
+ pute volume node numbers, it reports blank in the NODE
+ column.
+
+ The -A A option is available in some dialect implementations
+ of lsof for specifying the name list file where dynamic
+ module kernel addresses may be found. When this option is
+ available, it will be listed in the lsof help output,
+ presented in response to the -h or -?
+
+ See the lsof FAQ (The FAQ section gives its location.) for
+ more information about dynamic modules, their symbols, and
+ how they affect lsof options.
+
+ Because AFS path lookups don't seem to participate in the
+ kernel's name cache operations, lsof can't identify path
+ name components for AFS files.
+
+SECURITY
+ Lsof has three features that may cause security concerns.
+ First, its default compilation mode allows anyone to list
+ all open files with it. Second, by default it creates a
+ user-readable and user-writable device cache file in the
+ home directory of the real user ID that executes lsof. (The
+ list-all-open-files and device cache features may be dis-
+ abled when lsof is compiled.) Third, its -k and -m options
+ name alternate kernel name list or memory files.
+
+ Restricting the listing of all open files is controlled by
+ the compile-time HASSECURITY and HASNOSOCKSECURITY options.
+ When HASSECURITY is defined, lsof will allow only the root
+ user to list all open files. The non-root user may list
+ only open files of processes with the same user IDentifica-
+ tion number as the real user ID number of the lsof process
+ (the one that its user logged on with).
+
+ However, if HASSECURITY and HASNOSOCKSECURITY are both
+ defined, anyone may list open socket files, provided they
+ are selected with the -i option.
+
+ When HASSECURITY is not defined, anyone may list all open
+ files.
+
+ Help output, presented in response to the -h or -? option,
+ gives the status of the HASSECURITY and HASNOSOCKSECURITY
+ definitions.
+
+ See the Security section of the 00README file of the lsof
+ distribution for information on building lsof with the
+
+
+
+SunOS 5.9 Last change: Revision-4.87 27
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ HASSECURITY and HASNOSOCKSECURITY options enabled.
+
+ Creation and use of a user-readable and user-writable device
+ cache file is controlled by the compile-time HASDCACHE
+ option. See the DEVICE CACHE FILE section and the sections
+ that follow it for details on how its path is formed. For
+ security considerations it is important to note that in the
+ default lsof distribution, if the real user ID under which
+ lsof is executed is root, the device cache file will be
+ written in root's home directory - e.g., / or /root. When
+ HASDCACHE is not defined, lsof does not write or attempt to
+ read a device cache file.
+
+ When HASDCACHE is defined, the lsof help output, presented
+ in response to the -h, -D?, or -? options, will provide dev-
+ ice cache file handling information. When HASDCACHE is not
+ defined, the -h or -? output will have no -D option descrip-
+ tion.
+
+ Before you decide to disable the device cache file feature -
+ enabling it improves the performance of lsof by reducing the
+ startup overhead of examining all the nodes in /dev (or
+ /devices) - read the discussion of it in the 00DCACHE file
+ of the lsof distribution and the lsof FAQ (The FAQ section
+ gives its location.)
+
+ WHEN IN DOUBT, YOU CAN TEMPORARILY DISABLE THE USE OF THE
+ DEVICE CACHE FILE WITH THE -Di OPTION.
+
+ When lsof user declares alternate kernel name list or memory
+ files with the -k and -m options, lsof checks the user's
+ authority to read them with access(2). This is intended to
+ prevent whatever special power lsof's modes might confer on
+ it from letting it read files not normally accessible via
+ the authority of the real user ID.
+
+OUTPUT
+ This section describes the information lsof lists for each
+ open file. See the OUTPUT FOR OTHER PROGRAMS section for
+ additional information on output that can be processed by
+ another program.
+
+ Lsof only outputs printable (declared so by isprint(3)) 8
+ bit characters. Non-printable characters are printed in one
+ of three forms: the C ``\[bfrnt]'' form; the control char-
+ acter `^' form (e.g., ``^@''); or hexadecimal leading ``\x''
+ form (e.g., ``\xab''). Space is non-printable in the COM-
+ MAND column (``\x20'') and printable elsewhere.
+
+ For some dialects - if HASSETLOCALE is defined in the
+ dialect's machine.h header file - lsof will print the
+ extended 8 bit characters of a language locale. The lsof
+
+
+
+SunOS 5.9 Last change: Revision-4.87 28
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ process must be supplied a language locale environment vari-
+ able (e.g., LANG) whose value represents a known language
+ locale in which the extended characters are considered
+ printable by isprint(3). Otherwise lsof considers the
+ extended characters non-printable and prints them according
+ to its rules for non-printable characters, stated above.
+ Consult your dialect's setlocale(3) man page for the names
+ of other environment variables that may be used in place of
+ LANG - e.g., LC_ALL, LC_CTYPE, etc.
+
+ Lsof's language locale support for a dialect also covers
+ wide characters - e.g., UTF-8 - when HASSETLOCALE and
+ HASWIDECHAR are defined in the dialect's machine.h header
+ file, and when a suitable language locale has been defined
+ in the appropriate environment variable for the lsof pro-
+ cess. Wide characters are printable under those conditions
+ if iswprint(3) reports them to be. If HASSETLOCALE,
+ HASWIDECHAR and a suitable language locale aren't defined,
+ or if iswprint(3) reports wide characters that aren't print-
+ able, lsof considers the wide characters non-printable and
+ prints each of their 8 bits according to its rules for
+ non-printable characters, stated above.
+
+ Consult the answers to the "Language locale support" ques-
+ tions in the lsof FAQ (The FAQ section gives its location.)
+ for more information.
+
+ Lsof dynamically sizes the output columns each time it runs,
+ guaranteeing that each column is a minimum size. It also
+ guarantees that each column is separated from its predeces-
+ sor by at least one space.
+
+ COMMAND contains the first nine characters of the name of
+ the UNIX command associated with the process. If
+ a non-zero w value is specified to the +c w
+ option, the column contains the first w charac-
+ ters of the name of the UNIX command associated
+ with the process up to the limit of characters
+ supplied to lsof by the UNIX dialect. (See the
+ description of the +c w command or the lsof FAQ
+ for more information. The FAQ section gives its
+ location.)
+
+ If w is less than the length of the column title,
+ ``COMMAND'', it will be raised to that length.
+
+ If a zero w value is specified to the +c w
+ option, the column contains all the characters of
+ the name of the UNIX command associated with the
+ process.
+
+ All command name characters maintained by the
+
+
+
+SunOS 5.9 Last change: Revision-4.87 29
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ kernel in its structures are displayed in field
+ output when the command name descriptor (`c') is
+ specified. See the OUTPUT FOR OTHER COMMANDS
+ section for information on selecting field output
+ and the associated command name descriptor.
+
+ PID is the Process IDentification number of the pro-
+ cess.
+
+ TID is the task (thread) IDentification number, if
+ task (thread) reporting is supported by the
+ dialect and a task (thread) is being listed. (If
+ help output - i.e., the output of the -h or -?
+ options - shows this option, then task (thread)
+ reporting is supported by the dialect.)
+
+ A blank TID column in Linux indicates a process -
+ i.e., a non-task.
+
+ ZONE is the Solaris 10 and higher zone name. This
+ column must be selected with the -z option.
+
+ SECURITY-CONTEXT
+ is the SELinux security context. This column
+ must be selected with the -Z option. Note that
+ the -Z option is inhibited when SELinux is dis-
+ abled in the running Linux kernel.
+
+ PPID is the Parent Process IDentification number of
+ the process. It is only displayed when the -R
+ option has been specified.
+
+ PGID is the process group IDentification number asso-
+ ciated with the process. It is only displayed
+ when the -g option has been specified.
+
+ USER is the user ID number or login name of the user
+ to whom the process belongs, usually the same as
+ reported by ps(1). However, on Linux USER is the
+ user ID number or login that owns the directory
+ in /proc where lsof finds information about the
+ process. Usually that is the same value reported
+ by ps(1), but may differ when the process has
+ changed its effective user ID. (See the -l
+ option description for information on when a user
+ ID number or login name is displayed.)
+
+ FD is the File Descriptor number of the file or:
+
+
+ cwd current working directory;
+ Lnn library references (AIX);
+
+
+
+SunOS 5.9 Last change: Revision-4.87 30
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ err FD information error (see NAME column);
+ jld jail directory (FreeBSD);
+ ltx shared library text (code and data);
+ Mxx hex memory-mapped type number xx.
+ m86 DOS Merge mapped file;
+ mem memory-mapped file;
+ mmap memory-mapped device;
+ pd parent directory;
+ rtd root directory;
+ tr kernel trace file (OpenBSD);
+ txt program text (code and data);
+ v86 VP/ix mapped file;
+
+ FD is followed by one of these characters,
+ describing the mode under which the file is open:
+
+ r for read access;
+ w for write access;
+ u for read and write access;
+ space if mode unknown and no lock
+ character follows;
+ `-' if mode unknown and lock
+ character follows.
+
+ The mode character is followed by one of these
+ lock characters, describing the type of lock
+ applied to the file:
+
+ N for a Solaris NFS lock of unknown type;
+ r for read lock on part of the file;
+ R for a read lock on the entire file;
+ w for a write lock on part of the file;
+ W for a write lock on the entire file;
+ u for a read and write lock of any length;
+ U for a lock of unknown type;
+ x for an SCO OpenServer Xenix lock on part
+ of the file;
+ X for an SCO OpenServer Xenix lock on the
+ entire file;
+ space if there is no lock.
+
+ See the LOCKS section for more information on the
+ lock information character.
+
+ The FD column contents constitutes a single field
+ for parsing in post-processing scripts.
+
+ TYPE is the type of the node associated with the file
+ - e.g., GDIR, GREG, VDIR, VREG, etc.
+
+ or ``IPv4'' for an IPv4 socket;
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 31
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or ``IPv6'' for an open IPv6 network file - even
+ if its address is IPv4, mapped in an IPv6
+ address;
+
+ or ``ax25'' for a Linux AX.25 socket;
+
+ or ``inet'' for an Internet domain socket;
+
+ or ``lla'' for a HP-UX link level access file;
+
+ or ``rte'' for an AF_ROUTE socket;
+
+ or ``sock'' for a socket of unknown domain;
+
+ or ``unix'' for a UNIX domain socket;
+
+ or ``x.25'' for an HP-UX x.25 socket;
+
+ or ``BLK'' for a block special file;
+
+ or ``CHR'' for a character special file;
+
+ or ``DEL'' for a Linux map file that has been
+ deleted;
+
+ or ``DIR'' for a directory;
+
+ or ``DOOR'' for a VDOOR file;
+
+ or ``FIFO'' for a FIFO special file;
+
+ or ``KQUEUE'' for a BSD style kernel event queue
+ file;
+
+ or ``LINK'' for a symbolic link file;
+
+ or ``MPB'' for a multiplexed block file;
+
+ or ``MPC'' for a multiplexed character file;
+
+ or ``NOFD'' for a Linux /proc/<PID>/fd directory
+ that can't be opened -- the directory path
+ appears in the NAME column, followed by an error
+ message;
+
+ or ``PAS'' for a /proc/as file;
+
+ or ``PAXV'' for a /proc/auxv file;
+
+ or ``PCRE'' for a /proc/cred file;
+
+ or ``PCTL'' for a /proc control file;
+
+
+
+SunOS 5.9 Last change: Revision-4.87 32
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or ``PCUR'' for the current /proc process;
+
+ or ``PCWD'' for a /proc current working direc-
+ tory;
+
+ or ``PDIR'' for a /proc directory;
+
+ or ``PETY'' for a /proc executable type (etype);
+
+ or ``PFD'' for a /proc file descriptor;
+
+ or ``PFDR'' for a /proc file descriptor direc-
+ tory;
+
+ or ``PFIL'' for an executable /proc file;
+
+ or ``PFPR'' for a /proc FP register set;
+
+ or ``PGD'' for a /proc/pagedata file;
+
+ or ``PGID'' for a /proc group notifier file;
+
+ or ``PIPE'' for pipes;
+
+ or ``PLC'' for a /proc/lwpctl file;
+
+ or ``PLDR'' for a /proc/lpw directory;
+
+ or ``PLDT'' for a /proc/ldt file;
+
+ or ``PLPI'' for a /proc/lpsinfo file;
+
+ or ``PLST'' for a /proc/lstatus file;
+
+ or ``PLU'' for a /proc/lusage file;
+
+ or ``PLWG'' for a /proc/gwindows file;
+
+ or ``PLWI'' for a /proc/lwpsinfo file;
+
+ or ``PLWS'' for a /proc/lwpstatus file;
+
+ or ``PLWU'' for a /proc/lwpusage file;
+
+ or ``PLWX'' for a /proc/xregs file'
+
+ or ``PMAP'' for a /proc map file (map);
+
+ or ``PMEM'' for a /proc memory image file;
+
+ or ``PNTF'' for a /proc process notifier file;
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 33
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or ``POBJ'' for a /proc/object file;
+
+ or ``PODR'' for a /proc/object directory;
+
+ or ``POLP'' for an old format /proc light weight
+ process file;
+
+ or ``POPF'' for an old format /proc PID file;
+
+ or ``POPG'' for an old format /proc page data
+ file;
+
+ or ``PORT'' for a SYSV named pipe;
+
+ or ``PREG'' for a /proc register file;
+
+ or ``PRMP'' for a /proc/rmap file;
+
+ or ``PRTD'' for a /proc root directory;
+
+ or ``PSGA'' for a /proc/sigact file;
+
+ or ``PSIN'' for a /proc/psinfo file;
+
+ or ``PSTA'' for a /proc status file;
+
+ or ``PSXSEM'' for a POSIX semaphore file;
+
+ or ``PSXSHM'' for a POSIX shared memory file;
+
+ or ``PUSG'' for a /proc/usage file;
+
+ or ``PW'' for a /proc/watch file;
+
+ or ``PXMP'' for a /proc/xmap file;
+
+ or ``REG'' for a regular file;
+
+ or ``SMT'' for a shared memory transport file;
+
+ or ``STSO'' for a stream socket;
+
+ or ``UNNM'' for an unnamed type file;
+
+ or ``XNAM'' for an OpenServer Xenix special file
+ of unknown type;
+
+ or ``XSEM'' for an OpenServer Xenix semaphore
+ file;
+
+ or ``XSD'' for an OpenServer Xenix shared data
+ file;
+
+
+
+SunOS 5.9 Last change: Revision-4.87 34
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or the four type number octets if the correspond-
+ ing name isn't known.
+
+ FILE-ADDR contains the kernel file structure address when f
+ has been specified to +f;
+
+ FCT contains the file reference count from the kernel
+ file structure when c has been specified to +f;
+
+ FILE-FLAG when g or G has been specified to +f, this field
+ contains the contents of the f_flag[s] member of
+ the kernel file structure and the kernel's
+ per-process open file flags (if available); `G'
+ causes them to be displayed in hexadecimal; `g',
+ as short-hand names; two lists may be displayed
+ with entries separated by commas, the lists
+ separated by a semicolon (`;'); the first list
+ may contain short-hand names for f_flag[s] values
+ from the following table:
+
+
+ AIO asynchronous I/O (e.g., FAIO)
+ AP append
+ ASYN asynchronous I/O (e.g., FASYNC)
+ BAS block, test, and set in use
+ BKIU block if in use
+ BL use block offsets
+ BSK block seek
+ CA copy avoid
+ CIO concurrent I/O
+ CLON clone
+ CLRD CL read
+ CR create
+ DF defer
+ DFI defer IND
+ DFLU data flush
+ DIR direct
+ DLY delay
+ DOCL do clone
+ DSYN data-only integrity
+ DTY must be a directory
+ EVO event only
+ EX open for exec
+ EXCL exclusive open
+ FSYN synchronous writes
+ GCDF defer during unp_gc() (AIX)
+ GCMK mark during unp_gc() (AIX)
+ GTTY accessed via /dev/tty
+ HUP HUP in progress
+ KERN kernel
+ KIOC kernel-issued ioctl
+ LCK has lock
+
+
+
+SunOS 5.9 Last change: Revision-4.87 35
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ LG large file
+ MBLK stream message block
+ MK mark
+ MNT mount
+ MSYN multiplex synchronization
+ NATM don't update atime
+ NB non-blocking I/O
+ NBDR no BDRM check
+ NBIO SYSV non-blocking I/O
+ NBF n-buffering in effect
+ NC no cache
+ ND no delay
+ NDSY no data synchronization
+ NET network
+ NFLK don't follow links
+ NMFS NM file system
+ NOTO disable background stop
+ NSH no share
+ NTTY no controlling TTY
+ OLRM OLR mirror
+ PAIO POSIX asynchronous I/O
+ PP POSIX pipe
+ R read
+ RC file and record locking cache
+ REV revoked
+ RSH shared read
+ RSYN read synchronization
+ RW read and write access
+ SL shared lock
+ SNAP cooked snapshot
+ SOCK socket
+ SQSH Sequent shared set on open
+ SQSV Sequent SVM set on open
+ SQR Sequent set repair on open
+ SQS1 Sequent full shared open
+ SQS2 Sequent partial shared open
+ STPI stop I/O
+ SWR synchronous read
+ SYN file integrity while writing
+ TCPM avoid TCP collision
+ TR truncate
+ W write
+ WKUP parallel I/O synchronization
+ WTG parallel I/O synchronization
+ VH vhangup pending
+ VTXT virtual text
+ XL exclusive lock
+
+ this list of names was derived from F* #define's
+ in dialect header files <fcntl.h>, <linux</fs.h>,
+ <sys/fcntl.c>, <sys/fcntlcom.h>, and
+ <sys/file.h>; see the lsof.h header file for a
+
+
+
+SunOS 5.9 Last change: Revision-4.87 36
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ list showing the correspondence between the above
+ short-hand names and the header file definitions;
+
+ the second list (after the semicolon) may contain
+ short-hand names for kernel per-process open file
+ flags from this table:
+
+
+ ALLC allocated
+ BR the file has been read
+ BHUP activity stopped by SIGHUP
+ BW the file has been written
+ CLSG closing
+ CX close-on-exec (see fcntl(F_SETFD))
+ LCK lock was applied
+ MP memory-mapped
+ OPIP open pending - in progress
+ RSVW reserved wait
+ SHMT UF_FSHMAT set (AIX)
+ USE in use (multi-threaded)
+
+ NODE-ID (or INODE-ADDR for some dialects) contains a
+ unique identifier for the file node (usually the
+ kernel vnode or inode address, but also occasion-
+ ally a concatenation of device and node number)
+ when n has been specified to +f;
+
+ DEVICE contains the device numbers, separated by commas,
+ for a character special, block special, regular,
+ directory or NFS file;
+
+ or ``memory'' for a memory file system node under
+ Tru64 UNIX;
+
+ or the address of the private data area of a
+ Solaris socket stream;
+
+ or a kernel reference address that identifies the
+ file (The kernel reference address may be used
+ for FIFO's, for example.);
+
+ or the base address or device name of a Linux
+ AX.25 socket device.
+
+ Usually only the lower thirty two bits of Tru64
+ UNIX kernel addresses are displayed.
+
+ SIZE, SIZE/OFF, or OFFSET
+ is the size of the file or the file offset in
+ bytes. A value is displayed in this column only
+ if it is available. Lsof displays whatever value
+ - size or offset - is appropriate for the type of
+
+
+
+SunOS 5.9 Last change: Revision-4.87 37
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ the file and the version of lsof.
+
+ On some UNIX dialects lsof can't obtain accurate
+ or consistent file offset information from its
+ kernel data sources, sometimes just for particu-
+ lar kinds of files (e.g., socket files.) In
+ other cases, files don't have true sizes - e.g.,
+ sockets, FIFOs, pipes - so lsof displays for
+ their sizes the content amounts it finds in their
+ kernel buffer descriptors (e.g., socket buffer
+ size counts or TCP/IP window sizes.) Consult the
+ lsof FAQ (The FAQ section gives its location.)
+ for more information.
+
+ The file size is displayed in decimal; the offset
+ is normally displayed in decimal with a leading
+ ``0t'' if it contains 8 digits or less; in hexa-
+ decimal with a leading ``0x'' if it is longer
+ than 8 digits. (Consult the -o o option descrip-
+ tion for information on when 8 might default to
+ some other value.)
+
+ Thus the leading ``0t'' and ``0x'' identify an
+ offset when the column may contain both a size
+ and an offset (i.e., its title is SIZE/OFF).
+
+ If the -o option is specified, lsof always
+ displays the file offset (or nothing if no offset
+ is available) and labels the column OFFSET. The
+ offset always begins with ``0t'' or ``0x'' as
+ described above.
+
+ The lsof user can control the switch from ``0t''
+ to ``0x'' with the -o o option. Consult its
+ description for more information.
+
+ If the -s option is specified, lsof always
+ displays the file size (or nothing if no size is
+ available) and labels the column SIZE. The -o
+ and -s options are mutually exclusive; they can't
+ both be specified.
+
+ For files that don't have a fixed size - e.g.,
+ don't reside on a disk device - lsof will display
+ appropriate information about the current size or
+ position of the file if it is available in the
+ kernel structures that define the file.
+
+ NLINK contains the file link count when +L has been
+ specified;
+
+ NODE is the node number of a local file;
+
+
+
+SunOS 5.9 Last change: Revision-4.87 38
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or the inode number of an NFS file in the server
+ host;
+
+ or the Internet protocol type - e. g, ``TCP'';
+
+ or ``STR'' for a stream;
+
+ or ``CCITT'' for an HP-UX x.25 socket;
+
+ or the IRQ or inode number of a Linux AX.25
+ socket device.
+
+ NAME is the name of the mount point and file system on
+ which the file resides;
+
+ or the name of a file specified in the names
+ option (after any symbolic links have been
+ resolved);
+
+ or the name of a character special or block spe-
+ cial device;
+
+ or the local and remote Internet addresses of a
+ network file; the local host name or IP number is
+ followed by a colon (':'), the port, ``->'', and
+ the two-part remote address; IP addresses may be
+ reported as numbers or names, depending on the
+ +|-M, -n, and -P options; colon-separated IPv6
+ numbers are enclosed in square brackets; IPv4
+ INADDR_ANY and IPv6 IN6_IS_ADDR_UNSPECIFIED
+ addresses, and zero port numbers are represented
+ by an asterisk ('*'); a UDP destination address
+ may be followed by the amount of time elapsed
+ since the last packet was sent to the destina-
+ tion; TCP, UDP and UDPLITE remote addresses may
+ be followed by TCP/TPI information in parentheses
+ - state (e.g., ``(ESTABLISHED)'', ``(Unbound)''),
+ queue sizes, and window sizes (not all dialects)
+ - in a fashion similar to what netstat(1)
+ reports; see the -T option description or the
+ description of the TCP/TPI field in OUTPUT FOR
+ OTHER PROGRAMS for more information on state,
+ queue size, and window size;
+
+ or the address or name of a UNIX domain socket,
+ possibly including a stream clone device name, a
+ file system object's path name, local and foreign
+ kernel addresses, socket pair information, and a
+ bound vnode address;
+
+ or the local and remote mount point names of an
+ NFS file;
+
+
+
+SunOS 5.9 Last change: Revision-4.87 39
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or ``STR'', followed by the stream name;
+
+ or a stream character device name, followed by
+ ``->'' and the stream name or a list of stream
+ module names, separated by ``->'';
+
+ or ``STR:'' followed by the SCO OpenServer stream
+ device and module names, separated by ``->'';
+
+ or system directory name, `` -- '', and as many
+ components of the path name as lsof can find in
+ the kernel's name cache for selected dialects
+ (See the KERNEL NAME CACHE section for more
+ information.);
+
+ or ``PIPE->'', followed by a Solaris kernel pipe
+ destination address;
+
+ or ``COMMON:'', followed by the vnode device
+ information structure's device name, for a
+ Solaris common vnode;
+
+ or the address family, followed by a slash (`/'),
+ followed by fourteen comma-separated bytes of a
+ non-Internet raw socket address;
+
+ or the HP-UX x.25 local address, followed by the
+ virtual connection number (if any), followed by
+ the remote address (if any);
+
+ or ``(dead)'' for disassociated Tru64 UNIX files
+ - typically terminal files that have been flagged
+ with the TIOCNOTTY ioctl and closed by daemons;
+
+ or ``rd=<offset>'' and ``wr=<offset>'' for the
+ values of the read and write offsets of a FIFO;
+
+ or ``clone n:/dev/event'' for SCO OpenServer file
+ clones of the /dev/event device, where n is the
+ minor device number of the file;
+
+ or ``(socketpair: n)'' for a Solaris 2.6, 8, 9
+ or 10 UNIX domain socket, created by the
+ socketpair(3N) network function;
+
+ or ``no PCB'' for socket files that do not have a
+ protocol block associated with them, optionally
+ followed by ``, CANTSENDMORE'' if sending on the
+ socket has been disabled, or ``, CANTRCVMORE'' if
+ receiving on the socket has been disabled (e.g.,
+ by the shutdown(2) function);
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 40
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ or the local and remote addresses of a Linux IPX
+ socket file in the form <net>:[<node>:]<port>,
+ followed in parentheses by the transmit and
+ receive queue sizes, and the connection state;
+
+ or ``dgram'' or ``stream'' for the type UnixWare
+ 7.1.1 and above in-kernel UNIX domain sockets,
+ followed by a colon (':') and the local path name
+ when available, followed by ``->'' and the remote
+ path name or kernel socket address in hexadecimal
+ when available;
+
+ or the association value, association index, end-
+ point value, local address, local port, remote
+ address and remote port for Linux SCTP sockets;
+
+ or ``protocol: '' followed by the Linux socket's
+ protocol attribute.
+
+ For dialects that support a ``namefs'' file system, allowing
+ one file to be attached to another with fattach(3C), lsof
+ will add ``(FA:<address1><direction><address2>)'' to the
+ NAME column. <address1> and <address2> are hexadecimal
+ vnode addresses. <direction> will be ``<-'' if <address2>
+ has been fattach'ed to this vnode whose address is
+ <address1>; and ``->'' if <address1>, the vnode address of
+ this vnode, has been fattach'ed to <address2>. <address1>
+ may be omitted if it already appears in the DEVICE column.
+
+ Lsof may add two parenthetical notes to the NAME column for
+ open Solaris 10 files: ``(?)'' if lsof considers the path
+ name of questionable accuracy; and ``(deleted)'' if the -X
+ option has been specified and lsof detects the open file's
+ path name has been deleted. Consult the lsof FAQ (The FAQ
+ section gives its location.) for more information on these
+ NAME column additions.
+
+LOCKS
+ Lsof can't adequately report the wide variety of UNIX
+ dialect file locks in a single character. What it reports
+ in a single character is a compromise between the informa-
+ tion it finds in the kernel and the limitations of the
+ reporting format.
+
+ Moreover, when a process holds several byte level locks on a
+ file, lsof only reports the status of the first lock it
+ encounters. If it is a byte level lock, then the lock char-
+ acter will be reported in lower case - i.e., `r', `w', or
+ `x' - rather than the upper case equivalent reported for a
+ full file lock.
+
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 41
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ Generally lsof can only report on locks held by local
+ processes on local files. When a local process sets a lock
+ on a remotely mounted (e.g., NFS) file, the remote server
+ host usually records the lock state. One exception is
+ Solaris - at some patch levels of 2.3, and in all versions
+ above 2.4, the Solaris kernel records information on remote
+ locks in local structures.
+
+ Lsof has trouble reporting locks for some UNIX dialects.
+ Consult the BUGS section of this manual page or the lsof FAQ
+ (The FAQ section gives its location.) for more information.
+
+OUTPUT FOR OTHER PROGRAMS
+ When the -F option is specified, lsof produces output that
+ is suitable for processing by another program - e.g, an awk
+ or Perl script, or a C program.
+
+ Each unit of information is output in a field that is iden-
+ tified with a leading character and terminated by a NL (012)
+ (or a NUL (000) if the 0 (zero) field identifier character
+ is specified.) The data of the field follows immediately
+ after the field identification character and extends to the
+ field terminator.
+
+ It is possible to think of field output as process and file
+ sets. A process set begins with a field whose identifier is
+ `p' (for process IDentifier (PID)). It extends to the
+ beginning of the next PID field or the beginning of the
+ first file set of the process, whichever comes first.
+ Included in the process set are fields that identify the
+ command, the process group IDentification (PGID) number, the
+ task (thread) ID (TID), and the user ID (UID) number or
+ login name.
+
+ A file set begins with a field whose identifier is `f' (for
+ file descriptor). It is followed by lines that describe the
+ file's access mode, lock state, type, device, size, offset,
+ inode, protocol, name and stream module names. It extends
+ to the beginning of the next file or process set, whichever
+ comes first.
+
+ When the NUL (000) field terminator has been selected with
+ the 0 (zero) field identifier character, lsof ends each pro-
+ cess and file set with a NL (012) character.
+
+ Lsof always produces one field, the PID (`p') field. All
+ other fields may be declared optionally in the field iden-
+ tifier character list that follows the -F option. When a
+ field selection character identifies an item lsof does not
+ normally list - e.g., PPID, selected with -R - specification
+ of the field character - e.g., ``-FR'' - also selects the
+ listing of the item.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 42
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ It is entirely possible to select a set of fields that can-
+ not easily be parsed - e.g., if the field descriptor field
+ is not selected, it may be difficult to identify file sets.
+ To help you avoid this difficulty, lsof supports the -F
+ option; it selects the output of all fields with NL termina-
+ tors (the -F0 option pair selects the output of all fields
+ with NUL terminators). For compatibility reasons neither -F
+ nor -F0 select the raw device field.
+
+ These are the fields that lsof will produce. The single
+ character listed first is the field identifier.
+
+ a file access mode
+ c process command name (all characters from proc or
+ user structure)
+ C file structure share count
+ d file's device character code
+ D file's major/minor device number (0x<hexadecimal>)
+ f file descriptor
+ F file structure address (0x<hexadecimal>)
+ G file flaGs (0x<hexadecimal>; names if +fg follows)
+ g process group ID
+ i file's inode number
+ K tasK ID
+ k link count
+ l file's lock status
+ L process login name
+ m marker between repeated output
+ n file name, comment, Internet address
+ N node identifier (ox<hexadecimal>
+ o file's offset (decimal)
+ p process ID (always selected)
+ P protocol name
+ r raw device number (0x<hexadecimal>)
+ R parent process ID
+ s file's size (decimal)
+ S file's stream identification
+ t file's type
+ T TCP/TPI information, identified by prefixes (the
+ `=' is part of the prefix):
+ QR=<read queue size>
+ QS=<send queue size>
+ SO=<socket options and values> (not all dialects)
+ SS=<socket states> (not all dialects)
+ ST=<connection state>
+ TF=<TCP flags and values> (not all dialects)
+ WR=<window read size> (not all dialects)
+ WW=<window write size> (not all dialects)
+ (TCP/TPI information isn't reported for all supported
+ UNIX dialects. The -h or -? help output for the
+ -T option will show what TCP/TPI reporting can be
+ requested.)
+
+
+
+SunOS 5.9 Last change: Revision-4.87 43
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ u process user ID
+ z Solaris 10 and higher zone name
+ Z SELinux security context (inhibited when SELinux is disabled)
+ 0 use NUL field terminator character in place of NL
+ 1-9 dialect-specific field identifiers (The output
+ of -F? identifies the information to be found
+ in dialect-specific fields.)
+
+ You can get on-line help information on these characters and
+ their descriptions by specifying the -F? option pair.
+ (Escape the `?' character as your shell requires.) Addi-
+ tional information on field content can be found in the OUT-
+ PUT section.
+
+ As an example, ``-F pcfn'' will select the process ID (`p'),
+ command name (`c'), file descriptor (`f') and file name
+ (`n') fields with an NL field terminator character; ``-F
+ pcfn0'' selects the same output with a NUL (000) field ter-
+ minator character.
+
+ Lsof doesn't produce all fields for every process or file
+ set, only those that are available. Some fields are mutu-
+ ally exclusive: file device characters and file major/minor
+ device numbers; file inode number and protocol name; file
+ name and stream identification; file size and offset. One
+ or the other member of these mutually exclusive sets will
+ appear in field output, but not both.
+
+ Normally lsof ends each field with a NL (012) character.
+ The 0 (zero) field identifier character may be specified to
+ change the field terminator character to a NUL (000). A NUL
+ terminator may be easier to process with xargs (1), for
+ example, or with programs whose quoting mechanisms may not
+ easily cope with the range of characters in the field out-
+ put. When the NUL field terminator is in use, lsof ends
+ each process and file set with a NL (012).
+
+ Three aids to producing programs that can process lsof field
+ output are included in the lsof distribution. The first is
+ a C header file, lsof_fields.h, that contains symbols for
+ the field identification characters, indexes for storing
+ them in a table, and explanation strings that may be com-
+ piled into programs. Lsof uses this header file.
+
+ The second aid is a set of sample scripts that process field
+ output, written in awk, Perl 4, and Perl 5. They're located
+ in the scripts subdirectory of the lsof distribution.
+
+ The third aid is the C library used for the lsof test suite.
+ The test suite is written in C and uses field output to
+ validate the correct operation of lsof. The library can be
+ found in the tests/LTlib.c file of the lsof distribution.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 44
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ The library uses the first aid, the lsof_fields.h header
+ file.
+
+BLOCKS AND TIMEOUTS
+ Lsof can be blocked by some kernel functions that it uses -
+ lstat(2), readlink(2), and stat(2). These functions are
+ stalled in the kernel, for example, when the hosts where
+ mounted NFS file systems reside become inaccessible.
+
+ Lsof attempts to break these blocks with timers and child
+ processes, but the techniques are not wholly reliable. When
+ lsof does manage to break a block, it will report the break
+ with an error message. The messages may be suppressed with
+ the -t and -w options.
+
+ The default timeout value may be displayed with the -h or -?
+ option, and it may be changed with the -S [t] option. The
+ minimum for t is two seconds, but you should avoid small
+ values, since slow system responsiveness can cause short
+ timeouts to expire unexpectedly and perhaps stop lsof before
+ it can produce any output.
+
+ When lsof has to break a block during its access of mounted
+ file system information, it normally continues, although
+ with less information available to display about open files.
+
+ Lsof can also be directed to avoid the protection of timers
+ and child processes when using the kernel functions that
+ might block by specifying the -O option. While this will
+ allow lsof to start up with less overhead, it exposes lsof
+ completely to the kernel situations that might block it.
+ Use this option cautiously.
+
+AVOIDING KERNEL BLOCKS
+ You can use the -b option to tell lsof to avoid using kernel
+ functions that would block. Some cautions apply.
+
+ First, using this option usually requires that your system
+ supply alternate device numbers in place of the device
+ numbers that lsof would normally obtain with the lstat(2)
+ and stat(2) kernel functions. See the ALTERNATE DEVICE
+ NUMBERS section for more information on alternate device
+ numbers.
+
+ Second, you can't specify names for lsof to locate unless
+ they're file system names. This is because lsof needs to
+ know the device and inode numbers of files listed with names
+ in the lsof options, and the -b option prevents lsof from
+ obtaining them. Moreover, since lsof only has device
+ numbers for the file systems that have alternates, its abil-
+ ity to locate files on file systems depends completely on
+ the availability and accuracy of the alternates. If no
+
+
+
+SunOS 5.9 Last change: Revision-4.87 45
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ alternates are available, or if they're incorrect, lsof
+ won't be able to locate files on the named file systems.
+
+ Third, if the names of your file system directories that
+ lsof obtains from your system's mount table are symbolic
+ links, lsof won't be able to resolve the links. This is
+ because the -b option causes lsof to avoid the kernel
+ readlink(2) function it uses to resolve symbolic links.
+
+ Finally, using the -b option causes lsof to issue warning
+ messages when it needs to use the kernel functions that the
+ -b option directs it to avoid. You can suppress these mes-
+ sages by specifying the -w option, but if you do, you won't
+ see the alternate device numbers reported in the warning
+ messages.
+
+ALTERNATE DEVICE NUMBERS
+ On some dialects, when lsof has to break a block because it
+ can't get information about a mounted file system via the
+ lstat(2) and stat(2) kernel functions, or because you speci-
+ fied the -b option, lsof can obtain some of the information
+ it needs - the device number and possibly the file system
+ type - from the system mount table. When that is possible,
+ lsof will report the device number it obtained. (You can
+ suppress the report by specifying the -w option.)
+
+ You can assist this process if your mount table is supported
+ with an /etc/mtab or /etc/mnttab file that contains an
+ options field by adding a ``dev=xxxx'' field for mount
+ points that do not have one in their options strings. Note:
+ you must be able to edit the file - i.e., some mount tables
+ like recent Solaris /etc/mnttab or Linux /proc/mounts are
+ read-only and can't be modified.
+
+ You may also be able to supply device numbers using the +m
+ and +m m options, provided they are supported by your
+ dialect. Check the output of lsof's -h or -? options to see
+ if the +m and +m m options are available.
+
+ The ``xxxx'' portion of the field is the hexadecimal value
+ of the file system's device number. (Consult the st_dev
+ field of the output of the lstat(2) and stat(2) functions
+ for the appropriate values for your file systems.) Here's
+ an example from a Sun Solaris 2.6 /etc/mnttab for a file
+ system remotely mounted via NFS:
+
+ nfs ignore,noquota,dev=2a40001
+
+ There's an advantage to having ``dev=xxxx'' entries in your
+ mount table file, especially for file systems that are
+ mounted from remote NFS servers. When a remote server
+ crashes and you want to identify its users by running lsof
+
+
+
+SunOS 5.9 Last change: Revision-4.87 46
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ on one of its clients, lsof probably won't be able to get
+ output from the lstat(2) and stat(2) functions for the file
+ system. If it can obtain the file system's device number
+ from the mount table, it will be able to display the files
+ open on the crashed NFS server.
+
+ Some dialects that do not use an ASCII /etc/mtab or
+ /etc/mnttab file for the mount table may still provide an
+ alternative device number in their internal mount tables.
+ This includes AIX, Apple Darwin, FreeBSD, NetBSD, OpenBSD,
+ and Tru64 UNIX. Lsof knows how to obtain the alternative
+ device number for these dialects and uses it when its
+ attempt to lstat(2) or stat(2) the file system is blocked.
+
+ If you're not sure your dialect supplies alternate device
+ numbers for file systems from its mount table, use this lsof
+ incantation to see if it reports any alternate device
+ numbers:
+
+ lsof -b
+
+ Look for standard error file warning messages that begin
+ ``assuming "dev=xxxx" from ...''.
+
+KERNEL NAME CACHE
+ Lsof is able to examine the kernel's name cache or use other
+ kernel facilities (e.g., the ADVFS 4.x tag_to_path() func-
+ tion under Tru64 UNIX) on some dialects for most file system
+ types, excluding AFS, and extract recently used path name
+ components from it. (AFS file system path lookups don't use
+ the kernel's name cache; some Solaris VxFS file system
+ operations apparently don't use it, either.)
+
+ Lsof reports the complete paths it finds in the NAME column.
+ If lsof can't report all components in a path, it reports in
+ the NAME column the file system name, followed by a space,
+ two `-' characters, another space, and the name components
+ it has located, separated by the `/' character.
+
+ When lsof is run in repeat mode - i.e., with the -r option
+ specified - the extent to which it can report path name com-
+ ponents for the same file may vary from cycle to cycle.
+ That's because other running processes can cause the kernel
+ to remove entries from its name cache and replace them with
+ others.
+
+ Lsof's use of the kernel name cache to identify the paths of
+ files can lead it to report incorrect components under some
+ circumstances. This can happen when the kernel name cache
+ uses device and node number as a key (e.g., SCO OpenServer)
+ and a key on a rapidly changing file system is reused. If
+ the UNIX dialect's kernel doesn't purge the name cache entry
+
+
+
+SunOS 5.9 Last change: Revision-4.87 47
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ for a file when it is unlinked, lsof may find a reference to
+ the wrong entry in the cache. The lsof FAQ (The FAQ section
+ gives its location.) has more information on this situa-
+ tion.
+
+ Lsof can report path name components for these dialects:
+
+ FreeBSD
+ HP-UX
+ Linux
+ NetBSD
+ NEXTSTEP
+ OpenBSD
+ OPENSTEP
+ SCO OpenServer
+ SCO|Caldera UnixWare
+ Solaris
+ Tru64 UNIX
+
+ Lsof can't report path name components for these dialects:
+
+ AIX
+
+ If you want to know why lsof can't report path name com-
+ ponents for some dialects, see the lsof FAQ (The FAQ section
+ gives its location.)
+
+DEVICE CACHE FILE
+ Examining all members of the /dev (or /devices) node tree
+ with stat(2) functions can be time consuming. What's more,
+ the information that lsof needs - device number, inode
+ number, and path - rarely changes.
+
+ Consequently, lsof normally maintains an ASCII text file of
+ cached /dev (or /devices) information (exception: the
+ /proc-based Linux lsof where it's not needed.) The local
+ system administrator who builds lsof can control the way the
+ device cache file path is formed, selecting from these
+ options:
+
+ Path from the -D option;
+ Path from an environment variable;
+ System-wide path;
+ Personal path (the default);
+ Personal path, modified by an environment variable.
+
+ Consult the output of the -h, -D? , or -? help options for
+ the current state of device cache support. The help output
+ lists the default read-mode device cache file path that is
+ in effect for the current invocation of lsof. The -D?
+ option output lists the read-only and write device cache
+ file paths, the names of any applicable environment
+
+
+
+SunOS 5.9 Last change: Revision-4.87 48
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ variables, and the personal device cache path format.
+
+ Lsof can detect that the current device cache file has been
+ accidentally or maliciously modified by integrity checks,
+ including the computation and verification of a sixteen bit
+ Cyclic Redundancy Check (CRC) sum on the file's contents.
+ When lsof senses something wrong with the file, it issues a
+ warning and attempts to remove the current cache file and
+ create a new copy, but only to a path that the process can
+ legitimately write.
+
+ The path from which a lsof process may attempt to read a
+ device cache file may not be the same as the path to which
+ it can legitimately write. Thus when lsof senses that it
+ needs to update the device cache file, it may choose a dif-
+ ferent path for writing it from the path from which it read
+ an incorrect or outdated version.
+
+ If available, the -Dr option will inhibit the writing of a
+ new device cache file. (It's always available when speci-
+ fied without a path name argument.)
+
+ When a new device is added to the system, the device cache
+ file may need to be recreated. Since lsof compares the
+ mtime of the device cache file with the mtime and ctime of
+ the /dev (or /devices) directory, it usually detects that a
+ new device has been added; in that case lsof issues a warn-
+ ing message and attempts to rebuild the device cache file.
+
+ Whenever lsof writes a device cache file, it sets its owner-
+ ship to the real UID of the executing process, and its per-
+ mission modes to 0600, this restricting its reading and
+ writing to the file's owner.
+
+LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS
+ Two permissions of the lsof executable affect its ability to
+ access device cache files. The permissions are set by the
+ local system administrator when lsof is installed.
+
+ The first and rarer permission is setuid-root. It comes
+ into effect when lsof is executed; its effective UID is then
+ root, while its real (i.e., that of the logged-on user) UID
+ is not. The lsof distribution recommends that versions for
+ these dialects run setuid-root.
+
+ HP-UX 11.11 and 11.23
+ Linux
+
+ The second and more common permission is setgid. It comes
+ into effect when the effective group IDentification number
+ (GID) of the lsof process is set to one that can access ker-
+ nel memory devices - e.g., ``kmem'', ``sys'', or ``system''.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 49
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ An lsof process that has setgid permission usually
+ surrenders the permission after it has accessed the kernel
+ memory devices. When it does that, lsof can allow more
+ liberal device cache path formations. The lsof distribution
+ recommends that versions for these dialects run setgid and
+ be allowed to surrender setgid permission.
+
+ AIX 5.[12] and 5.3-ML1
+ Apple Darwin 7.x Power Macintosh systems
+ FreeBSD 4.x, 4.1x, 5.x and [6789].x for x86-based systems
+ FreeBSD 5.x and [6789].x for Alpha, AMD64 and Sparc64-based
+ systems
+ HP-UX 11.00
+ NetBSD 1.[456], 2.x and 3.x for Alpha, x86, and SPARC-based
+ systems
+ NEXTSTEP 3.[13] for NEXTSTEP architectures
+ OpenBSD 2.[89] and 3.[0-9] for x86-based systems
+ OPENSTEP 4.x
+ SCO OpenServer Release 5.0.6 for x86-based systems
+ SCO|Caldera UnixWare 7.1.4 for x86-based systems
+ Solaris 2.6, 8, 9 and 10
+ Tru64 UNIX 5.1
+
+ (Note: lsof for AIX 5L and above needs setuid-root permis-
+ sion if its -X option is used.)
+
+ Lsof for these dialects does not support a device cache, so
+ the permissions given to the executable don't apply to the
+ device cache file.
+
+ Linux
+
+DEVICE CACHE FILE PATH FROM THE -D OPTION
+ The -D option provides limited means for specifying the dev-
+ ice cache file path. Its ? function will report the
+ read-only and write device cache file paths that lsof will
+ use.
+
+ When the -D b, r, and u functions are available, you can use
+ them to request that the cache file be built in a specific
+ location (b[path]); read but not rebuilt (r[path]); or read
+ and rebuilt (u[path]). The b, r, and u functions are res-
+ tricted under some conditions. They are restricted when the
+ lsof process is setuid-root. The path specified with the r
+ function is always read-only, even when it is available.
+
+ The b, r, and u functions are also restricted when the lsof
+ process runs setgid and lsof doesn't surrender the setgid
+ permission. (See the LSOF PERMISSIONS THAT AFFECT DEVICE
+ CACHE FILE ACCESS section for a list of implementations that
+ normally don't surrender their setgid permission.)
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 50
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ A further -D function, i (for ignore), is always available.
+
+ When available, the b function tells lsof to read device
+ information from the kernel with the stat(2) function and
+ build a device cache file at the indicated path.
+
+ When available, the r function tells lsof to read the device
+ cache file, but not update it. When a path argument accom-
+ panies -Dr, it names the device cache file path. The r
+ function is always available when it is specified without a
+ path name argument. If lsof is not running setuid-root and
+ surrenders its setgid permission, a path name argument may
+ accompany the r function.
+
+ When available, the u function tells lsof to attempt to read
+ and use the device cache file. If it can't read the file,
+ or if it finds the contents of the file incorrect or out-
+ dated, it will read information from the kernel, and attempt
+ to write an updated version of the device cache file, but
+ only to a path it considers legitimate for the lsof process
+ effective and real UIDs.
+
+DEVICE CACHE PATH FROM AN ENVIRONMENT VARIABLE
+ Lsof's second choice for the device cache file is the con-
+ tents of the LSOFDEVCACHE environment variable. It avoids
+ this choice if the lsof process is setuid-root, or the real
+ UID of the process is root.
+
+ A further restriction applies to a device cache file path
+ taken from the LSOFDEVCACHE environment variable: lsof will
+ not write a device cache file to the path if the lsof pro-
+ cess doesn't surrender its setgid permission. (See the LSOF
+ PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS section for
+ information on implementations that don't surrender their
+ setgid permission.)
+
+ The local system administrator can disable the use of the
+ LSOFDEVCACHE environment variable or change its name when
+ building lsof. Consult the output of -D? for the environ-
+ ment variable's name.
+
+SYSTEM-WIDE DEVICE CACHE PATH
+ The local system administrator may choose to have a
+ system-wide device cache file when building lsof. That file
+ will generally be constructed by a special system adminis-
+ tration procedure when the system is booted or when the con-
+ tents of /dev or /devices) changes. If defined, it is
+ lsof's third device cache file path choice.
+
+ You can tell that a system-wide device cache file is in
+ effect for your local installation by examining the lsof
+ help option output - i.e., the output from the -h or -?
+
+
+
+SunOS 5.9 Last change: Revision-4.87 51
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ option.
+
+ Lsof will never write to the system-wide device cache file
+ path by default. It must be explicitly named with a -D
+ function in a root-owned procedure. Once the file has been
+ written, the procedure must change its permission modes to
+ 0644 (owner-read and owner-write, group-read, and
+ other-read).
+
+PERSONAL DEVICE CACHE PATH (DEFAULT)
+ The default device cache file path of the lsof distribution
+ is one recorded in the home directory of the real UID that
+ executes lsof. Added to the home directory is a second path
+ component of the form .lsof_hostname.
+
+ This is lsof's fourth device cache file path choice, and is
+ usually the default. If a system-wide device cache file
+ path was defined when lsof was built, this fourth choice
+ will be applied when lsof can't find the system-wide device
+ cache file. This is the only time lsof uses two paths when
+ reading the device cache file.
+
+ The hostname part of the second component is the base name
+ of the executing host, as returned by gethostname(2). The
+ base name is defined to be the characters preceding the
+ first `.' in the gethostname(2) output, or all the gethost-
+ name(2) output if it contains no `.'.
+
+ The device cache file belongs to the user ID and is readable
+ and writable by the user ID alone - i.e., its modes are
+ 0600. Each distinct real user ID on a given host that exe-
+ cutes lsof has a distinct device cache file. The hostname
+ part of the path distinguishes device cache files in an
+ NFS-mounted home directory into which device cache files are
+ written from several different hosts.
+
+ The personal device cache file path formed by this method
+ represents a device cache file that lsof will attempt to
+ read, and will attempt to write should it not exist or
+ should its contents be incorrect or outdated.
+
+ The -Dr option without a path name argument will inhibit the
+ writing of a new device cache file.
+
+ The -D? option will list the format specification for con-
+ structing the personal device cache file. The conversions
+ used in the format specification are described in the
+ 00DCACHE file of the lsof distribution.
+
+MODIFIED PERSONAL DEVICE CACHE PATH
+ If this option is defined by the local system administrator
+ when lsof is built, the LSOFPERSDCPATH environment variable
+
+
+
+SunOS 5.9 Last change: Revision-4.87 52
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ contents may be used to add a component of the personal dev-
+ ice cache file path.
+
+ The LSOFPERSDCPATH variable contents are inserted in the
+ path at the place marked by the local system administrator
+ with the ``%p'' conversion in the HASPERSDC format specifi-
+ cation of the dialect's machine.h header file. (It's placed
+ right after the home directory in the default lsof distribu-
+ tion.)
+
+ Thus, for example, if LSOFPERSDCPATH contains ``LSOF'', the
+ home directory is ``/Homes/abe'', the host name is
+ ``lsof.itap.purdue.edu'', and the HASPERSDC format is the
+ default (``%h/%p.lsof_%L''), the modified personal device
+ cache file path is:
+
+ /Homes/abe/LSOF/.lsof_vic
+
+ The LSOFPERSDCPATH environment variable is ignored when the
+ lsof process is setuid-root or when the real UID of the pro-
+ cess is root.
+
+ Lsof will not write to a modified personal device cache file
+ path if the lsof process doesn't surrender setgid permis-
+ sion. (See the LSOF PERMISSIONS THAT AFFECT DEVICE CACHE
+ FILE ACCESS section for a list of implementations that nor-
+ mally don't surrender their setgid permission.)
+
+ If, for example, you want to create a sub-directory of per-
+ sonal device cache file paths by using the LSOFPERSDCPATH
+ environment variable to name it, and lsof doesn't surrender
+ its setgid permission, you will have to allow lsof to create
+ device cache files at the standard personal path and move
+ them to your subdirectory with shell commands.
+
+ The local system administrator may: disable this option when
+ lsof is built; change the name of the environment variable
+ from LSOFPERSDCPATH to something else; change the HASPERSDC
+ format to include the personal path component in another
+ place; or exclude the personal path component entirely.
+ Consult the output of the -D? option for the environment
+ variable's name and the HASPERSDC format specification.
+
+DIAGNOSTICS
+ Errors are identified with messages on the standard error
+ file.
+
+ Lsof returns a one (1) if any error was detected, including
+ the failure to locate command names, file names, Internet
+ addresses or files, login names, NFS files, PIDs, PGIDs, or
+ UIDs it was asked to list. If the -V option is specified,
+ lsof will indicate the search items it failed to list.
+
+
+
+SunOS 5.9 Last change: Revision-4.87 53
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ It returns a zero (0) if no errors were detected and if it
+ was able to list some information about all the specified
+ search arguments.
+
+ When lsof cannot open access to /dev (or /devices) or one of
+ its subdirectories, or get information on a file in them
+ with stat(2), it issues a warning message and continues.
+ That lsof will issue warning messages about inaccessible
+ files in /dev (or /devices) is indicated in its help output
+ - requested with the -h or >B -? options - with the mes-
+ sage:
+
+ Inaccessible /dev warnings are enabled.
+
+ The warning message may be suppressed with the -w option.
+ It may also have been suppressed by the system administrator
+ when lsof was compiled by the setting of the WARNDEVACCESS
+ definition. In this case, the output from the help options
+ will include the message:
+
+ Inaccessible /dev warnings are disabled.
+
+ Inaccessible device warning messages usually disappear after
+ lsof has created a working device cache file.
+
+EXAMPLES
+ For a more extensive set of examples, documented more fully,
+ see the 00QUICKSTART file of the lsof distribution.
+
+ To list all open files, use:
+
+ lsof
+
+ To list all open Internet, x.25 (HP-UX), and UNIX domain
+ files, use:
+
+ lsof -i -U
+
+ To list all open IPv4 network files in use by the process
+ whose PID is 1234, use:
+
+ lsof -i 4 -a -p 1234
+
+ Presuming the UNIX dialect supports IPv6, to list only open
+ IPv6 network files, use:
+
+ lsof -i 6
+
+ To list all files using any protocol on ports 513, 514, or
+ 515 of host wonderland.cc.purdue.edu, use:
+
+ lsof -i @wonderland.cc.purdue.edu:513-515
+
+
+
+SunOS 5.9 Last change: Revision-4.87 54
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ To list all files using any protocol on any port of
+ mace.cc.purdue.edu (cc.purdue.edu is the default domain),
+ use:
+
+ lsof -i @mace
+
+ To list all open files for login name ``abe'', or user ID
+ 1234, or process 456, or process 123, or process 789, use:
+
+ lsof -p 456,123,789 -u 1234,abe
+
+ To list all open files on device /dev/hd4, use:
+
+ lsof /dev/hd4
+
+ To find the process that has /u/abe/foo open, use:
+
+ lsof /u/abe/foo
+
+ To send a SIGHUP to the processes that have /u/abe/bar open,
+ use:
+
+ kill -HUP `lsof -t /u/abe/bar`
+
+ To find any open file, including an open UNIX domain socket
+ file, with the name /dev/log, use:
+
+ lsof /dev/log
+
+ To find processes with open files on the NFS file system
+ named /nfs/mount/point whose server is inaccessible, and
+ presuming your mount table supplies the device number for
+ /nfs/mount/point, use:
+
+ lsof -b /nfs/mount/point
+
+ To do the preceding search with warning messages suppressed,
+ use:
+
+ lsof -bw /nfs/mount/point
+
+ To ignore the device cache file, use:
+
+ lsof -Di
+
+ To obtain PID and command name field output for each pro-
+ cess, file descriptor, file device number, and file inode
+ number for each file of each process, use:
+
+ lsof -FpcfDi
+
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 55
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ To list the files at descriptors 1 and 3 of every process
+ running the lsof command for login ID ``abe'' every 10
+ seconds, use:
+
+ lsof -c lsof -a -d 1 -d 3 -u abe -r10
+
+ To list the current working directory of processes running a
+ command that is exactly four characters long and has an 'o'
+ or 'O' in character three, use this regular expression form
+ of the -c c option:
+
+ lsof -c /^..o.$/i -a -d cwd
+
+ To find an IP version 4 socket file by its associated
+ numeric dot-form address, use:
+
+ lsof -i@128.210.15.17
+
+ To find an IP version 6 socket file (when the UNIX dialect
+ supports IPv6) by its associated numeric colon-form address,
+ use:
+
+ lsof -i@[0:1:2:3:4:5:6:7]
+
+ To find an IP version 6 socket file (when the UNIX dialect
+ supports IPv6) by an associated numeric colon-form address
+ that has a run of zeroes in it - e.g., the loop-back address
+ - use:
+
+ lsof -i@[::1]
+
+ To obtain a repeat mode marker line that contains the
+ current time, use:
+
+ lsof -rm====%T====
+
+ To add spaces to the previous marker line, use:
+
+ lsof -r "m==== %T ===="
+
+BUGS
+ Since lsof reads kernel memory in its search for open files,
+ rapid changes in kernel memory may produce unpredictable
+ results.
+
+ When a file has multiple record locks, the lock status char-
+ acter (following the file descriptor) is derived from a test
+ of the first lock structure, not from any combination of the
+ individual record locks that might be described by multiple
+ lock structures.
+
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 56
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ Lsof can't search for files with restrictive access permis-
+ sions by name unless it is installed with root set-UID per-
+ mission. Otherwise it is limited to searching for files to
+ which its user or its set-GID group (if any) has access per-
+ mission.
+
+ The display of the destination address of a raw socket
+ (e.g., for ping) depends on the UNIX operating system. Some
+ dialects store the destination address in the raw socket's
+ protocol control block, some do not.
+
+ Lsof can't always represent Solaris device numbers in the
+ same way that ls(1) does. For example, the major and minor
+ device numbers that the lstat(2) and stat(2) functions
+ report for the directory on which CD-ROM files are mounted
+ (typically /cdrom) are not the same as the ones that it
+ reports for the device on which CD-ROM files are mounted
+ (typically /dev/sr0). (Lsof reports the directory numbers.)
+
+ The support for /proc file systems is available only for BSD
+ and Tru64 UNIX dialects, Linux, and dialects derived from
+ SYSV R4 - e.g., FreeBSD, NetBSD, OpenBSD, Solaris, UnixWare.
+
+ Some /proc file items - device number, inode number, and
+ file size - are unavailable in some dialects. Searching for
+ files in a /proc file system may require that the full path
+ name be specified.
+
+ No text (txt) file descriptors are displayed for Linux
+ processes. All entries for files other than the current
+ working directory, the root directory, and numerical file
+ descriptors are labeled mem descriptors.
+
+ Lsof can't search for Tru64 UNIX named pipes by name,
+ because their kernel implementation of lstat(2) returns an
+ improper device number for a named pipe.
+
+ Lsof can't report fully or correctly on HP-UX 9.01, 10.20,
+ and 11.00 locks because of insufficient access to kernel
+ data or errors in the kernel data. See the lsof FAQ (The
+ FAQ section gives its location.) for details.
+
+ The AIX SMT file type is a fabrication. It's made up for
+ file structures whose type (15) isn't defined in the AIX
+ /usr/include/sys/file.h header file. One way to create such
+ file structures is to run X clients with the DISPLAY vari-
+ able set to ``:0.0''.
+
+ The +|-f[cfgGn] option is not supported under /proc-based
+ Linux lsof, because it doesn't read kernel structures from
+ kernel memory.
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 57
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ENVIRONMENT
+ Lsof may access these environment variables.
+
+ LANG defines a language locale. See setlo-
+ cale(3) for the names of other variables
+ that can be used in place of LANG - e.g.,
+ LC_ALL, LC_TYPE, etc.
+
+ LSOFDEVCACHE defines the path to a device cache file.
+ See the DEVICE CACHE PATH FROM AN ENVIRON-
+ MENT VARIABLE section for more informa-
+ tion.
+
+ LSOFPERSDCPATH defines the middle component of a modified
+ personal device cache file path. See the
+ MODIFIED PERSONAL DEVICE CACHE PATH sec-
+ tion for more information.
+
+FAQ
+ Frequently-asked questions and their answers (an FAQ) are
+ available in the 00FAQ file of the lsof distribution.
+
+ That file is also available via anonymous ftp from
+ lsof.itap.purdue.edu at pub/tools/unix/lsofFAQ. The URL is:
+
+ ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
+
+FILES
+ /dev/kmem kernel virtual memory device
+
+ /dev/mem physical memory device
+
+ /dev/swap system paging device
+
+ .lsof_hostname lsof's device cache file (The suffix,
+ hostname, is the first component of the
+ host's name returned by gethostname(2).)
+
+AUTHORS
+ Lsof was written by Victor A. Abell <abe@purdue.edu> of Pur-
+ due University. Many others have contributed to lsof.
+ They're listed in the 00CREDITS file of the lsof distribu-
+ tion.
+
+DISTRIBUTION
+ The latest distribution of lsof is available via anonymous
+ ftp from the host lsof.itap.purdue.edu. You'll find the
+ lsof distribution in the pub/tools/unix/lsof directory.
+
+ You can also use this URL:
+
+ ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof
+
+
+
+SunOS 5.9 Last change: Revision-4.87 58
+
+
+
+
+
+
+Maintenance Procedures LSOF(8)
+
+
+
+ Lsof is also mirrored elsewhere. When you access
+ lsof.itap.purdue.edu and change to its pub/tools/unix/lsof
+ directory, you'll be given a list of some mirror sites. The
+ pub/tools/unix/lsof directory also contains a more complete
+ list in its mirrors file. Use mirrors with caution - not
+ all mirrors always have the latest lsof revision.
+
+ Some pre-compiled Lsof executables are available on
+ lsof.itap.purdue.edu, but their use is discouraged - it's
+ better that you build your own from the sources. If you
+ feel you must use a pre-compiled executable, please read the
+ cautions that appear in the README files of the
+ pub/tools/unix/lsof/binaries subdirectories and in the 00*
+ files of the distribution.
+
+ More information on the lsof distribution can be found in
+ its README.lsof_<version> file. If you intend to get the
+ lsof distribution and build it, please read
+ README.lsof_<version> and the other 00* files of the distri-
+ bution before sending questions to the author.
+
+SEE ALSO
+ Not all the following manual pages may exist in every UNIX
+ dialect to which lsof has been ported.
+
+ access(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8),
+ fuser(1), gethostname(2), isprint(3), kill(1), localtime(3),
+ lstat(2), modload(8), mount(8), netstat(1), ofiles(8L),
+ perl(1), ps(1), readlink(2), setlocale(3), stat(2),
+ strftime(3), time(2), uname(1).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SunOS 5.9 Last change: Revision-4.87 59
+
+
+