296 lines
8.3 KiB
Groff
296 lines
8.3 KiB
Groff
.\" $NetBSD: fstat.1,v 1.36 2019/09/06 19:05:04 wiz Exp $
|
|
.\"
|
|
.\" Copyright (c) 1987, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" from: @(#)fstat.1 8.3 (Berkeley) 2/25/94
|
|
.\"
|
|
.Dd September 6, 2019
|
|
.Dt FSTAT 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm fstat
|
|
.Nd display status of open files
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl AfnOv
|
|
.Op Fl M Ar core
|
|
.Op Fl N Ar system
|
|
.Op Fl p Ar pid
|
|
.Op Fl u Ar user
|
|
.Op Ar
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
identifies open files.
|
|
A file is considered open by a process if it was explicitly opened,
|
|
is the working directory, root directory, active pure text, or kernel
|
|
trace file for that process.
|
|
If no options are specified,
|
|
.Nm
|
|
reports on all open files in the system.
|
|
.Pp
|
|
Options:
|
|
.Bl -tag -width XXXXXXXXXX
|
|
.It Fl A
|
|
Add an output column with the address of the kernel object (vnode or file),
|
|
that can be matched with
|
|
.Xr pstat 8
|
|
output.
|
|
.It Fl f
|
|
Restrict examination to files open in the same file systems as
|
|
the named file arguments, or to the file system containing the
|
|
current directory if there are no additional filename arguments.
|
|
For example, to find all files open in the file system where the
|
|
directory
|
|
.Pa /var/log
|
|
resides, type
|
|
.Dq Li fstat -f /var/log .
|
|
Please see the
|
|
.Sx BUGS
|
|
section for issues with this option.
|
|
.It Fl M Ar core
|
|
Extract values associated with the name list from the specified
|
|
.Ar core
|
|
instead of the default
|
|
.Pa /dev/kmem .
|
|
.It Fl N Ar system
|
|
Extract the name list from the specified
|
|
.Ar system
|
|
instead of the default
|
|
.Pa /netbsd .
|
|
.It Fl n
|
|
Numerical format.
|
|
Print the device number (maj,min) of the file system
|
|
the file resides in rather than the mount point name; for special
|
|
files, print the
|
|
device number that the special device refers to rather than the filename
|
|
in
|
|
.Pa /dev ;
|
|
and print the mode of the file in octal instead of symbolic form.
|
|
.It Fl O
|
|
Report file offsets instead of sizes.
|
|
.It Fl p Ar process
|
|
Report all files open by the specified
|
|
.Ar process .
|
|
.It Fl u Ar user
|
|
Report all files open by the specified
|
|
.Ar user .
|
|
.It Fl v
|
|
Verbose mode.
|
|
Print error messages upon failures to locate particular
|
|
system data structures rather than silently ignoring them.
|
|
Most of
|
|
these data structures are dynamically created or deleted and it is
|
|
possible for them to disappear while
|
|
.Nm
|
|
is running.
|
|
This is normal and unavoidable since the rest of the system is running while
|
|
.Nm
|
|
itself is running.
|
|
.It Ar
|
|
Restrict reports to the specified files.
|
|
.El
|
|
.Pp
|
|
The following fields are printed:
|
|
.Bl -tag -width MOUNT
|
|
.It Li USER
|
|
The username of the owner of the process (effective UID).
|
|
.It Li CMD
|
|
The command name of the process.
|
|
.It Li PID
|
|
The process ID.
|
|
.It Li FD
|
|
The file number in the per-process open file table or one of the following
|
|
special names:
|
|
.Pp
|
|
.Bl -tag -width MOUNT -offset indent -compact
|
|
.It Li text
|
|
pure text inode
|
|
.It Li wd
|
|
current working directory
|
|
.It Li root
|
|
root inode
|
|
.It Li tr
|
|
kernel trace file
|
|
.El
|
|
.Pp
|
|
If the file number is followed by an asterisk
|
|
.Pq Dq * ,
|
|
the file is not an inode, but rather a socket,
|
|
.Tn FIFO ,
|
|
or there is an error.
|
|
In this case the remainder of the line doesn't
|
|
correspond to the remaining headers \(em the format of the line
|
|
is described later under
|
|
.Sx SOCKETS .
|
|
.It Li MOUNT
|
|
If the
|
|
.Fl n
|
|
flag wasn't specified, this header is present and is the
|
|
pathname that the file system the file resides in is mounted on.
|
|
.It Li DEV
|
|
If the
|
|
.Fl n
|
|
flag is specified, this header is present and is the
|
|
major/minor number of the device that this file resides in.
|
|
.It Li INUM
|
|
The inode number of the file.
|
|
.It Li MODE
|
|
The mode of the file.
|
|
If the
|
|
.Fl n
|
|
flag isn't specified, the mode is printed
|
|
using a symbolic format (see
|
|
.Xr strmode 3 ) ;
|
|
otherwise, the mode is printed
|
|
as an octal number.
|
|
.It Li SZ\&|DV or OFFS
|
|
If the file is not a character or block special file, prints the size of
|
|
the file in bytes (or the offset if the
|
|
.Fl O
|
|
is specified).
|
|
Otherwise, if the
|
|
.Fl n
|
|
flag is not specified, prints
|
|
the name of the special file as located in
|
|
.Pa /dev .
|
|
If that cannot be
|
|
located, or the
|
|
.Fl n
|
|
flag is specified, prints the major/minor device
|
|
number that the special device refers to.
|
|
.It Li R/W
|
|
This column describes the access mode that the file allows.
|
|
The letter
|
|
.Dq r
|
|
indicates open for reading;
|
|
the letter
|
|
.Dq w
|
|
indicates open for writing.
|
|
This field is useful when trying to find the processes that are
|
|
preventing a file system from being downgraded to read-only.
|
|
.It Li NAME
|
|
If filename arguments are specified and the
|
|
.Fl f
|
|
flag is not, then
|
|
this field is present and is the name associated with the given file.
|
|
Normally the name cannot be determined since there is no mapping
|
|
from an open file back to the directory entry that was used to open
|
|
that file.
|
|
Also, since different directory entries may reference
|
|
the same file (via
|
|
.Xr ln 1 ) ,
|
|
the name printed may not be the actual
|
|
name that the process originally used to open that file.
|
|
.El
|
|
.Sh SOCKETS
|
|
The formatting of open sockets depends on the protocol domain.
|
|
In all cases the first field is the domain name and
|
|
the second field is the socket type (stream, dgram, etc.).
|
|
The remaining fields are protocol dependent.
|
|
For TCP, it is the address of the tcpcb, and for UDP, the inpcb (socket pcb).
|
|
For
|
|
.Ux
|
|
domain sockets, its the address of the socket pcb and the name of the
|
|
file if available.
|
|
Otherwise the address of the connected pcb is printed (if connected).
|
|
For other domains, the protocol number and address of the socket itself
|
|
are printed.
|
|
The attempt is to make enough information available to
|
|
permit further analysis without duplicating
|
|
.Xr netstat 1 .
|
|
.Pp
|
|
For example, the addresses mentioned above are the addresses which the
|
|
.Dq Li netstat -A
|
|
command would print for TCP, UDP, and
|
|
.Ux
|
|
domain.
|
|
For kernels compiled with
|
|
.Dv PIPE_SOCKETPAIR
|
|
pipes appear as connected
|
|
.Ux
|
|
domain stream sockets.
|
|
A unidirectional
|
|
.Ux
|
|
domain socket indicates the direction of flow with an arrow
|
|
.Po
|
|
.Dq <-
|
|
or
|
|
.Dq ->
|
|
.Pc ,
|
|
and a full duplex socket shows a double arrow
|
|
.Pq Dq <-> .
|
|
.Pp
|
|
For internet sockets
|
|
.Nm
|
|
also attempts to print the internet address and port for the
|
|
local end of a connection.
|
|
If the socket is connected, it also prints the remote internet address
|
|
and port.
|
|
An asterisk
|
|
.Pq Dq *
|
|
is used to indicate an INADDR_ANY binding.
|
|
.Sh SEE ALSO
|
|
.Xr netstat 1 ,
|
|
.Xr nfsstat 1 ,
|
|
.Xr ps 1 ,
|
|
.Xr sockstat 1 ,
|
|
.Xr systat 1 ,
|
|
.Xr vmstat 1 ,
|
|
.Xr fstat 2 ,
|
|
.Xr iostat 8 ,
|
|
.Xr pstat 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command appeared in
|
|
.Bx 4.3 tahoe .
|
|
.Sh BUGS
|
|
Since
|
|
.Nm
|
|
takes a snapshot of the system, it is only correct for a very short period
|
|
of time.
|
|
.Pp
|
|
Moreover, because DNS resolution and YP lookups cause many file
|
|
descriptor changes,
|
|
.Nm
|
|
does not attempt to translate the internet address and port numbers into
|
|
symbolic names.
|
|
.Pp
|
|
Note that the
|
|
.Fl f
|
|
option will not list
|
|
.Ux
|
|
domain sockets open in the file system, because the pathnames in the sockets
|
|
may not be absolute and are not deterministic.
|
|
To find all the
|
|
.Ux
|
|
domain sockets, use
|
|
.Nm
|
|
to list all the sockets, and look for the ones that maybe belong in the
|
|
file system.
|