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