| .ds VN 4.85 |
| .TH LSOF 8 Revision-\*(VN |
| .if !\n()P .nr )P 1v |
| .SH NAME |
| lsof \- list open files |
| .SH SYNOPSIS |
| .B lsof |
| [ |
| .B \-?abChKlnNOPRtUvVX |
| ] [ |
| .BI -A " A" |
| ] [ |
| .BI \-c " c" |
| ] [ |
| .BI +c " c" |
| ] [ |
| .BI +|\-d " d" |
| ] [ |
| .BI +|\-D " D" |
| ] [ |
| .BI +|\-e " s" |
| ] [ |
| .B +|\-f [cfgGn] |
| ] [ |
| .BI \-F " [f]" |
| ] [ |
| .BI \-g " [s]" |
| ] [ |
| .BI \-i " [i]" |
| ] [ |
| .BI \-k " k" |
| ] [ |
| .BI +|\-L " [l]" |
| ] [ |
| .BI +|\-m " m" |
| ] [ |
| .B +|\-M |
| ] [ |
| .BI \-o " [o]" |
| ] [ |
| .BI \-p " s" |
| ] [ |
| .BI +|\-r " [t[m<fmt>]]" |
| ] [ |
| .BI \-s " [p:s]" |
| ] [ |
| .BI \-S " [t]" |
| ] [ |
| .BI \-T " [t]" |
| ] [ |
| .BI \-u " s" |
| ] [ |
| .B +|\-w |
| ] [ |
| .BI \-x " [fl]" |
| ] [ |
| .BI \-z " [z]" |
| ] [ |
| .BI \-Z " [Z]" |
| ] [ |
| .B -- |
| ] [\fInames\fP] |
| .SH DESCRIPTION |
| .I Lsof |
| revision \*(VN lists on its standard output file information about files |
| opened by processes for the following UNIX dialects: |
| .PP |
| .nf |
| AIX 5.3 |
| Apple Darwin 9 and Mac OS X 10.[56] |
| FreeBSD 4.9 and 6.4 for x86-based systems |
| FreeBSD 8.[02] and 9.0 for AMD64-based systems |
| Linux 2.1.72 and above for x86-based systems |
| Solaris 9, 10 and 11 |
| .fi |
| .PP |
| (See the |
| .B DISTRIBUTION |
| section of this manual page for information on how to obtain the |
| latest |
| .I lsof |
| revision.) |
| .PP |
| 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. |
| .PP |
| Instead of a formatted display, |
| .I lsof |
| will produce output that can be parsed by other programs. |
| See the |
| .BR \-F , |
| option description, and the |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| section for more information. |
| .PP |
| In addition to producing a single output list, |
| .I 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 |
| .BI +|\-r " [t[m<fmt>]]" |
| option description for more information. |
| .SH OPTIONS |
| In the absence of any options, |
| .I lsof |
| lists all open files belonging to all active processes. |
| .PP |
| If any list request option is specified, other list requests must be |
| specifically requested \- e.g., if |
| .B \-U |
| is specified for the listing of UNIX socket files, NFS files won't be |
| listed unless |
| .B \-N |
| is also specified; |
| or if a user list is specified with the |
| .B \-u |
| option, UNIX domain socket files, belonging to users not in the list, |
| won't be listed unless the |
| .B \-U |
| option is also specified. |
| .PP |
| Normally list options that are specifically stated are ORed \- i.e., |
| specifying the |
| .B \-i |
| option without an address and the \fB\-u\fPfoo option produces a |
| listing of all network files OR files belonging to processes owned |
| by user ``foo''. |
| The exceptions are: |
| .TP \w'1)\ 'u |
| 1) |
| the `^' (negated) login name or user ID (UID), specified with the |
| .B \-u |
| option; |
| .TP \w'1)\ 'u |
| 2) |
| the `^' (negated) process ID (PID), specified with the |
| .B \-p |
| option; |
| .TP \w'1)\ 'u |
| 3) |
| the `^' (negated) process group ID (PGID), specified with the |
| .B \-g |
| option; |
| .TP \w'1)\ 'u |
| 4) |
| the `^' (negated) command, specified with the |
| .B \-c |
| option; |
| .TP \w'1)\ 'u |
| 5) |
| the (`^') negated TCP or UDP protocol state names, specified with the |
| .BI \-s " [p:s]" |
| option. |
| .PP |
| Since they represent exclusions, they are applied without ORing or ANDing |
| and take effect before any other selection criteria are applied. |
| .PP |
| The |
| .B \-a |
| option may be used to AND the selections. |
| For example, specifying |
| .BR \-a , |
| .BR \-U , |
| and \fB\-u\fPfoo produces a listing of only UNIX socket files that |
| belong to processes owned by user ``foo''. |
| .PP |
| Caution: the |
| .B \-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 |
| .B \-a |
| is placed, it causes the ANDing of all selection options. |
| .PP |
| 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 \fB\-i\fP@aaa.bbb, \fB\-i\fP@ccc.ddd, |
| .BR \-a , |
| and \fB\-u\fPfff,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. |
| .PP |
| Options may be grouped together following a single prefix -- e.g., |
| the option set ``\fB\-a \-b \-C\fP'' may be stated as |
| .BR \-abC . |
| However, since values are optional following |
| .BR +|\-f , |
| .BR \-F , |
| .BR \-g , |
| .BR \-i , |
| .BR +|\-L , |
| .BR \-o , |
| .BR +|\-r , |
| .BR \-s , |
| .BR \-S , |
| .BR \-T , |
| .B \-x |
| and |
| .BR \-z . |
| when you have no values for them be careful that the |
| following character isn't ambiguous. |
| For example, |
| .B \-Fn |
| might represent the |
| .B \-F |
| and |
| .B \-n |
| options, or it might represent the |
| .B n |
| field identifier character following the |
| .B \-F |
| option. |
| When ambiguity is possible, start a new option with a `-' |
| character \- e.g., ``\fB\-F \-n\fP''. |
| If the next option is a file name, follow the possibly ambiguous |
| option with ``--'' \- e.g., ``\fB\-F -- \fIname\fR''. |
| .PP |
| 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., \fB\-i\fP \- 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., \fB+|\-M\fP; ``-iM'' is not the same request as ``\-i +M''. |
| When in doubt, use separate options with appropriate prefixes. |
| .TP \w'names'u+4 |
| .B \-? \-h |
| These two equivalent options select a usage (help) output list. |
| .I 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.) |
| .TP \w'names'u+4 |
| .B \-a |
| causes list selection options to be ANDed, as described above. |
| .TP \w'names'u+4 |
| .BI \-A " A" |
| is available on systems configured for AFS whose AFS |
| kernel code is implemented via dynamic modules. |
| It allows the |
| .I lsof |
| user to specify |
| .I A |
| as an alternate name list file where the kernel addresses of the dynamic |
| modules might be found. |
| See the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information about dynamic modules, their |
| symbols, and how they affect |
| .IR lsof . |
| .TP \w'names'u+4 |
| .B \-b |
| causes |
| .I lsof |
| to avoid kernel functions that might block \- |
| .IR lstat (2), |
| .IR readlink (2), |
| and |
| .IR stat (2). |
| .IP |
| See the |
| .B "BLOCKS AND TIMEOUTS" |
| and |
| .B "AVOIDING KERNEL BLOCKS" |
| sections for information on using this option. |
| .TP \w'names'u+4 |
| .BI \-c " c" |
| selects the listing of files for processes executing the |
| command that begins with the characters of |
| .IR c . |
| Multiple commands may be specified, using multiple |
| .B \-c |
| options. |
| They are joined in a single ORed set before participating in |
| AND option selection. |
| .IP |
| If |
| .I c |
| begins with a `^', then the following characters specify a command |
| name whose processes are to be ignored (excluded.) |
| .IP |
| If |
| .I c |
| begins and ends with a slash ('/'), the characters 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: |
| .IP |
| .nf |
| b the regular expression is a basic one. |
| .br |
| i ignore the case of letters. |
| .br |
| x the regular expression is an extended one |
| .br |
| (default). |
| .fi |
| .IP |
| See the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information on basic and extended regular |
| expressions. |
| .IP |
| 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 |
| .B \-V |
| option is specified. |
| .TP \w'names'u+4 |
| .BI +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 |
| .I lsof |
| default is nine.) |
| .IP |
| Note that many UNIX dialects do not supply all command name characters |
| to |
| .I lsof |
| in the files and structures from which |
| .I lsof |
| obtains command name. |
| Often dialects limit the number of characters supplied in those sources. |
| For example, Linux 2.4.27 and Solaris 9 both limit command name length to |
| 16 characters. |
| .IP |
| If |
| .I w |
| is zero ('0'), all command characters supplied to |
| .I lsof |
| by the UNIX dialect will be printed. |
| .IP |
| If |
| .I w |
| is less than the length of the column title, ``COMMAND'', it will |
| be raised to that length. |
| .TP \w'names'u+4 |
| .B \-C |
| disables the reporting of any path name |
| components from the kernel's name cache. |
| See the |
| .B "KERNEL NAME CACHE" |
| section for more information. |
| .TP \w'names'u+4 |
| .BI +d " s" |
| causes |
| .I lsof |
| to search for all open instances of directory |
| .I s |
| and the files and directories it contains at its top level. |
| .B +d |
| does NOT descend the directory tree, rooted at |
| .IR s . |
| The |
| .BI +D " D" |
| option may be used to request a full\-descent directory tree search, |
| rooted at directory |
| .IR D . |
| .IP |
| Processing of the |
| .B +d |
| option does not follow symbolic links within |
| .I s |
| unless the |
| .B \-x |
| or |
| .B \-x " l" |
| option is also specified. |
| Nor does it |
| search for open files on file system mount points on subdirectories of |
| .I s |
| unless the |
| .B \-x |
| or |
| .B \-x " f" |
| option is also specified. |
| .IP |
| Note: the authority of the user of this option limits it to searching for |
| files that the user has permission to examine with the system |
| .IR stat (2) |
| function. |
| .TP \w'names'u+4 |
| .BI \-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 |
| .I s |
| \&\- e.g., ``cwd,1,3'', ``^6,^2''. |
| (There should be no spaces in the set.) |
| .IP |
| 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 permitted. |
| .IP |
| 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 descriptors 0 through 7. |
| .IP |
| Multiple file descriptor numbers are joined in a single ORed set before |
| participating in AND option selection. |
| .IP |
| When there are exclusion and inclusion members in the set, |
| .I lsof |
| reports them as errors and exits with a non\-zero return code. |
| .IP |
| See the description of File Descriptor (FD) output values in the |
| .B OUTPUT |
| section for more information on file descriptor names. |
| .TP \w'names'u+4 |
| .BI +D " D" |
| causes |
| .I lsof |
| to search for all open instances of directory |
| .I D |
| and all the files and directories it contains to its complete depth. |
| .IP |
| Processing of the |
| .B +D |
| option does not follow symbolic links within |
| .I D |
| unless the |
| .B \-x |
| or |
| .B \-x " l" |
| option is also specified. |
| Nor does it |
| search for open files on file system mount points on subdirectories of |
| .I D |
| unless the |
| .B \-x |
| or |
| .B \-x " f" |
| option is also specified. |
| .IP |
| Note: the authority of the user of this option limits it to searching for |
| files that the user has permission to examine with the system |
| .IR stat (2) |
| function. |
| .IP |
| Further note: |
| .I 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 |
| .IR D , |
| calling |
| .IR 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 |
| .I D |
| is large, these steps can take a long time, so use this option prudently. |
| .TP \w'names'u+4 |
| .BI \-D " D" |
| directs |
| .I lsof's |
| use of the device cache file. |
| The use of this option is sometimes restricted. |
| See the |
| .B "DEVICE CACHE FILE" |
| section and the sections that follow it for more information on this |
| option. |
| .IP |
| .B -D |
| must be followed by a function letter; the function letter may optionally |
| be followed by a path name. |
| .I Lsof |
| recognizes these function letters: |
| .IP |
| .nf |
| \fB?\fP \- report device cache file paths |
| \fBb\fP \- build the device cache file |
| \fBi\fP \- ignore the device cache file |
| \fBr\fP \- read the device cache file |
| \fBu\fP \- read and update the device cache file |
| .fi |
| .IP |
| The |
| .BR b , |
| .BR r , |
| and |
| .B u |
| functions, accompanied by a path name, are sometimes restricted. |
| When these functions are restricted, they will not appear in |
| the description of the |
| .B \-D |
| option that accompanies |
| .B \-h |
| or |
| .B \-? |
| option output. |
| See the |
| .B "DEVICE CACHE FILE" |
| section and the sections that follow it for more information on these |
| functions and when they're restricted. |
| .IP |
| The |
| .B ? |
| 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 |
| .I 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.) |
| .IP |
| When available, the |
| .BR b , |
| .BR r , |
| and |
| .B u |
| functions may be followed by the device cache file's path. |
| The standard default is |
| .I .lsof_hostname |
| in the home directory of the real user ID that executes |
| .IR lsof , |
| but this could have been changed when |
| .I lsof |
| was configured and compiled. |
| (The output of the |
| .B \-h |
| and |
| .B \-? |
| options show the current default prefix \- e.g., ``.lsof''.) |
| The suffix, |
| .IR hostname , |
| is the first component of the host's name returned by |
| .IR gethostname (2) . |
| .IP |
| When available, the |
| .B b |
| function directs |
| .I lsof |
| to build a new device cache file at the default or specified path. |
| .IP |
| The |
| .B i |
| function directs |
| .I lsof |
| to ignore the default device cache file and obtain its information |
| about devices via direct calls to the kernel. |
| .IP |
| The |
| .B r |
| function directs |
| .I 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 |
| .B r |
| function, when specified without a path name, prevents |
| .I lsof |
| from updating an incorrect or outdated device cache file, |
| or creating a new one in its place. |
| The |
| .B r |
| function is always available when it is specified without a |
| path name argument; it may be restricted by the permissions of the |
| .I lsof |
| process. |
| .IP |
| When available, the |
| .B u |
| function directs |
| .I 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 |
| .B \-D |
| option has been specified. |
| .TP \w'names'u+4 |
| .BI +|\-e " s" |
| exempts the file system whose path name is |
| .I s |
| from being subjected to kernel function calls that might block. |
| The |
| .B +e |
| option exempts |
| .IR stat (2), |
| .IR lstat (2) |
| and most |
| .IR readlink (2) |
| kernel function calls. |
| The |
| .B \-e |
| option exempts only |
| .IR stat(2) |
| and |
| .IR lstat (2) |
| kernel function calls. |
| Multiple file systems may be specified with separate |
| .B +|\-e |
| specifications and each may have |
| .IR readlink (2) |
| calls exempted or not. |
| .IP |
| This option is currently implemented only for Linux. |
| .IP |
| .B 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 and inode numbers. |
| (Device and inode numbers are acquired via the potentially blocking |
| .IR stat (2) |
| kernel call and are thus not available, but see the |
| .BI +|\-m " m" |
| option as a possible alternative way to supply device numbers.) |
| \fBUse this option with great care and fully specify the path name of the |
| file system to be exempted.\fP |
| .IP |
| 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'' |
| preface the values in the TYPE column, and the applicable exemption option |
| is added in parentheses to the end of the NAME column. |
| (Some device number information might be made available via the |
| .BI +|\-m " m" |
| option.) |
| .TP \w'names'u+4 |
| .B +|\-f [cfgGn] |
| .B f |
| by itself clarifies how path name arguments are to be interpreted. |
| When followed by |
| .BR c , |
| .BR f , |
| .BR g , |
| .BR G , |
| or |
| .B n |
| in any combination it specifies |
| that the listing of kernel file structure information is to be enabled |
| (`+') or inhibited (`\-'). |
| .IP |
| Normally a path name argument is taken to be a file system name if |
| it matches a mounted\-on directory name reported by |
| .IR mount (8), |
| or if it represents a block device, named in the |
| .I mount |
| output and associated with a mounted directory name. |
| When |
| .B +f |
| is specified, all path name arguments will be taken to be file |
| system names, and |
| .I 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. |
| .IP |
| When |
| .B \-f |
| is specified by itself, all path name arguments will be taken to be |
| simple files. |
| Thus, for example, the ``\fB\-f\fP\ -- /'' arguments direct lsof to search |
| for open files with a `/' path name, not all open files in the `/' |
| (root) file system. |
| .IP |
| Be careful to make sure |
| .B +f |
| and |
| .B \-f |
| are properly terminated 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 |
| .B +f |
| and |
| .B \-f |
| as in these examples. |
| .IP |
| .nf |
| $ lsof +f -- /file/system/name |
| $ lsof -f -- /file/name |
| .fi |
| .IP |
| The listing of information from kernel file structures, requested with the |
| .B +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 |
| .B f |
| is a plus sign (`+'), these characters request file structure information: |
| .IP |
| .nf |
| \fBc\fR file structure use count (not Linux) |
| \fBf\fR file structure address (not Linux) |
| \fBg\fR file flag abbreviations (Linux 2.6.22 and up) |
| \fBG\fR file flags in hexadecimal (Linux 2.6.22 and up) |
| \fBn\fR file structure node address (not Linux) |
| .fi |
| .IP |
| When the prefix is minus (`\-') the same characters disable the |
| listing of the indicated values. |
| .IP |
| 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. |
| .I Lsof |
| column output can be sorted by output columns holding the values |
| and listed to identify identical file use, or |
| .I lsof |
| field output can be parsed by an AWK or Perl post\-filter script, |
| or by a C program. |
| .TP \w'names'u+4 |
| .BI \-F " f" |
| specifies a character list, |
| .IR f , |
| that selects the fields to be output for processing by another program, |
| and the character that terminates each output field. |
| Each field to be output is specified with a single character in |
| .IR f . |
| The field terminator defaults to NL, but may be changed to NUL (000). |
| See the |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| section for a description of the field identification characters and |
| the field output process. |
| .IP |
| 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. |
| .IP |
| 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. |
| .IP |
| Other combinations of fields and their associated field terminator |
| character must be set with explicit entries in |
| .IR f , |
| as described in the |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| section. |
| .IP |
| When a field selection character identifies an item |
| .I lsof |
| does not normally list \- e.g., PPID, selected with |
| .BR \-R " \-" |
| specification of the field character \- e.g., ``\fB\-FR\fP'' \- |
| also selects the listing of the item. |
| .IP |
| When the field selection character list contains the single |
| character `?', |
| .I lsof |
| will display a help list of the field identification characters. |
| (Escape the `?' character as your shell requires.) |
| .TP \w'names'u+4 |
| .BI \-g " [s]" |
| excludes or selects the listing of files for the processes |
| whose optional process group IDentification (PGID) numbers are in the |
| comma\-separated set |
| .I s |
| \&\- e.g., ``123'' or ``123,^456''. |
| (There should be no spaces in the set.) |
| .IP |
| PGID numbers that begin with `^' (negation) represent exclusions. |
| .IP |
| 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. |
| .IP |
| The |
| .B \-g |
| option also enables the output display of PGID numbers. |
| When specified without a PGID set that's all it does. |
| .TP \w'names'u+4 |
| .BI \-i " [i]" |
| selects the listing of files any of whose Internet address |
| matches the address specified in \fIi\fP. |
| If no address is specified, this option selects the listing of all |
| Internet and x.25 (HP\-UX) network files. |
| .IP |
| If |
| .BI \-i 4 |
| or |
| .BI \-i 6 |
| is specified with no following address, only files of the indicated |
| IP version, IPv4 or IPv6, are displayed. |
| (An IPv6 specification may be used only if the dialects supports IPv6, |
| as indicated by ``[46]'' and ``IPv[46]'' in |
| .I lsof's |
| .B \-h |
| or |
| .B \-? |
| output.) |
| Sequentially specifying |
| .BR \-i 4, |
| followed by |
| .BR \-i 6 |
| is the same as specifying |
| .BR \-i , |
| and vice-versa. |
| Specifying |
| .BR \-i 4, |
| or |
| .BR \-i 6 |
| after |
| .B \-i |
| is the same as specifying |
| .BR \-i 4 |
| or |
| .BR \-i 6 |
| by itself. |
| .IP |
| Multiple addresses (up to a limit of 100) may be specified with multiple |
| .B \-i |
| options. |
| (A port number or service name range is counted as one address.) |
| They are joined in a single ORed set before participating in |
| AND option selection. |
| .IP |
| An Internet address is specified in the form (Items in square |
| brackets are optional.): |
| .IP |
| [\fI46\fP][\fIprotocol\fP][@\fIhostname\fP\||\|\fIhostaddr\fP][:\fIservice\fP\||\|\fIport\fP] |
| .IP |
| where: |
| .nf |
| .br |
| \fI46\fP specifies the IP version, IPv4 or IPv6 |
| .br |
| that applies to the following address. |
| .br |
| '6' may be be specified only if the UNIX |
| .br |
| dialect supports IPv6. If neither '4' nor |
| .br |
| '6' is specified, the following address |
| .br |
| applies to all IP versions. |
| .br |
| \fIprotocol\fP is a protocol name \- \fBTCP\fP, \fBUDP\fP |
| .br or \fBUDPLITE\fP. |
| .br |
| \fIhostname\fP is an Internet host name. Unless a |
| .br |
| specific IP version is specified, open |
| .br |
| network files associated with host names |
| .br |
| of all versions will be selected. |
| .br |
| \fIhostaddr\fP is a numeric Internet IPv4 address in |
| .br |
| dot form; or an IPv6 numeric address in |
| .br |
| colon form, enclosed in brackets, if the |
| .br |
| UNIX dialect supports IPv6. When an IP |
| .br |
| version is selected, only its numeric |
| .br |
| addresses may be specified. |
| .br |
| \fIservice\fP is an \fI/etc/services\fP name \- e.g., \fBsmtp\fP \- |
| or a list of them. |
| .br |
| \fIport\fP is a port number, or a list of them. |
| .fi |
| .IP |
| IPv6 options may be used only if the UNIX dialect supports IPv6. |
| To see if the dialect supports IPv6, run |
| .I lsof |
| and specify the |
| .B \-h |
| or |
| .B \-? |
| (help) option. |
| If the displayed description of the |
| .B \-i |
| option contains ``[46]'' and ``IPv[46]'', IPv6 is supported. |
| .IP |
| IPv4 host names and addresses may not be specified if network file selection |
| is limited to IPv6 with |
| .BR \-i " 6." |
| IPv6 host names and addresses may not be specified if network file selection |
| is limited to IPv4 with |
| .BR \-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'. |
| .IP |
| At least one address component \- |
| .BR 4, |
| .BR 6, |
| .IR protocol , |
| .IR hostname , |
| .IR hostaddr , |
| or |
| .I service |
| \&\- must be supplied. |
| The `@' character, leading the host specification, is always required; |
| as is the `:', leading the port specification. |
| Specify either |
| .I hostname |
| or |
| .IR hostaddr . |
| Specify either |
| .I service |
| name list or |
| .I port |
| number list. |
| If a |
| .I service |
| name list is specified, the |
| .I 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 \- for |
| .IR protocol . |
| .IP |
| .I Service |
| names and |
| .I 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 |
| .IR protocol . |
| 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. |
| .IP |
| Here are some sample addresses: |
| .nf |
| |
| .br |
| -i6 \- IPv6 only |
| .br |
| TCP:25 \- TCP and port 25 |
| .br |
| @1.2.3.4 \- Internet IPv4 host address 1.2.3.4 |
| .br |
| @[3ffe:1ebc::1]:1234 \- Internet IPv6 host address |
| 3ffe:1ebc::1, port 1234 |
| .br |
| UDP:who \- UDP who service port |
| .br |
| TCP@lsof.itap:513 \- TCP, port 513 and host name lsof.itap |
| .br |
| tcp@foo:1-10,smtp,99 \- TCP, ports 1 through 10, |
| service name \fIsmtp\fP, port 99, host name foo |
| .br |
| tcp@bar:1-smtp \- TCP, ports 1 through \fIsmtp\fP, host bar |
| .br |
| :time \- either TCP, UDP or UDPLITE time service port |
| .fi |
| .TP \w'names'u+4 |
| .B \-K |
| selects the listing of tasks of processes, on dialects |
| where task reporting is supported. |
| (If help output \- i.e., the output of the |
| .B \-h |
| or |
| .B \-? |
| options \- shows this option, then task reporting is supported by |
| the dialect.) |
| .IP |
| When |
| .B \-K |
| and |
| .B \-a |
| are both specified 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 |
| .B OUTPUT |
| section.) |
| .TP \w'names'u+4 |
| .BI \-k " k" |
| specifies a kernel name list file, |
| .IR k , |
| in place of /vmunix, /mach, etc. |
| .B \-k |
| is not available under AIX on the IBM RISC/System 6000. |
| .TP \w'names'u+4 |
| .B \-l |
| inhibits the conversion of user ID numbers to login names. |
| It is also useful when login name lookup is working improperly or slowly. |
| .TP \w'names'u+4 |
| .BI +|\-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. |
| .IP |
| When |
| .B +L |
| is specified without a following number, all link counts will be listed. |
| When |
| .B \-L |
| is specified (the default), no link counts will be listed. |
| .IP |
| When |
| .B +L |
| is followed by a number, only files having a link count less than |
| that number will be listed. |
| (No number may follow |
| .BR \-L .) |
| A specification of the form ``\fB+L1\fP'' will select open files that |
| have been unlinked. |
| A specification of the form ``\fB+aL1\ \fI<file_system>\fR'' will select |
| unlinked open files on the specified file system. |
| .IP |
| For other link count comparisons, use field output (\fB\-F\fP) |
| and a post\-processing script or program. |
| .TP \w'names'u+4 |
| .BI +|\-m " m" |
| specifies an alternate kernel memory file or activates |
| mount table supplement processing. |
| .IP |
| The option form |
| .BI \-m " m" |
| specifies a kernel memory file, |
| .IR m , |
| in place of |
| .I /dev/kmem |
| or |
| .I /dev/mem |
| \&\- e.g., a crash dump file. |
| .IP |
| The option form |
| .B +m |
| requests that a mount supplement file be written to the standard output |
| file. |
| All other options are silently ignored. |
| .IP |
| 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., |
| .IP |
| .nf |
| / 0x801 |
| .fi |
| .IP |
| .I Lsof |
| can use the mount supplement file to get device numbers for file systems |
| when it can't get them via |
| .IR stat (2) |
| or |
| .IR lstat (2). |
| .IP |
| The option form |
| .BI +m " m" |
| identifies |
| .I m |
| as a mount supplement file. |
| .IP |
| Note: the |
| .B +m |
| and |
| .BI +m " m" |
| options are not available for all supported dialects. |
| Check the output of |
| .I lsof's |
| .B \-h |
| or |
| .B \-? |
| options to see if the |
| .B +m |
| and |
| .BI +m " m" |
| options are available. |
| .TP \w'names'u+4 |
| .B +|\-M |
| Enables (\fB+\fP) or disables (\fB-\fP) the |
| reporting of portmapper 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.) |
| .IP |
| The default reporting mode is set by the |
| .I lsof |
| builder with the HASPMAPENABLED #define in the dialect's machine.h |
| header file; |
| .I lsof |
| is distributed with the HASPMAPENABLED #define deactivated, so |
| portmapper reporting is disabled by default and must be requested |
| with |
| .BR \+M . |
| Specifying |
| .I lsof's |
| .B \-h |
| or |
| .B \-? |
| 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, |
| .I 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. |
| .IP |
| When portmapper registration reporting is enabled, |
| .I lsof |
| may run a little more slowly or even become blocked when access to the |
| portmapper becomes congested or stopped. |
| Reverse the reporting mode to determine if portmapper registration |
| reporting is slowing or blocking |
| .IR lsof . |
| .IP |
| For purposes of portmapper registration reporting |
| .I 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 |
| .I lsof |
| ignore some foreign ports on machines with multiple interfaces |
| when the foreign Internet address is on a different interface |
| from the local one. |
| .IP |
| See the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for further discussion of portmapper registration |
| reporting issues. |
| .IP |
| 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 |
| .B \-h |
| or |
| .B \-? |
| help output will show the |
| .B +|\-M |
| option. |
| .TP \w'names'u+4 |
| .B \-n |
| inhibits the conversion of network numbers to |
| host names for network files. |
| Inhibiting conversion may make |
| .I lsof |
| run faster. |
| It is also useful when host name lookup is not working properly. |
| .TP \w'names'u+4 |
| .B \-N |
| selects the listing of NFS files. |
| .TP \w'names'u+4 |
| .BI \-o |
| directs |
| .I 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 |
| .I 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 |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information. |
| .IP |
| The |
| .B \-o |
| and |
| .B \-s |
| options are mutually exclusive; they can't both be specified. |
| When neither is specified, |
| .I lsof |
| displays whatever value \- size or offset \- is appropriate and |
| available for the type of the file. |
| .TP \w'names'u+4 |
| .BI \-o " o" |
| defines the number of decimal digits (\fIo\fP) to be |
| printed after the ``0t'' for a file offset before the form is switched |
| to ``0x...''. |
| An |
| .I o |
| value of zero (unlimited) directs |
| .I lsof |
| to use the ``0t'' form for all offset output. |
| .IP |
| This option does NOT direct |
| .I lsof |
| to display offset at all times; specify |
| .B \-o |
| (without a trailing number) to do that. |
| .BI \-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 |
| .I lsof |
| to display offset at all times with a decimal digit count of 10, use: |
| .IP |
| .nf |
| -o -o 10 |
| or |
| -oo10 |
| .fi |
| .IP |
| The default number of digits allowed after ``0t'' is normally 8, |
| but may have been changed by the lsof builder. |
| Consult the description of the |
| .BI \-o " o" |
| option in the output of the |
| .B \-h |
| or |
| .B \-? |
| option to determine the default that is in effect. |
| .TP \w'names'u+4 |
| .B \-O |
| directs |
| .I 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 |
| .B "BLOCKS AND TIMEOUTS" |
| and |
| .B "AVOIDING KERNEL BLOCKS" |
| sections for more information on kernel operations that may block |
| .IR lsof . |
| .IP |
| While use of this option will reduce |
| .I lsof |
| startup overhead, it may also cause |
| .I lsof |
| to hang when the kernel doesn't respond to a function. |
| Use this option cautiously. |
| .TP \w'names'u+4 |
| .BI \-p " s" |
| excludes or selects the listing of files for the processes |
| whose optional process IDentification (PID) numbers are in the |
| comma\-separated set |
| .I s |
| \&\- e.g., ``123'' or ``123,^456''. |
| (There should be no spaces in the set.) |
| .IP |
| PID numbers that begin with `^' (negation) represent exclusions. |
| .IP |
| Multiple process ID numbers are joined in a single ORed set before |
| participating in AND option selection. |
| However, PID exclusions are applied without ORing or ANDing |
| and take effect before other selection criteria are applied. |
| .TP \w'names'u+4 |
| .B \-P |
| inhibits the conversion of port numbers to port |
| names for network files. |
| Inhibiting the conversion may make |
| .I lsof |
| run a little faster. |
| It is also useful when port name lookup is not working properly. |
| .TP \w'names'u+4 |
| .BI +|\-r " [t[m<fmt>]]" |
| puts |
| .I lsof |
| in repeat mode. |
| There |
| .I lsof |
| lists open files as selected by other options, delays |
| .I t |
| seconds (default fifteen), then repeats the listing, delaying |
| and listing repetitively until stopped by a condition defined by |
| the prefix to the option. |
| .IP |
| If the prefix is a `\-', repeat mode is endless. |
| .I Lsof |
| must be terminated with an interrupt or quit signal. |
| .IP |
| If the prefix is `+', repeat mode will end the first cycle no open files |
| are listed \- and of course when |
| .I lsof |
| is stopped with an interrupt or quit signal. |
| When repeat mode ends because no files are listed, the process exit code |
| will be zero if any open files were ever listed; one, if none were ever |
| listed. |
| .IP |
| .I Lsof |
| marks the end of each listing: |
| if field output is in progress (the |
| .BR \-F , |
| option has been specified), the default marker is `m'; otherwise the |
| default marker is ``========''. |
| The marker is followed by a NL character. |
| .IP |
| The optional "m<fmt>" argument specifies a format for the marker line. |
| The <fmt> characters following `m' are interpreted as a format |
| specification to the |
| .IR strftime (3) |
| function, when both it and the |
| .IR localtime (3) |
| function are available in the dialect's C library. |
| Consult the |
| .IR strftime (3) |
| documentation for what may appear in its format specification. |
| Note that when field output is requested with the |
| .B \-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. |
| .IP |
| Repeat mode reduces |
| .I lsof |
| startup overhead, so it is more efficient to use this mode |
| than to call |
| .I lsof |
| repetitively from a shell script, for example. |
| .IP |
| To use repeat mode most efficiently, accompany |
| .B +|\-r |
| with specification of other |
| .I lsof |
| selection options, so the amount of kernel memory access |
| .I lsof |
| does will be kept to a minimum. |
| Options that filter at the process level \- e.g., |
| .BR \-c , |
| .BR \-g , |
| .BR \-p , |
| .B \-u |
| \&\- are the most efficient selectors. |
| .IP |
| Repeat mode is useful when coupled with field output (see the |
| .BR \-F , |
| option description) and a supervising |
| .I awk |
| or |
| .I Perl |
| script, or a C program. |
| .TP \w'names'u+4 |
| .B \-R |
| directs lsof to list the Parent Process IDentification |
| number in the PPID column. |
| .TP \w'names'u+4 |
| .BI \-s " [p:s]" |
| .B s |
| alone directs |
| .I 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. |
| .IP |
| When followed by a protocol name (\fIp\fR), 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 (\fIs\fP) preceded by a `^'; or |
| included if their name(s) are not preceded by a `^'. |
| .IP |
| When an inclusion list is defined, only network files with state |
| names in the list will be present in the |
| .I lsof |
| output. |
| Thus, specifying one state name means that only network files |
| with that lone state name will be listed. |
| .IP |
| Case is unimportant in the protocol or state names, but there may |
| be no spaces and the colon (`:') separating the protocol |
| name (\fIp\fP) and the state name list (\fIs\fP) is required. |
| .IP |
| If only TCP and UDP files are to be listed, as controlled by |
| the specified exclusions and inclusions, the |
| .B \-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 |
| .B \-i |
| option. |
| .IP |
| For example, to list only network files with TCP state LISTEN, use: |
| .IP |
| .nf |
| \-iTCP \-sTCP:LISTEN |
| .fi |
| .IP |
| Or, for example, to list network files with all UDP states except |
| Idle, use: |
| .IP |
| .nf |
| \-iUDP -sUDP:Idle |
| .fi |
| .IP |
| 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. |
| .IP |
| See the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information on how to use protocol state exclusion and |
| inclusion, including examples. |
| .IP |
| The |
| .B \-o |
| (without a following decimal digit count) and |
| .B \-s |
| option (without a following protocol and state name list) |
| are mutually exclusive; they can't both be specified. |
| When neither is specified, |
| .I lsof |
| displays whatever value \- size or offset \- is appropriate and |
| available for the type of file. |
| .IP |
| 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. |
| .TP \w'names'u+4 |
| .BI \-S " [t]" |
| specifies an optional time-out seconds value for kernel functions \- |
| .IR lstat (2), |
| .IR readlink (2), |
| and |
| .IR stat (2) |
| \- that might otherwise deadlock. |
| The minimum for |
| .I t |
| is two; |
| the default, fifteen; when no value is specified, the default is used. |
| .IP |
| See the |
| .B "BLOCKS AND TIMEOUTS" |
| section for more information. |
| .TP \w'names'u+4 |
| .BI \-T " [t]" |
| controls the reporting of some TCP/TPI information, also |
| reported by |
| .IR 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: |
| .IP |
| .nf |
| <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> |
| .fi |
| .IP |
| Not all values are reported for all UNIX dialects. |
| Items values (when available) are reported after the item name and '='. |
| .IP |
| When the field output mode is in effect (See |
| .BR "OUTPUT FOR OTHER PROGRAMS" .) |
| each item appears as a field with a `T' leading character. |
| .IP |
| .B \-T |
| with no following key characters disables TCP/TPI information reporting. |
| .IP |
| .B \-T |
| with following characters selects the reporting of specific TCP/TPI |
| information: |
| .IP |
| .nf |
| \fBf\fP selects reporting of socket options, |
| states and values, and TCP flags and |
| values. |
| \fBq\fP selects queue length reporting. |
| \fBs\fP selects connection state reporting. |
| \fBw\fP selects window size reporting. |
| .fi |
| .IP |
| Not all selections are enabled for some UNIX dialects. |
| State may be selected for all dialects and is reported by default. |
| The |
| .B \-h |
| or |
| .B \-? |
| help output for the |
| .B \-T |
| option will show what selections may be used with the UNIX dialect. |
| .IP |
| When |
| .B \-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 |
| .BR \-T . |
| (In effect, then, the default is equivalent to |
| .BR -Ts .) |
| For example, if queue lengths and state are desired, use |
| .BR \-Tqs . |
| .IP |
| 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. |
| .IP |
| ``SO='' precedes socket options and values; ``SS='', socket states; |
| and ``TF='', TCP flags and values. |
| .IP |
| 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: |
| .IP |
| .nf |
| 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) |
| .fi |
| .IP |
| Details on what socket options and values, socket states, and TCP flags |
| and values may be displayed 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 |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| .TP \w'names'u+4 |
| .B \-t |
| specifies that |
| .I lsof |
| should produce terse output with process identifiers only and no header \- |
| e.g., so that the output may be piped to |
| .IR kill (1). |
| .B \-t |
| selects the |
| .B \-w |
| option. |
| .TP \w'names'u+4 |
| .BI \-u " s" |
| selects the listing of files for the user whose login names |
| or user ID numbers are in the comma\-separated set |
| .I s |
| \&\- e.g., ``abe'', |
| or ``548,root''. |
| (There should be no spaces in the set.) |
| .IP |
| Multiple login names or user ID numbers are joined in a single ORed set |
| before participating in AND option selection. |
| .IP |
| 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 neither 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 |
| .I lsof |
| to exclude the listing of files belonging to root processes, |
| specify ``\-u^root'' or ``\-u^0''. |
| .TP \w'names'u+4 |
| .B \-U |
| selects the listing of UNIX domain socket files. |
| .TP \w'names'u+4 |
| .B \-v |
| selects the listing of |
| .I lsof |
| version information, including: revision number; |
| when the |
| .I lsof |
| binary was constructed; |
| who constructed the binary and where; |
| the name of the compiler used to construct the |
| .I lsof binary; |
| the version number of the compiler when readily available; |
| the compiler and loader flags used to construct the |
| .I lsof |
| binary; |
| and system information, typically the output of |
| .IR uname 's |
| .B \-a |
| option. |
| .TP \w'names'u+4 |
| .B \-V |
| directs |
| .I 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. |
| .IP |
| When other options are ANDed to search options, or compile\-time |
| options restrict the listing of some files, |
| .I 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 |
| containing the located search item. |
| .IP |
| 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 listing of open files. |
| .TP \w'names'u+4 |
| .B +|\-w |
| Enables (\fB+\fP) or disables (\fB-\fP) the suppression of warning messages. |
| .IP |
| The |
| .I lsof |
| builder may choose to have warning messages disabled or enabled by |
| default. |
| The default warning message state is indicated in the output of the |
| .B \-h |
| or |
| .B \-? |
| option. |
| Disabling warning messages when they are already disabled or enabling |
| them when already enabled is acceptable. |
| .IP |
| The |
| .B \-t |
| option selects the |
| .B \-w |
| option. |
| .TP \w'names'u+4 |
| .BI \-x " [fl]" |
| may accompany the |
| .B +d |
| and |
| .B +D |
| options to direct their processing to cross over symbolic |
| links and|or file system mount points encountered when |
| scanning the directory (\fB+d\fP) or directory tree (\fB+D\fP). |
| .IP |
| If |
| .B -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 |
| .B \-x |
| is specified without a parameter, the next argument must begin with '-' |
| or '+'. |
| .IP |
| The optional 'f' parameter enables file system mount point cross\-over |
| processing; 'l', symbolic link cross\-over processing. |
| .IP |
| The |
| .B \-x |
| option may not be supplied without also supplying a |
| .B +d |
| or |
| .B +D |
| option. |
| .TP \w'names'u+4 |
| .B \-X |
| This is a dialect\-specific option. |
| .HP \w'names'u+4 |
| \ \ \ \ AIX: |
| .br |
| This IBM AIX RISC/System 6000 option requests the reporting |
| of executed text file and shared library references. |
| .IP |
| .B WARNING: |
| because this option uses the kernel readx() function, its use on |
| a busy AIX system might cause an application process to hang so |
| completely 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 possibility it could happen. |
| .IP |
| By default use of readx() is disabled. |
| On AIX 5L and above |
| .I lsof |
| may need setuid\-root permission to perform the actions this |
| option requests. |
| .IP |
| The |
| .I lsof |
| builder may specify that the |
| .B \-X |
| option be restricted to processes whose real UID is root. |
| If that has been done, the |
| .B \-X |
| option will not appear in the |
| .B \-h |
| or |
| .B \-? |
| help output unless the real UID of the |
| .I lsof |
| process is root. |
| The default |
| .I lsof |
| distribution allows any UID to specify |
| .BR \-X, |
| so by default it will appear in the help output. |
| .IP |
| When AIX readx() use |
| is disabled, |
| .I 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. |
| .IP |
| The readx() function, used by |
| .I 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 |
| .IR lsof , |
| asking the kernel to search the directory \- e.g., by using |
| .IR open "(2) \-" |
| can cause dir_search() to loop forever, thus hanging the application process. |
| .IP |
| Consult the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| and the |
| .I 00README |
| file of the |
| .I lsof |
| distribution for a more complete description of the Stale Segment ID bug, |
| its APAR, and methods for defining readx() use when compiling |
| .IR lsof . |
| .HP \w'names'u+4 |
| \ \ \ \ Linux: |
| .br |
| This Linux option requests that |
| .I lsof |
| skip the reporting of information on all open TCP, UDP and UDPLITE IPv4 |
| and IPv6 files. |
| .IP |
| 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 |
| .I /proc/net/tcp* |
| and |
| .I /proc/net/udp* |
| files would take |
| .I lsof |
| a long time, and whose reporting is not of interest. |
| .IP |
| Use this option with care and only when you are sure that the |
| information you want |
| .I lsof |
| to display isn't associated with open TCP, UDP or UDPLITE socket files. |
| .HP \w'names'u+4 |
| \ \ \ \ Solaris 10 and above: |
| .br |
| This Solaris 10 and above option requests the reporting of cached |
| paths for files that have been deleted \- i.e., removed with |
| .IR rm (1) |
| or |
| .IR unlink (2). |
| .IP |
| The cached path is followed by the string ``\ (deleted)'' to indicate |
| that the path by which the file was opened has been deleted. |
| .IP |
| Because intervening changes made to the path \- i.e., renames with |
| .IR mv (1) |
| or |
| .IR rename (2) |
| \- are not recorded in the cached path, what |
| .I lsof |
| reports is only the path by which the file was opened, not its |
| possibly different final path. |
| .TP \w'names'u+4 |
| .BI \-z " [z]" |
| specifies how Solaris 10 and higher zone information is to be handled. |
| .IP |
| Without a following argument \- e.g., NO |
| .IR z " \-" |
| the option specifies that zone names are to be listed in the ZONE |
| output column. |
| .IP |
| The |
| .B \-z |
| option may be followed by a zone name, |
| .BI z . |
| That causes lsof to list only open files for processes in that zone. |
| Multiple |
| .BI \-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 conditions specified by other options and arguments. |
| .TP \w'names'u+4 |
| .BI \-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 running Linux kernel. |
| See |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| for more information on the 'Z' field output character. |
| .IP |
| Without a following argument \- e.g., NO |
| .IR Z " \-" |
| the option specifies that security contexts are to be listed in the |
| SECURITY\-CONTEXT output column. |
| .IP |
| The |
| .B \-Z |
| option may be followed by a wildcard security context name, |
| .BI Z . |
| That causes lsof to list only open files for processes in that security |
| context. |
| Multiple |
| .BI \-Z " Z" |
| option and argument pairs may 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 conditions specified by other options and arguments. |
| Note that |
| .I Z |
| can be A:B:C or *:B:C or A:B:* or *:*:C to match against the A:B:C context. |
| .TP \w'names'u+4 |
| .B -- |
| The double minus sign option is a marker that signals 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 signified by the presence of a minus sign in the following |
| option and before the start of the file names. |
| .TP \w'names'u+4 |
| .I 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. |
| .IP |
| If a |
| .I name |
| is the mounted\-on directory of a file system or the device of the |
| file system, |
| .I lsof |
| will list all the files open on the file system. |
| To be considered a file system, the |
| .I name |
| must match a mounted\-on directory name in |
| .IR mount (8) |
| output, or match the name of a block device associated with a mounted\-on |
| directory name. |
| The |
| .B +|\-f |
| option may be used to force |
| .I lsof |
| to consider a |
| .I name |
| a file system identifier (\fB+f\fP) or a simple file (\fB\-f\fP). |
| .IP |
| If |
| .I 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 |
| .I lsof |
| look for open files inside a directory name, use the |
| .BI +d " s" |
| and |
| .BI +D " D" |
| options. |
| .IP |
| If a |
| .I name |
| is the base name of a family of multiplexed files \- e. g, AIX's |
| .IR /dev/pt[cs] " \-" |
| .I lsof |
| will list all the associated multiplexed files on the device that |
| are open \- e.g., |
| .IR /dev/pt[cs]/1 , |
| .IR /dev/pt[cs]/2 , |
| etc. |
| .IP |
| If a |
| .I name |
| is a UNIX domain socket name, |
| .I 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., |
| .I ./file |
| \&\- in place of the |
| file's absolute path \- e.g., |
| .I /tmp/file |
| \&\- won't work because |
| .I lsof |
| must match the characters you specify with what it finds in the |
| kernel UNIX domain socket structures. |
| .IP |
| If a |
| .I name |
| is a Linux UNIX domain socket name, in one case |
| .I lsof |
| is able to search for it by its device and inode number, allowing |
| .I name |
| to be a relative 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 |
| .I /proc/net/unix |
| file; and it requires that |
| .I lsof |
| be able to obtain the device and node numbers of both the absolute path in |
| .I /proc/net/unix |
| and |
| .I name |
| via successful |
| .IR stat (2) |
| system calls. |
| When those conditions are met, |
| .I lsof |
| will be able to search for the UNIX domain socket when some path to it is |
| is specified in |
| .IR name . |
| Thus, for example, if the path is |
| .IR /dev/log , |
| and an |
| .I lsof |
| search is initiated when the working directory is |
| .IR /dev , |
| then |
| .I name |
| could be |
| .IR ./log . |
| .IP |
| If a |
| .I name |
| is none of the above, |
| .I lsof |
| will list any open files whose device and inode match that of the |
| specified path |
| .IR name . |
| .IP |
| If you have also specified the |
| .B \-b |
| option, |
| the only |
| .I names |
| you may safely specify are file systems for which your mount table |
| supplies alternate device numbers. |
| See the |
| .B "AVOIDING KERNEL BLOCKS" |
| and |
| .B "ALTERNATE DEVICE NUMBERS" |
| sections for more information. |
| .IP |
| Multiple file names are joined in a single ORed set before |
| participating in AND option selection. |
| .SH AFS |
| .I Lsof |
| supports the recognition of AFS files for these dialects (and AFS |
| versions): |
| .PP |
| .nf |
| 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) |
| .fi |
| .PP |
| It may recognize AFS files on other versions of these dialects, |
| but has not been tested there. |
| Depending on how AFS is implemented, |
| .I lsof |
| may recognize AFS files in other dialects, or may have difficulties |
| recognizing AFS files in the supported dialects. |
| .PP |
| .I 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 kernel's |
| variable name list. |
| In that case, |
| .I 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 |
| .I lsof |
| can't compute volume node numbers, it reports blank in the NODE column. |
| .PP |
| The |
| .BI \-A " A" |
| option is available in some dialect implementations of |
| .I 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 |
| .I lsof |
| help output, presented in response to the |
| .B \-h |
| or |
| .B \-? |
| .PP |
| See the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information about dynamic modules, their |
| symbols, and how they affect |
| .I lsof |
| options. |
| .PP |
| Because AFS path lookups don't seem to participate in the |
| kernel's name cache operations, |
| .I lsof |
| can't identify path name components for AFS files. |
| .SH SECURITY |
| .I 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 |
| .IR lsof . |
| (The list\-all\-open\-files and device cache features may be disabled when |
| .I lsof |
| is compiled.) |
| Third, its |
| .B \-k |
| and |
| .B \-m |
| options name alternate kernel name list or memory files. |
| .PP |
| Restricting the listing of all open files is controlled by the |
| compile\-time HASSECURITY and HASNOSOCKSECURITY options. |
| When HASSECURITY is defined, |
| .I 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 |
| IDentification number as the real user ID number of the |
| .I lsof |
| process (the one that its user logged on with). |
| .PP |
| However, if HASSECURITY and HASNOSOCKSECURITY are both defined, |
| anyone may list open socket files, provided they are selected |
| with the |
| .B \-i |
| option. |
| .PP |
| When HASSECURITY is not defined, anyone may list all open files. |
| .PP |
| Help output, presented in response to the |
| .B \-h |
| or |
| .B \-? |
| option, gives the status of the HASSECURITY and HASNOSOCKSECURITY definitions. |
| .PP |
| See the |
| .B Security |
| section of the |
| .I 00README |
| file of the |
| .I lsof |
| distribution for information on building |
| .I lsof |
| with the HASSECURITY and HASNOSOCKSECURITY options enabled. |
| .PP |
| Creation and use of a user\-readable and user\-writable device |
| cache file is controlled by the compile\-time HASDCACHE option. |
| See the |
| .B "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 |
| .I lsof |
| distribution, if the real user ID under which |
| .I lsof |
| is executed is root, the device cache file will be written in root's |
| home directory \- e.g., |
| .I / |
| or |
| .IR /root . |
| When HASDCACHE is not defined, |
| .I lsof |
| does not write or attempt to read a device cache file. |
| .PP |
| When HASDCACHE is defined, the |
| .I lsof |
| help output, presented in response to the |
| .BR \-h , |
| .BR \-D? , |
| or |
| .B \-? |
| options, will provide device cache file handling information. |
| When HASDCACHE is not defined, the |
| .B \-h |
| or |
| .B \-? |
| output will have no |
| .B \-D |
| option description. |
| .PP |
| Before you decide to disable the device cache file feature \- enabling |
| it improves the performance of |
| .I lsof |
| by reducing the startup overhead of examining all the nodes in |
| .I /dev |
| (or |
| .IR /devices ) |
| \&\- read the discussion of it in the |
| .I 00DCACHE |
| file of the |
| .I lsof |
| distribution and the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| .PP |
| WHEN IN DOUBT, YOU CAN TEMPORARILY DISABLE THE USE OF THE DEVICE CACHE FILE |
| WITH THE |
| .B \-Di |
| OPTION. |
| .PP |
| When |
| .I lsof |
| user declares alternate kernel name list or memory files with the |
| .B \-k |
| and |
| .B \-m |
| options, |
| .I lsof |
| checks the user's authority to read them with |
| .IR access (2). |
| This is intended to prevent whatever special power |
| .I lsof's |
| modes might confer on it from letting it read files not normally |
| accessible via the authority of the real user ID. |
| .SH OUTPUT |
| This section describes the information |
| .I lsof |
| lists for each open file. |
| See the |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| section for additional information on output that can be processed |
| by another program. |
| .PP |
| .I Lsof |
| only outputs printable (declared so by |
| .IR isprint (3)) |
| 8 bit characters. |
| Non\-printable characters are printed in one of three forms: |
| the C ``\\[bfrnt]'' form; |
| the control character `^' form (e.g., ``^@''); |
| or hexadecimal leading ``\\x'' form (e.g., ``\\xab''). |
| Space is non\-printable in the COMMAND column (``\\x20'') |
| and printable elsewhere. |
| .PP |
| For some dialects \- if HASSETLOCALE is defined in the dialect's |
| machine.h header file \- |
| .I lsof |
| will print the extended 8 bit characters of a language locale. |
| The |
| .I lsof |
| process must be supplied a language locale environment variable |
| (e.g., LANG) whose value represents a known language locale |
| in which the extended characters are considered printable by |
| .IR isprint (3). |
| Otherwise |
| .I lsof |
| considers the extended characters non\-printable and prints them according |
| to its rules for non\-printable characters, stated above. |
| Consult your dialect's |
| .IR 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. |
| .PP |
| .I 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 |
| .I lsof |
| process. |
| Wide characters are printable under those conditions if |
| .IR iswprint (3) |
| reports them to be. |
| If HASSETLOCALE, HASWIDECHAR and a suitable language locale aren't defined, |
| or if |
| .IR iswprint (3) |
| reports wide characters that aren't printable, |
| .I lsof |
| considers the wide characters non\-printable and prints each of their |
| 8 bits according to its rules for non\-printable characters, stated above. |
| .PP |
| Consult the answers to the "Language locale support" questions in the |
| lsof FAQ (The \fBFAQ\fP section gives its location.) for more information. |
| .PP |
| .I 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 predecessor |
| by at least one space. |
| .TP \w'COMMAND'u+4 |
| COMMAND |
| contains the first nine characters of the name of the UNIX command |
| associated with the process. |
| If a non\-zero |
| .I w |
| value is specified to the |
| .BI +c " w" |
| option, the column contains the first |
| .I w |
| characters of the name of the UNIX command associated with the process |
| up to the limit of characters supplied to |
| .I lsof |
| by the UNIX dialect. |
| (See the description of the |
| .BI +c " w" |
| command or the |
| .I lsof |
| FAQ for more information. |
| The \fBFAQ\fP section gives its location.) |
| .IP |
| If |
| .I w |
| is less than the length of the column title, ``COMMAND'', it will |
| be raised to that length. |
| .IP |
| If a zero |
| .I w |
| value is specified to the |
| .BI +c " w" |
| option, the column contains all the characters of the name of the UNIX command |
| associated with the process. |
| .IP |
| All command name characters maintained by the kernel in its structures |
| are displayed in field output when the command name descriptor (`c') |
| is specified. |
| See the |
| .B "OUTPUT FOR OTHER COMMANDS" |
| section for information on selecting field output and the associated |
| command name descriptor. |
| .TP |
| PID |
| is the Process IDentification number of the process. |
| .TP |
| TID |
| is the task IDentification number, if a task reporting is supported |
| by the dialect and a task is being listed. |
| (If help output \- i.e., the output of the |
| .B \-h |
| or |
| .B \-? |
| options \- shows this option, then task reporting is supported by |
| the dialect.) |
| .IP |
| A blank TID column indicates a process \- i.e., a non\-task. |
| .TP |
| ZONE |
| is the Solaris 10 and higher zone name. |
| This column must be selected with the |
| .B \-z |
| option. |
| .TP |
| SECURITY\-CONTEXT |
| is the SELinux security context. |
| This column must be selected with the |
| .B -Z |
| option. |
| Note that the |
| .B -Z |
| option is inhibited when SELinux is disabled in the running Linux |
| kernel. |
| .TP |
| PPID |
| is the Parent Process IDentification number of the process. |
| It is only displayed when the |
| .B \-R |
| option has been specified. |
| .TP |
| PGID |
| is the process group IDentification number associated with |
| the process. |
| It is only displayed when the |
| .B \-g |
| option has been specified. |
| .TP |
| USER |
| is the user ID number or login name of the user to whom |
| the process belongs, usually the same as reported by |
| .IR ps (1). |
| However, on Linux USER is the user ID number or login that owns |
| the directory in /proc where |
| .I lsof |
| finds information about the process. |
| Usually that is the same value reported by |
| .IR ps (1), |
| but may differ when the process has changed its effective user ID. |
| (See the |
| .B \-l |
| option description for information on when a user ID number or |
| login name is displayed.) |
| .TP |
| FD |
| is the File Descriptor number of the file or: |
| .IP |
| .nf |
| \fBcwd\fP current working directory; |
| .br |
| \fBL\fInn\fR library references (AIX); |
| .br |
| \fBerr\fR FD information error (see NAME column); |
| .br |
| \fBjld\fR jail directory (FreeBSD); |
| .br |
| \fBltx\fP shared library text (code and data); |
| .br |
| \fBMxx\fP hex memory\-mapped type number xx. |
| .br |
| \fBm86\fP DOS Merge mapped file; |
| .br |
| \fBmem\fP memory\-mapped file; |
| .br |
| \fBmmap\fP memory\-mapped device; |
| .br |
| \fBpd\fP parent directory; |
| .br |
| \fBrtd\fP root directory; |
| .br |
| \fBtr\fR kernel trace file (OpenBSD); |
| .br |
| \fBtxt\fP program text (code and data); |
| .br |
| \fBv86\fP VP/ix mapped file; |
| .fi |
| .IP |
| FD is followed by one of these characters, describing the mode under which |
| the file is open: |
| .IP |
| \fBr\fP for read access; |
| .br |
| \fBw\fP for write access; |
| .br |
| \fBu\fP for read and write access; |
| .br |
| space if mode unknown and no lock |
| .br |
| character follows; |
| .br |
| `\-' if mode unknown and lock |
| .br |
| character follows. |
| .IP |
| The mode character is followed by one of these lock characters, describing |
| the type of lock applied to the file: |
| .IP |
| \fBN\fP for a Solaris NFS lock of unknown type; |
| .br |
| \fBr\fP for read lock on part of the file; |
| .br |
| \fBR\fP for a read lock on the entire file; |
| .br |
| \fBw\fP for a write lock on part of the file; |
| .br |
| \fBW\fP for a write lock on the entire file; |
| .br |
| \fBu\fP for a read and write lock of any length; |
| .br |
| \fBU\fP for a lock of unknown type; |
| .br |
| \fBx\fP for an SCO OpenServer Xenix lock on part |
| of the file; |
| .br |
| \fBX\fP for an SCO OpenServer Xenix lock on the |
| entire file; |
| .br |
| space if there is no lock. |
| .IP |
| See the |
| .B LOCKS |
| section for more information on the lock information character. |
| .IP |
| The FD column contents constitutes a single field for parsing in |
| post\-processing scripts. |
| .TP |
| TYPE |
| is the type of the node associated with the file \- e.g., GDIR, GREG, |
| VDIR, VREG, etc. |
| .IP |
| or ``IPv4'' for an IPv4 socket; |
| .IP |
| or ``IPv6'' for an open IPv6 network file \- even if its address is |
| IPv4, mapped in an IPv6 address; |
| .IP |
| or ``ax25'' for a Linux AX.25 socket; |
| .IP |
| or ``inet'' for an Internet domain socket; |
| .IP |
| or ``lla'' for a HP\-UX link level access file; |
| .IP |
| or ``rte'' for an AF_ROUTE socket; |
| .IP |
| or ``sock'' for a socket of unknown domain; |
| .IP |
| or ``unix'' for a UNIX domain socket; |
| .IP |
| or ``x.25'' for an HP\-UX x.25 socket; |
| .IP |
| or ``BLK'' for a block special file; |
| .IP |
| or ``CHR'' for a character special file; |
| .IP |
| or ``DEL'' for a Linux map file that has been deleted; |
| .IP |
| or ``DIR'' for a directory; |
| .IP |
| or ``DOOR'' for a VDOOR file; |
| .IP |
| or ``FIFO'' for a FIFO special file; |
| .IP |
| or ``KQUEUE'' for a BSD style kernel event queue file; |
| .IP |
| or ``LINK'' for a symbolic link file; |
| .IP |
| or ``MPB'' for a multiplexed block file; |
| .IP |
| or ``MPC'' for a multiplexed character file; |
| .IP |
| 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; |
| .IP |
| or ``PAS'' for a |
| .I /proc/as |
| file; |
| .IP |
| or ``PAXV'' for a |
| .I /proc/auxv |
| file; |
| .IP |
| or ``PCRE'' for a |
| .I /proc/cred |
| file; |
| .IP |
| or ``PCTL'' for a |
| .I /proc |
| control file; |
| .IP |
| or ``PCUR'' for the current |
| .I /proc |
| process; |
| .IP |
| or ``PCWD'' for a |
| .I /proc |
| current working directory; |
| .IP |
| or ``PDIR'' for a |
| .I /proc |
| directory; |
| .IP |
| or ``PETY'' for a |
| .I /proc |
| executable type (\fIetype\fP); |
| .IP |
| or ``PFD'' for a |
| .I /proc |
| file descriptor; |
| .IP |
| or ``PFDR'' for a |
| .I /proc |
| file descriptor directory; |
| .IP |
| or ``PFIL'' for an executable |
| .I /proc |
| file; |
| .IP |
| or ``PFPR'' for a |
| .I /proc |
| FP register set; |
| .IP |
| or ``PGD'' for a |
| .I /proc/pagedata |
| file; |
| .IP |
| or ``PGID'' for a |
| .I /proc |
| group notifier file; |
| .IP |
| or ``PIPE'' for pipes; |
| .IP |
| or ``PLC'' for a |
| .I /proc/lwpctl |
| file; |
| .IP |
| or ``PLDR'' for a |
| .I /proc/lpw |
| directory; |
| .IP |
| or ``PLDT'' for a |
| .I /proc/ldt |
| file; |
| .IP |
| or ``PLPI'' for a |
| .I /proc/lpsinfo |
| file; |
| .IP |
| or ``PLST'' for a |
| .I /proc/lstatus |
| file; |
| .IP |
| or ``PLU'' for a |
| .I /proc/lusage |
| file; |
| .IP |
| or ``PLWG'' for a |
| .I /proc/gwindows |
| file; |
| .IP |
| or ``PLWI'' for a |
| .I /proc/lwpsinfo |
| file; |
| .IP |
| or ``PLWS'' for a |
| .I /proc/lwpstatus |
| file; |
| .IP |
| or ``PLWU'' for a |
| .I /proc/lwpusage |
| file; |
| .IP |
| or ``PLWX'' for a |
| .I /proc/xregs |
| file' |
| .IP |
| or ``PMAP'' for a |
| .I /proc |
| map file (\fImap\fP); |
| .IP |
| or ``PMEM'' for a |
| .I /proc |
| memory image file; |
| .IP |
| or ``PNTF'' for a |
| .I /proc |
| process notifier file; |
| .IP |
| or ``POBJ'' for a |
| .I /proc/object |
| file; |
| .IP |
| or ``PODR'' for a |
| .I /proc/object |
| directory; |
| .IP |
| or ``POLP'' for an old format |
| .I /proc |
| light weight process file; |
| .IP |
| or ``POPF'' for an old format |
| .I /proc |
| PID file; |
| .IP |
| or ``POPG'' for an old format |
| .I /proc |
| page data file; |
| .IP |
| or ``PORT'' for a SYSV named pipe; |
| .IP |
| or ``PREG'' for a |
| .I /proc |
| register file; |
| .IP |
| or ``PRMP'' for a |
| .I /proc/rmap |
| file; |
| .IP |
| or ``PRTD'' for a |
| .I /proc |
| root directory; |
| .IP |
| or ``PSGA'' for a |
| .I /proc/sigact |
| file; |
| .IP |
| or ``PSIN'' for a |
| .I /proc/psinfo |
| file; |
| .IP |
| or ``PSTA'' for a |
| .I /proc |
| status file; |
| .IP |
| or ``PSXSEM'' for a POSIX semaphore file; |
| .IP |
| or ``PSXSHM'' for a POSIX shared memory file; |
| .IP |
| or ``PUSG'' for a |
| .I /proc/usage |
| file; |
| .IP |
| or ``PW'' for a |
| .I /proc/watch |
| file; |
| .IP |
| or ``PXMP'' for a |
| .I /proc/xmap |
| file; |
| .IP |
| or ``REG'' for a regular file; |
| .IP |
| or ``SMT'' for a shared memory transport file; |
| .IP |
| or ``STSO'' for a stream socket; |
| .IP |
| or ``UNNM'' for an unnamed type file; |
| .IP |
| or ``XNAM'' for an OpenServer Xenix special file of unknown type; |
| .IP |
| or ``XSEM'' for an OpenServer Xenix semaphore file; |
| .IP |
| or ``XSD'' for an OpenServer Xenix shared data file; |
| .IP |
| or the four type number octets if the corresponding name isn't known. |
| .TP |
| FILE\-ADDR |
| contains the kernel file structure address when |
| .B f |
| has been specified to |
| .BR +f ; |
| .TP |
| FCT |
| contains the file reference count from the kernel file structure when |
| .B c |
| has been specified to |
| .BR +f ; |
| .TP |
| FILE\-FLAG |
| when |
| .B g |
| or |
| .B G |
| has been specified to |
| .BR +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: |
| .IP |
| .nf |
| 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 |
| 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 |
| .fi |
| .IP |
| 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 list showing the correspondence |
| between the above short\-hand names and the header file definitions; |
| .IP |
| the second list (after the semicolon) may contain short\-hand names |
| for kernel per\-process open file flags from this table: |
| .IP |
| .nf |
| 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) |
| .fi |
| .TP |
| 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 occasionally a concatenation of |
| device and node number) when |
| .B n |
| has been specified to |
| .BR +f ; |
| .TP |
| DEVICE |
| contains the device numbers, separated by commas, for a character special, |
| block special, regular, directory or NFS file; |
| .IP |
| or ``memory'' for a memory file system node under Tru64 UNIX; |
| .IP |
| or the address of the private data area of a Solaris socket |
| stream; |
| .IP |
| or a kernel reference address that identifies the file |
| (The kernel reference address may be used for FIFO's, for example.); |
| .IP |
| or |
| the base address or device name of a Linux AX.25 socket device. |
| .IP |
| Usually only the lower thirty two bits of Tru64 UNIX kernel addresses |
| are displayed. |
| .TP |
| 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. |
| .I Lsof |
| displays whatever value \- size or offset \- is appropriate for the type |
| of the file and the version of |
| .IR lsof . |
| .IP |
| On some UNIX dialects |
| .I 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.) |
| In other cases, files don't have true sizes \- e.g., sockets, FIFOs, |
| pipes \- so |
| .I 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 |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information. |
| .IP |
| 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 hexadecimal with a leading ``0x'' if |
| it is longer than 8 digits. |
| (Consult the |
| .BI \-o " o" |
| option description for information on when 8 might default to |
| some other value.) |
| .IP |
| 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). |
| .IP |
| If the |
| .B \-o |
| option is specified, |
| .I 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. |
| .IP |
| The |
| .I lsof |
| user can control the switch from ``0t'' to ``0x'' with the |
| .BI \-o " o" |
| option. |
| Consult its description for more information. |
| .IP |
| If the |
| .B \-s |
| option is specified, |
| .I lsof |
| always displays the file size (or nothing if no size is available) |
| and labels the column SIZE. |
| The |
| .B \-o |
| and |
| .B \-s |
| options are mutually exclusive; they can't both be specified. |
| .IP |
| For files that don't have a fixed size \- e.g., don't reside |
| on a disk device \- |
| .I 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. |
| .TP |
| NLINK |
| contains the file link count when |
| .B +L |
| has been specified; |
| .TP |
| NODE |
| is the node number of a local file; |
| .IP |
| or the inode number of an NFS file in the server host; |
| .IP |
| or the Internet protocol type \- e. g, ``TCP''; |
| .IP |
| or ``STR'' for a stream; |
| .IP |
| or ``CCITT'' for an HP\-UX x.25 socket; |
| .IP |
| or the IRQ or inode number of a Linux AX.25 socket device. |
| .TP |
| NAME |
| is the name of the mount point and file system on which the file resides; |
| .IP |
| or the name of a file specified in the |
| .I names |
| option (after any symbolic links have been resolved); |
| .IP |
| or the name of a character special or block special device; |
| .IP |
| 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 |
| .BR +|\-M , |
| .BR \-n , |
| and |
| .B \-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 destination; |
| 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 |
| .IR netstat (1) |
| reports; |
| see the |
| .B \-T |
| option description or the description of the TCP/TPI field in |
| .B "OUTPUT FOR OTHER PROGRAMS" |
| for more information on state, queue size, and window size; |
| .IP |
| 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; |
| .IP |
| or the local and remote mount point names of an NFS file; |
| .IP |
| or ``STR'', followed by the stream name; |
| .IP |
| or a stream character device name, followed by ``->'' and the stream name |
| or a list of stream module names, separated by ``->''; |
| .IP |
| or ``STR:'' followed by the SCO OpenServer stream device and module |
| names, separated by ``->''; |
| .IP |
| or system directory name, `` -- '', and as many components of the path |
| name as |
| .I lsof |
| can find in the kernel's name cache for selected dialects |
| (See the |
| .B "KERNEL NAME CACHE" |
| section for more information.); |
| .IP |
| or ``PIPE->'', followed by a Solaris kernel pipe destination address; |
| .IP |
| or ``COMMON:'', followed by the vnode device information structure's |
| device name, for a Solaris common vnode; |
| .IP |
| or the address family, followed by a slash (`/'), followed by fourteen |
| comma\-separated bytes of a non\-Internet raw socket address; |
| .IP |
| or the HP\-UX x.25 local address, followed by the virtual connection |
| number (if any), followed by the remote address (if any); |
| .IP |
| or ``(dead)'' for disassociated Tru64 UNIX files \- typically terminal files |
| that have been flagged with the TIOCNOTTY ioctl and closed by daemons; |
| .IP |
| or ``rd=<offset>'' and ``wr=<offset>'' for the values of the |
| read and write offsets of a FIFO; |
| .IP |
| or ``clone \fIn\fP:/dev/event'' for SCO OpenServer file clones of the |
| .I /dev/event |
| device, where |
| .I n |
| is the minor device number of the file; |
| .IP |
| or ``(socketpair: n)'' for a Solaris 2.6, 8, 9 or 10 |
| UNIX domain socket, created by the |
| .IR socketpair (3N) |
| network function; |
| .IP |
| 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 |
| .IR shutdown (2) |
| function); |
| .IP |
| 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; |
| .IP |
| 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. |
| .PP |
| For dialects that support a ``namefs'' file system, allowing one |
| file to be attached to another with |
| .IR fattach (3C), |
| .I 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. |
| .PP |
| .I |
| Lsof |
| may add two parenthetical notes to the NAME column for open Solaris 10 files: |
| \&``(?)'' if |
| .I lsof |
| considers the path name of questionable accuracy; |
| and ``(deleted)'' if the |
| .B \-X |
| option has been specified and |
| .I lsof |
| detects the open file's path name has been deleted. |
| Consult the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information on these NAME column additions. |
| .SH LOCKS |
| .I 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 |
| information it finds in the kernel and the limitations of the reporting |
| format. |
| .PP |
| Moreover, when a process holds several byte level locks on a file, |
| .I lsof |
| only reports the status of the first lock it encounters. |
| If it is a byte level lock, then the lock character will be reported |
| in lower case \- i.e., `r', `w', or `x' \- rather than the upper case |
| equivalent reported for a full file lock. |
| .PP |
| Generally |
| .I 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. |
| .PP |
| .I Lsof |
| has trouble reporting locks for some UNIX dialects. |
| Consult the |
| .B BUGS |
| section of this manual page or the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for more information. |
| .SH "OUTPUT FOR OTHER PROGRAMS" |
| When the |
| .B \-F |
| option is specified, |
| .I lsof |
| produces output that is suitable for processing by another program \- e.g, an |
| .I awk |
| or |
| .I Perl |
| script, or a C program. |
| .PP |
| Each unit of information is output in a field that is identified |
| 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. |
| .PP |
| 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 number and |
| the user ID (UID) number or login name. |
| .PP |
| 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. |
| .PP |
| When the NUL (000) field terminator has been selected with the |
| 0 (zero) field identifier character, |
| .I lsof |
| ends each process and file set with a NL (012) character. |
| .PP |
| .I Lsof |
| always produces one field, the PID (`p') field. |
| All other fields may be declared optionally in the field identifier |
| character list that follows the |
| .B \-F |
| option. |
| When a field selection character identifies an item |
| .I lsof |
| does not normally list \- e.g., PPID, selected with |
| .BR \-R " \-" |
| specification of the field character \- e.g., ``\fB\-FR\fP'' \- |
| also selects the listing of the item. |
| .PP |
| It is entirely possible to select a set of fields that cannot |
| 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, |
| .I lsof |
| supports the |
| .B \-F |
| option; it selects the output of all fields with NL terminators |
| (the |
| .B \-F0 |
| option pair selects the output of all fields with NUL terminators). |
| For compatibility reasons neither |
| .B \-F |
| nor |
| .B \-F0 |
| select the raw device field. |
| .PP |
| These are the fields that |
| .I lsof |
| will produce. |
| The single character listed first is the field identifier. |
| .PP |
| .nf |
| 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 \fB+fg\fP 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 \fB\-h\fP or \fB\-?\fP help output for the |
| \fB\-T\fP option will show what TCP/TPI reporting can be |
| requested.) |
| 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 \fB\-F?\fP identifies the information to be found |
| in dialect\-specific fields.) |
| .fi |
| .PP |
| You can get on\-line help information on these characters and their |
| descriptions by specifying the |
| .B \-F? |
| option pair. |
| (Escape the `?' character as your shell requires.) |
| Additional information on field content can be found in the |
| .B OUTPUT |
| section. |
| .PP |
| As an example, ``\fB\-F pcfn\fP'' will select the process ID (`p'), |
| command name (`c'), file descriptor (`f') and file name (`n') |
| fields with an NL field terminator character; ``\fB\-F pcfn0\fP'' |
| selects the same output with a NUL (000) field terminator character. |
| .PP |
| .I Lsof |
| doesn't produce all fields for every process or file set, only |
| those that are available. |
| Some fields are mutually 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. |
| .PP |
| Normally |
| .I 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 |
| .I xargs (1), |
| for example, or with programs whose quoting mechanisms may not |
| easily cope with the range of characters in the field output. |
| When the NUL field terminator is in use, |
| .I lsof |
| ends each process and file set with a NL (012). |
| .PP |
| Three aids to producing programs that can process |
| .I lsof |
| field output are included in the |
| .I lsof |
| distribution. |
| The first is a C header file, |
| .IR lsof_fields.h , |
| that contains symbols for the field identification characters, indexes for |
| storing them in a table, and explanation strings that may be compiled into |
| programs. |
| .I Lsof |
| uses this header file. |
| .PP |
| The second aid is a set of sample scripts that process field output, |
| written in |
| .IR awk , |
| .I Perl |
| 4, and |
| .I Perl |
| 5. |
| They're located in the |
| .I scripts |
| subdirectory of the |
| .I lsof |
| distribution. |
| .PP |
| The third aid is the C library used for the |
| .I lsof |
| test suite. |
| The test suite is written in C and uses field output to validate |
| the correct operation of |
| .IR lsof . |
| The library can be found in the |
| .I tests/LTlib.c |
| file of the |
| .I lsof |
| distribution. |
| The library uses the first aid, the |
| .I lsof_fields.h |
| header file. |
| .SH "BLOCKS AND TIMEOUTS" |
| .I Lsof |
| can be blocked by some kernel functions that it uses \- |
| .IR lstat (2), |
| .IR readlink (2), |
| and |
| .IR stat (2). |
| These functions are stalled in the kernel, for example, when the |
| hosts where mounted NFS file systems reside become inaccessible. |
| .PP |
| .I Lsof |
| attempts to break these blocks with timers and child processes, |
| but the techniques are not wholly reliable. |
| When |
| .I lsof |
| does manage to break a block, it will report the break with an error |
| message. |
| The messages may be suppressed with the |
| .B \-t |
| and |
| .B \-w |
| options. |
| .PP |
| The default timeout value may be displayed with the |
| .B \-h |
| or |
| .B \-? |
| option, and it may be changed with the |
| .BI \-S " [t]" |
| option. |
| The minimum for |
| .I t |
| is two seconds, but you should avoid small values, since slow system |
| responsiveness can cause short timeouts to expire unexpectedly and |
| perhaps stop |
| .I lsof |
| before it can produce any output. |
| .PP |
| When |
| .I 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. |
| .PP |
| .I 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 |
| .B \-O |
| option. |
| While this will allow |
| .I lsof |
| to start up with less overhead, it exposes |
| .I lsof |
| completely to the kernel situations that might block it. |
| Use this option cautiously. |
| .SH "AVOIDING KERNEL BLOCKS" |
| .PP |
| You can use the |
| .B \-b |
| option to tell |
| .I lsof |
| to avoid using kernel functions that would block. |
| Some cautions apply. |
| .PP |
| First, using this option usually requires that your system supply |
| alternate device numbers in place of the device numbers that |
| .I lsof |
| would normally obtain with the |
| .IR lstat (2) |
| and |
| .IR stat (2) |
| kernel functions. |
| See the |
| .B "ALTERNATE DEVICE NUMBERS" |
| section for more information on alternate device numbers. |
| .PP |
| Second, you can't specify |
| .I names |
| for |
| .I lsof |
| to locate unless they're file system names. |
| This is because |
| .I lsof |
| needs to know the device and inode numbers of files listed with |
| .I names |
| in the |
| .I lsof |
| options, and the |
| .B \-b |
| option prevents |
| .I lsof |
| from obtaining them. |
| Moreover, since |
| .I lsof |
| only has device numbers for the file systems that have alternates, |
| its ability to locate files on file systems depends completely on the |
| availability and accuracy of the alternates. |
| If no alternates are available, or if they're incorrect, |
| .I lsof |
| won't be able to locate files on the named file systems. |
| .PP |
| Third, if the names of your file system directories that |
| .I lsof |
| obtains from your system's mount table are symbolic links, |
| .I lsof |
| won't be able to resolve the links. |
| This is because the |
| .B \-b |
| option causes |
| .I lsof |
| to avoid the kernel |
| .IR readlink (2) |
| function it uses to resolve symbolic links. |
| .PP |
| Finally, using the |
| .B \-b |
| option causes |
| .I lsof |
| to issue warning messages when it needs to use the kernel functions |
| that the |
| .B \-b |
| option directs it to avoid. |
| You can suppress these messages by specifying the |
| .B \-w |
| option, but if you do, you won't see the alternate device numbers |
| reported in the warning messages. |
| .SH "ALTERNATE DEVICE NUMBERS" |
| .PP |
| On some dialects, when |
| .I lsof |
| has to break a block because it can't get information about a |
| mounted file system via the |
| .IR lstat (2) |
| and |
| .IR stat (2) |
| kernel functions, or because you specified the |
| .B \-b |
| option, |
| .I 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, |
| .I lsof |
| will report the device number it obtained. |
| (You can suppress the report by specifying the |
| .B \-w |
| option.) |
| .PP |
| You can assist this process if your mount table is supported with an |
| .I /etc/mtab |
| or |
| .I /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. |
| .PP |
| You may also be able to supply device numbers using the |
| .B +m |
| and |
| .BI +m " m" |
| options, provided they are supported by your dialect. |
| Check the output of |
| .I lsof's |
| .B \-h |
| or |
| .B \-? |
| options to see if the |
| .B +m |
| and |
| .BI +m " m" |
| options are available. |
| .PP |
| The ``xxxx'' portion of the field is the hexadecimal value |
| of the file system's device number. |
| (Consult the |
| .I st_dev |
| field of the output of the |
| .IR lstat (2) |
| and |
| .IR stat (2) |
| functions for the appropriate values for your file systems.) |
| Here's an example from a Sun Solaris 2.6 |
| .I /etc/mnttab |
| for a file system remotely mounted via NFS: |
| .PP |
| .nf |
| nfs ignore,noquota,dev=2a40001 |
| .fi |
| .PP |
| 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 |
| .I lsof |
| on one of its clients, |
| .I lsof |
| probably won't be able to get output from the |
| .IR lstat (2) |
| and |
| .IR 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. |
| .PP |
| Some dialects that do not use an ASCII |
| .I /etc/mtab |
| or |
| .I /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. |
| .I Lsof |
| knows how to obtain the alternative device number for these dialects |
| and uses it when its attempt to |
| .IR lstat (2) |
| or |
| .IR stat (2) |
| the file system is blocked. |
| .PP |
| If you're not sure your dialect supplies alternate device numbers |
| for file systems from its mount table, use this |
| .I lsof |
| incantation to see if it reports any alternate device numbers: |
| .PP |
| .IP |
| lsof -b |
| .PP |
| Look for standard error file warning messages that |
| begin ``assuming "dev=xxxx" from ...''. |
| .SH "KERNEL NAME CACHE" |
| .PP |
| .I Lsof |
| is able to examine the kernel's name cache or use other kernel |
| facilities (e.g., the ADVFS 4.x tag_to_path() function 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.) |
| .PP |
| .I Lsof |
| reports the complete paths it finds in the NAME column. |
| If |
| .I 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. |
| .PP |
| When |
| .I lsof |
| is run in repeat mode \- i.e., with the |
| .B \-r |
| option specified \- the extent to which it can report path name |
| components 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. |
| .PP |
| .I 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 for |
| a file when it is unlinked, |
| .I lsof |
| may find a reference to the wrong entry in the cache. |
| The |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| has more information on this situation. |
| .PP |
| .I Lsof |
| can report path name components for these dialects: |
| .PP |
| .nf |
| FreeBSD |
| HP\-UX |
| Linux |
| NetBSD |
| NEXTSTEP |
| OpenBSD |
| OPENSTEP |
| SCO OpenServer |
| SCO|Caldera UnixWare |
| Solaris |
| Tru64 UNIX |
| .fi |
| .PP |
| .I Lsof |
| can't report path name components for these dialects: |
| .PP |
| .nf |
| AIX |
| .fi |
| .PP |
| If you want to know why |
| .I lsof |
| can't report path name components for some dialects, see the |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| .SH "DEVICE CACHE FILE" |
| .PP |
| Examining all members of the |
| .I /dev |
| (or |
| .IR /devices ) |
| node tree with |
| .IR stat (2) |
| functions can be time consuming. |
| What's more, the information that |
| .I lsof |
| needs \- device number, inode number, and path \- rarely changes. |
| .PP |
| Consequently, |
| .I lsof |
| normally maintains an ASCII text file of cached |
| .I /dev |
| (or |
| .IR /devices ) |
| information (exception: the /proc\-based Linux |
| .I lsof |
| where it's not needed.) |
| The local system administrator who builds |
| .I lsof |
| can control the way the device cache file path is formed, selecting |
| from these options: |
| .PP |
| .nf |
| Path from the \fB\-D\fP option; |
| Path from an environment variable; |
| System\-wide path; |
| Personal path (the default); |
| Personal path, modified by an environment variable. |
| .fi |
| .PP |
| Consult the output of the |
| .BR \-h , |
| .B \-D? , |
| or |
| .B \-? |
| 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 |
| .IR lsof . |
| The |
| .B \-D? |
| option output lists the read\-only and write device cache file paths, |
| the names of any applicable environment variables, and the personal |
| device cache path format. |
| .PP |
| .I 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 |
| .I 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. |
| .PP |
| The path from which a |
| .I 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 |
| .I lsof |
| senses that it needs to update the device cache file, it may |
| choose a different path for writing it from the path from which |
| it read an incorrect or outdated version. |
| .PP |
| If available, the |
| .B \-Dr |
| option will inhibit the writing of a new device cache file. |
| (It's always available when specified without a path name argument.) |
| .PP |
| When a new device is added to the system, the device cache file may |
| need to be recreated. |
| Since |
| .I lsof |
| compares the mtime of the device cache file with the mtime and ctime |
| of the |
| .I /dev |
| (or |
| .IR /devices ) |
| directory, it usually detects that a new device has been added; |
| in that case |
| .I lsof |
| issues a warning message and attempts to rebuild the device cache file. |
| .PP |
| Whenever |
| .I lsof |
| writes a device cache file, it sets its ownership to the real UID |
| of the executing process, and its permission modes to 0600, this |
| restricting its reading and writing to the file's owner. |
| .SH "LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS" |
| .PP |
| Two permissions of the |
| .I lsof |
| executable affect its ability to access device cache files. |
| The permissions are set by the local system administrator when |
| .I lsof |
| is installed. |
| .PP |
| The first and rarer permission is setuid\-root. |
| It comes into effect when |
| .I lsof |
| is executed; its effective UID is then |
| root, while its real (i.e., that of the logged\-on user) UID is not. |
| The |
| .I lsof |
| distribution recommends that versions for these dialects run setuid\-root. |
| .PP |
| .nf |
| HP-UX 11.11 and 11.23 |
| Linux |
| .fi |
| .PP |
| The second and more common permission is setgid. |
| It comes into effect when the effective group IDentification number (GID) |
| of the |
| .I lsof |
| process is set to one that can access kernel memory devices \- |
| e.g., ``kmem'', ``sys'', or ``system''. |
| .PP |
| An |
| .I lsof |
| process that has setgid permission usually surrenders the permission |
| after it has accessed the kernel memory devices. |
| When it does that, |
| .I lsof |
| can allow more liberal device cache path formations. |
| The |
| .I lsof |
| distribution recommends that versions for these dialects run setgid |
| and be allowed to surrender setgid permission. |
| .PP |
| .nf |
| 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 |
| .fi |
| .PP |
| (Note: |
| .I lsof |
| for AIX 5L and above needs setuid\-root permission if its |
| .B \-X |
| option is used.) |
| .PP |
| .I 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. |
| .PP |
| .nf |
| Linux |
| .fi |
| .SH "DEVICE CACHE FILE PATH FROM THE \-D OPTION" |
| .PP |
| The |
| .B \-D |
| option provides limited means for specifying the device cache file path. |
| Its |
| .B ? |
| function will report the read\-only and write device cache file paths that |
| .I lsof |
| will use. |
| .PP |
| When the |
| .B \-D |
| .BR b , |
| .BR r , |
| and |
| .B u |
| functions are available, you can use them to request that the cache file be |
| built in a specific location (\fBb\fR[\fIpath\fR]); |
| read but not rebuilt (\fBr\fR[\fIpath\fR]); |
| or read and rebuilt (\fBu\fR[\fIpath\fR]). |
| The |
| .BR b , |
| .BR r , |
| and |
| .B u |
| functions are restricted under some conditions. |
| They are restricted when the |
| .I lsof |
| process is setuid\-root. |
| The path specified with the |
| .B r |
| function is always read\-only, even |
| when it is available. |
| .PP |
| The |
| .BR b , |
| .BR r , |
| and |
| .B u |
| functions are also restricted when the |
| .I lsof |
| process runs setgid and |
| .I lsof |
| doesn't surrender the setgid permission. |
| (See the |
| .B "LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS" |
| section for a list of implementations that normally don't surrender |
| their setgid permission.) |
| .PP |
| A further |
| .B \-D |
| function, |
| .B i |
| (for ignore), is always available. |
| .PP |
| When available, the |
| .B b |
| function tells |
| .I lsof |
| to read device information from the kernel with the |
| .IR stat (2) |
| function and build a device cache file at the indicated path. |
| .PP |
| When available, the |
| .B r |
| function tells |
| .I lsof |
| to read the device cache file, but not update it. |
| When a path argument accompanies |
| .BR \-Dr , |
| it names the device cache file path. |
| The |
| .B r |
| function is always available when it is specified without a |
| path name argument. |
| If |
| .I lsof |
| is not running setuid\-root and surrenders its setgid permission, |
| a path name argument may accompany the |
| .B r |
| function. |
| .PP |
| When available, the |
| .B u |
| function tells |
| .I 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 outdated, 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 |
| .I lsof |
| process effective and real UIDs. |
| .SH "DEVICE CACHE PATH FROM AN ENVIRONMENT VARIABLE" |
| .PP |
| .I Lsof's |
| second choice for the device cache file is the contents of the |
| LSOFDEVCACHE environment variable. |
| It avoids this choice if the |
| .I lsof |
| process is setuid\-root, or the real UID of the process is root. |
| .PP |
| A further restriction applies to a device cache file path taken from |
| the LSOFDEVCACHE environment variable: |
| .I lsof |
| will not write a device cache file to the path if the |
| .I lsof |
| process doesn't surrender its setgid permission. |
| (See the |
| .B "LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS" |
| section for information on implementations that don't surrender |
| their setgid permission.) |
| .PP |
| The local system administrator can disable the use of the LSOFDEVCACHE |
| environment variable or change its name when building |
| .IR lsof . |
| Consult the output of |
| .B \-D? |
| for the environment variable's name. |
| .SH "SYSTEM-WIDE DEVICE CACHE PATH" |
| .PP |
| The local system administrator may choose to have a system\-wide |
| device cache file when building |
| .IR lsof . |
| That file will generally be constructed by a special system administration |
| procedure when the system is booted or when the contents of |
| .I /dev |
| or |
| .IR /devices ) |
| changes. |
| If defined, it is |
| .I lsof's |
| third device cache file path choice. |
| .PP |
| You can tell that a system\-wide device cache file is in effect |
| for your local installation by examining the |
| .I lsof |
| help option output \- i.e., the output from the |
| .B \-h |
| or |
| .B \-? |
| option. |
| .PP |
| .I Lsof |
| will never write to the system\-wide device cache file path by |
| default. |
| It must be explicitly named with a |
| .B \-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). |
| .SH "PERSONAL DEVICE CACHE PATH (DEFAULT)" |
| .PP |
| The default device cache file path of the |
| .I lsof |
| distribution is one recorded in the home directory of the real UID |
| that executes |
| .IR lsof . |
| Added to the home directory is a second path component of the form |
| .IR .lsof_hostname . |
| .PP |
| This is |
| .I lsof's |
| fourth device cache file path choice, and is |
| usually the default. |
| If a system\-wide device cache file path was defined when |
| .I lsof |
| was built, |
| this fourth choice will be applied when |
| .I lsof |
| can't find the system\-wide device cache file. |
| This is the |
| .B only |
| time |
| .I lsof |
| uses two paths when reading the device cache file. |
| .PP |
| The |
| .I hostname |
| part of the second component is the base |
| name of the executing host, as returned by |
| .IR gethostname (2). |
| The base name is defined to be the characters preceding the first `.' |
| in the |
| .IR gethostname (2) |
| output, or all the |
| .IR gethostname (2) |
| output if it contains no `.'. |
| .PP |
| 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 executes |
| .I lsof |
| has a distinct device cache file. |
| The |
| .I 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. |
| .PP |
| The personal device cache file path formed by this method represents |
| a device cache file that |
| .I lsof |
| will attempt to read, and will attempt to write should it not |
| exist or should its contents be incorrect or outdated. |
| .PP |
| The |
| .B \-Dr |
| option without a path name argument will inhibit the writing of a new |
| device cache file. |
| .PP |
| The |
| .B \-D? |
| option will list the format specification for constructing the |
| personal device cache file. |
| The conversions used in the format specification are described in the |
| .I 00DCACHE |
| file of the |
| .I lsof |
| distribution. |
| .SH "MODIFIED PERSONAL DEVICE CACHE PATH" |
| .PP |
| If this option is defined by the local system administrator when |
| .I lsof |
| is built, the LSOFPERSDCPATH environment variable contents may |
| be used to add a component of the personal device cache file path. |
| .PP |
| 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 specification of the dialect's |
| .I machine.h |
| header file. |
| (It's placed right after the home directory in the default |
| .I lsof |
| distribution.) |
| .PP |
| 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: |
| .PP |
| .nf |
| /Homes/abe/LSOF/.lsof_vic |
| .fi |
| .PP |
| The LSOFPERSDCPATH environment variable is ignored when the |
| .I lsof |
| process is setuid\-root or when the real UID of the process is root. |
| .PP |
| .I Lsof |
| will not write to a modified personal device cache file path if the |
| .I lsof |
| process doesn't surrender setgid permission. |
| (See the |
| .B "LSOF PERMISSIONS THAT AFFECT DEVICE CACHE FILE ACCESS" |
| section for a list of implementations that normally don't surrender |
| their setgid permission.) |
| .PP |
| If, for example, you want to create a sub\-directory of personal |
| device cache file paths by using the LSOFPERSDCPATH environment |
| variable to name it, and |
| .I lsof |
| doesn't surrender its setgid permission, you will have to allow |
| .I lsof |
| to create device cache files at the standard personal path and |
| move them to your subdirectory with shell commands. |
| .PP |
| The local system administrator may: disable this option when |
| .I 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 |
| .B \-D? |
| option for the environment variable's name and the HASPERSDC |
| format specification. |
| .SH DIAGNOSTICS |
| Errors are identified with messages on the standard error file. |
| .PP |
| .I 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 |
| .B \-V |
| option is specified, |
| .I lsof |
| will indicate the search items it failed to list. |
| .PP |
| 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. |
| .PP |
| .PP |
| When |
| .I lsof |
| cannot open access to |
| .I /dev |
| (or |
| .IR /devices ) |
| or one of its subdirectories, or get information on a file in them with |
| .IR stat (2), |
| it issues a warning message and continues. |
| That |
| .I lsof |
| will issue warning messages about inaccessible files in |
| .I /dev |
| (or |
| .IR /devices ) |
| is indicated in its help output \- requested with the |
| .B \-h |
| or |
| >B \-? |
| options \- with the message: |
| .PP |
| .nf |
| Inaccessible /dev warnings are enabled. |
| .fi |
| .PP |
| The warning message may be suppressed with the |
| .B \-w |
| option. |
| It may also have been suppressed by the system administrator when |
| .I lsof |
| was compiled by the setting of the WARNDEVACCESS definition. |
| In this case, the output from the help options will include the message: |
| .PP |
| .nf |
| Inaccessible /dev warnings are disabled. |
| .fi |
| .PP |
| Inaccessible device warning messages usually disappear after |
| .I lsof |
| has created a working device cache file. |
| .SH EXAMPLES |
| For a more extensive set of examples, documented more fully, see the |
| .I 00QUICKSTART |
| file of the |
| .I lsof |
| distribution. |
| .PP |
| To list all open files, use: |
| .IP |
| lsof |
| .PP |
| To list all open Internet, x.25 (HP\-UX), and UNIX domain files, use: |
| .IP |
| lsof -i -U |
| .PP |
| To list all open IPv4 network files in use by the process whose PID is |
| 1234, use: |
| .IP |
| lsof -i 4 -a -p 1234 |
| .PP |
| Presuming the UNIX dialect supports IPv6, to list only open IPv6 |
| network files, use: |
| .IP |
| lsof -i 6 |
| .PP |
| To list all files using any protocol on ports 513, 514, or 515 of host |
| wonderland.cc.purdue.edu, use: |
| .IP |
| lsof -i @wonderland.cc.purdue.edu:513-515 |
| .PP |
| To list all files using any protocol on any port of mace.cc.purdue.edu |
| (cc.purdue.edu is the default domain), use: |
| .IP |
| lsof -i @mace |
| .PP |
| To list all open files for login name ``abe'', or user ID 1234, or |
| process 456, or process 123, or process 789, use: |
| .IP |
| lsof -p 456,123,789 -u 1234,abe |
| .PP |
| To list all open files on device /dev/hd4, use: |
| .IP |
| lsof /dev/hd4 |
| .PP |
| To find the process that has /u/abe/foo open, use: |
| .IP |
| lsof /u/abe/foo |
| .PP |
| To send a SIGHUP to the processes that have /u/abe/bar open, use: |
| .IP |
| kill -HUP `lsof -t /u/abe/bar` |
| .PP |
| To find any open file, including an open UNIX domain socket file, |
| with the name |
| .IR /dev/log , |
| use: |
| .IP |
| lsof /dev/log |
| .PP |
| To find processes with open files on the NFS file system named |
| .I /nfs/mount/point |
| whose server is inaccessible, and presuming your mount table supplies |
| the device number for |
| .IR /nfs/mount/point , |
| use: |
| .IP |
| lsof -b /nfs/mount/point |
| .PP |
| To do the preceding search with warning messages suppressed, use: |
| .IP |
| lsof -bw /nfs/mount/point |
| .PP |
| To ignore the device cache file, use: |
| .IP |
| lsof -Di |
| .PP |
| To obtain PID and command name field output for each process, file |
| descriptor, file device number, and file inode number for each file |
| of each process, use: |
| .IP |
| lsof -FpcfDi |
| .PP |
| To list the files at descriptors 1 and 3 of every process running the |
| .I lsof |
| command for login ID ``abe'' every 10 seconds, use: |
| .IP |
| lsof -c lsof -a -d 1 -d 3 -u abe -r10 |
| .PP |
| 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 |
| .BI \-c " c" |
| option: |
| .IP |
| lsof -c /^..o.$/i -a -d cwd |
| .PP |
| To find an IP version 4 socket file by its associated numeric dot\-form |
| address, use: |
| .IP |
| lsof -i@128.210.15.17 |
| .PP |
| To find an IP version 6 socket file (when the UNIX dialect supports |
| IPv6) by its associated numeric colon\-form address, use: |
| .IP |
| lsof -i@[0:1:2:3:4:5:6:7] |
| .PP |
| 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: |
| .IP |
| lsof -i@[::1] |
| .PP |
| To obtain a repeat mode marker line that contains the current time, use: |
| .IP |
| lsof -rm====%T==== |
| .PP |
| To add spaces to the previous marker line, use: |
| .IP |
| lsof -r "m==== %T ====" |
| .SH BUGS |
| Since |
| .I lsof |
| reads kernel memory in its search for open files, rapid changes in kernel |
| memory may produce unpredictable results. |
| .PP |
| When a file has multiple record locks, the lock status character |
| (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. |
| .PP |
| .I Lsof |
| can't search for files with restrictive access permissions by |
| .I name |
| unless it is installed with root set\-UID permission. |
| Otherwise it is limited to searching for files to which its user |
| or its set-GID group (if any) has access permission. |
| .PP |
| The display of the destination address of a raw socket (e.g., for |
| .IR ping ) |
| depends on the UNIX operating system. |
| Some dialects store the destination address in the raw socket's protocol |
| control block, some do not. |
| .PP |
| .I Lsof |
| can't always represent Solaris device numbers in the same way that |
| .IR ls (1) |
| does. |
| For example, the major and minor device numbers that the |
| .IR lstat (2) |
| and |
| .IR stat (2) |
| functions report for the directory on which CD-ROM files are mounted |
| (typically |
| .IR /cdrom ) |
| are not the same as the ones that it reports for the device on which |
| CD-ROM files are mounted (typically |
| .IR /dev/sr0 ). |
| (\fILsof\fP reports the directory numbers.) |
| .PP |
| The support for |
| .I /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. |
| .PP |
| Some |
| .I /proc |
| file items \- device number, inode number, and file size \- |
| are unavailable in some dialects. |
| Searching for files in a |
| .I /proc |
| file system may require that the full path name be specified. |
| .PP |
| No text (\fBtxt\fP) 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 |
| .B mem |
| descriptors. |
| .PP |
| .I 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. |
| .PP |
| .I 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 |
| .I lsof |
| FAQ (The \fBFAQ\fP section gives its location.) |
| for details. |
| .PP |
| The AIX SMT file type is a fabrication. |
| It's made up for file structures whose type (15) isn't defined in the AIX |
| .I /usr/include/sys/file.h |
| header file. |
| One way to create such file structures is to run X clients with the DISPLAY |
| variable set to ``:0.0''. |
| .PP |
| The |
| .BI +|\-f [cfgGn] |
| option is not supported under /proc\-based Linux |
| .IR lsof , |
| because it doesn't read kernel structures from kernel memory. |
| .SH ENVIRONMENT |
| .I Lsof |
| may access these environment variables. |
| .TP \w'LSOFPERSDCPATH'u+4 |
| LANG |
| defines a language locale. |
| See |
| .IR setlocale (3) |
| for the names of other variables that can be used in place |
| of LANG \- e.g., LC_ALL, LC_TYPE, etc. |
| .TP |
| LSOFDEVCACHE |
| defines the path to a device cache file. |
| See the |
| .B "DEVICE CACHE PATH FROM AN ENVIRONMENT VARIABLE" |
| section for more information. |
| .TP |
| LSOFPERSDCPATH |
| defines the middle component of a modified personal device cache |
| file path. |
| See the |
| .B "MODIFIED PERSONAL DEVICE CACHE PATH" |
| section for more information. |
| .SH FAQ |
| Frequently-asked questions and their answers (an FAQ) are |
| available in the |
| .I 00FAQ |
| file of the |
| .I lsof |
| distribution. |
| .PP |
| That file is also available via anonymous ftp from |
| .I lsof.itap.purdue.edu |
| at |
| .IR pub/tools/unix/lsof FAQ . |
| The URL is: |
| .IP |
| ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ |
| .SH FILES |
| .TP \w'.lsof_hostname'u+4 |
| .I /dev/kmem |
| kernel virtual memory device |
| .TP |
| .I /dev/mem |
| physical memory device |
| .TP |
| .I /dev/swap |
| system paging device |
| .TP |
| .I .lsof_hostname |
| .I lsof's |
| device cache file |
| (The suffix, |
| .IR hostname , |
| is the first component of the host's name returned by |
| .IR gethostname (2) .) |
| .SH AUTHORS |
| .I Lsof |
| was written by Victor A. Abell <abe@purdue.edu> of Purdue University. |
| Many others have contributed to |
| .IR lsof . |
| They're listed in the |
| .I 00CREDITS |
| file of the |
| .I lsof |
| distribution. |
| .SH DISTRIBUTION |
| The latest distribution of |
| .I lsof |
| is available via anonymous ftp from the host |
| .IR lsof.itap.purdue.edu . |
| You'll find the |
| .I lsof |
| distribution in the |
| .I pub/tools/unix/lsof |
| directory. |
| .PP |
| You can also use this URL: |
| .IP |
| ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof |
| .PP |
| .I Lsof |
| is also mirrored elsewhere. |
| When you access |
| .I lsof.itap.purdue.edu |
| and change to its |
| .I pub/tools/unix/lsof |
| directory, you'll be given a list of some mirror sites. |
| The |
| .I pub/tools/unix/lsof |
| directory also contains a more complete list in its |
| .I mirrors |
|