.\" -*- nroff -*-
.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\"
.TH FSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
fsck \- check and repair a Linux file system
.SH SYNOPSIS
.B fsck
[
.B \-sAVRTMNP
]
[
.B \-C
[
.I fd
]
]
[
.B \-t
.I fstype
]
.I [filesys ... ]
[\-\-] [
.B fs-specific-options
]
.SH DESCRIPTION
.B fsck
is used to check and optionally repair one or more Linux file systems.
.I filesys
can be a device name (e.g.
.IR /dev/hdc1 ", " /dev/sdb2 ),
a mount point (e.g.
.IR / ", " /usr ", " /home ),
or an ext2 label or UUID specifier (e.g.
UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd or LABEL=root).
Normally, the
.B fsck
program will try to handle filesystems on different physical disk drives
in parallel to reduce the total amount of time needed to check all of the
filesystems.
.PP
If no filesystems are specified on the command line, and the
.B \-A
option is not specified,
.B fsck
will default to checking filesystems in
.B /etc/fstab
serially.  This is equivalent to the
.B \-As
options.
.PP
The exit code returned by
.B fsck
is the sum of the following conditions:
.br
\	0\	\-\ No errors
.br
\	1\	\-\ File system errors corrected
.br
\	2\	\-\ System should be rebooted
.br
\	4\	\-\ File system errors left uncorrected
.br
\	8\	\-\ Operational error
.br
\	16\	\-\ Usage or syntax error
.br
\	32\	\-\ Fsck canceled by user request
.br
\	128\	\-\ Shared library error
.br
The exit code returned when multiple file systems are checked
is the bit-wise OR of the exit codes for each
file system that is checked.
.PP
In actuality,
.B fsck
is simply a front-end for the various file system checkers
(\fBfsck\fR.\fIfstype\fR) available under Linux.  The file
system-specific checker is searched for in
.I /sbin
first, then in
.I /etc/fs
and
.IR /etc ,
and finally in the directories listed in the PATH environment
variable.  Please see the file system-specific checker manual pages for
further details.
.SH OPTIONS
.TP
.B \-s
Serialize
.B fsck
operations.  This is a good idea if you are checking multiple
filesystems and the checkers are in an interactive mode.  (Note:
.BR e2fsck (8)
runs in an interactive mode by default.  To make
.BR e2fsck (8)
run in a non-interactive mode, you must either specify the
.B \-p
or
.B \-a
option, if you wish for errors to be corrected automatically, or the
.B \-n
option if you do not.)
.TP
.BI \-t " fslist"
Specifies the type(s) of file system to be checked.  When the
.B \-A
flag is specified, only filesystems that match
.I fslist
are checked.  The
.I fslist
parameter is a comma-separated list of filesystems and options
specifiers.  All of the filesystems in this comma-separated list may be
prefixed by a negation operator
.RB ' no '
or
.RB ' ! ',
which requests that only those filesystems not listed in
.I fslist
will be checked.  If all of the filesystems in
.I fslist
are not prefixed by a negation operator, then only those filesystems
listed
in
.I fslist
will be checked.
.sp
Options specifiers may be included in the comma-separated
.IR fslist .
They must have the format
.BI opts= fs-option\fR.
If an options specifier is present, then only filesystems which contain
.I fs-option
in their mount options field of
.B /etc/fstab
will be checked.  If the options specifier is prefixed by a negation
operator, then only
those filesystems that do not have
.I fs-option
in their mount options field of
.B /etc/fstab
will be checked.
.sp
For example, if
.B opts=ro
appears in
.IR fslist ,
then only filesystems listed in
.B /etc/fstab
with the
.B ro
option will be checked.
.sp
For compatibility with Mandrake distributions whose boot scripts
depend upon an unauthorized UI change to the
.B fsck
program, if a filesystem type of
.B loop
is found in
.IR fslist ,
it is treated as if
.B opts=loop
were specified as an argument to the
.B \-t
option.
.sp
Normally, the filesystem type is deduced by searching for
.I filesys
in the
.I /etc/fstab
file and using the corresponding entry.
If the type can not be deduced, and there is only a single filesystem
given as an argument to the
.B \-t
option,
.B fsck
will use the specified filesystem type.  If this type is not
available, then the default file system type (currently ext2) is used.
.TP
.B \-A
Walk through the
.I /etc/fstab
file and try to check all file systems in one run.  This option is
typically used from the
.I /etc/rc
system initialization file, instead of multiple commands for checking
a single file system.
.sp
The root filesystem will be checked first unless the
.B \-P
option is specified (see below).  After that,
filesystems will be checked in the order specified by the
.I fs_passno
(the sixth) field in the
.I /etc/fstab
file.
Filesystems with a
.I fs_passno
value of 0 are skipped and are not checked at all.  Filesystems with a
.I fs_passno
value of greater than zero will be checked in order,
with filesystems with the lowest
.I fs_passno
number being checked first.
If there are multiple filesystems with the same pass number,
fsck will attempt to check them in parallel, although it will avoid running
multiple filesystem checks on the same physical disk.
.sp
Hence, a very common configuration in
.I /etc/fstab
files is to set the root filesystem to have a
.I fs_passno
value of 1
and to set all other filesystems to have a
.I fs_passno
value of 2.  This will allow
.B fsck
to automatically run filesystem checkers in parallel if it is advantageous
to do so.  System administrators might choose
not to use this configuration if they need to avoid multiple filesystem
checks running in parallel for some reason --- for example, if the
machine in question is short on memory so that
excessive paging is a concern.
.TP
.B \-C\fR [ \fI "fd" \fR ]
Display completion/progress bars for those filesystem checkers (currently
only for ext2 and ext3) which support them.   Fsck will manage the
filesystem checkers so that only one of them will display
a progress bar at a time.  GUI front-ends may specify a file descriptor
.IR fd ,
in which case the progress bar information will be sent to that file descriptor.
.TP
.B \-M
Do not check mounted filesystems and return an exit code of 0
for mounted filesystems.
.TP
.B \-N
Don't execute, just show what would be done.
.TP
.B \-P
When the
.B \-A
flag is set, check the root filesystem in parallel with the other filesystems.
This is not the safest thing in the world to do,
since if the root filesystem is in doubt things like the
.BR e2fsck (8)
executable might be corrupted!  This option is mainly provided
for those sysadmins who don't want to repartition the root
filesystem to be small and compact (which is really the right solution).
.TP
.B \-R
When checking all file systems with the
.B \-A
flag, skip the root file system (in case it's already mounted read-write).
.TP
.B \-T
Don't show the title on startup.
.TP
.B \-V
Produce verbose output, including all file system-specific commands
that are executed.
.TP
.B fs-specific-options
Options which are not understood by
.B fsck
are passed to the filesystem-specific checker.  These arguments
.B must
not take arguments, as there is no
way for
.B fsck
to be able to properly guess which arguments take options and which
don't.
.IP
Options and arguments which follow the
.B \-\-
are treated as file system-specific options to be passed to the
file system-specific checker.
.IP
Please note that fsck is not
designed to pass arbitrarily complicated options to filesystem-specific
checkers.  If you're doing something complicated, please just
execute the filesystem-specific checker directly.  If you pass
.B fsck
some horribly complicated option and arguments, and it doesn't do
what you expect,
.B don't bother reporting it as a bug.
You're almost certainly doing something that you shouldn't be doing
with
.BR fsck.
.PP
Options to different filesystem-specific fsck's are not standardized.
If in doubt, please consult the man pages of the filesystem-specific
checker.  Although not guaranteed, the following options are supported
by most file system checkers:
.TP
.B \-a
Automatically repair the file system without any questions (use
this option with caution).  Note that
.BR e2fsck (8)
supports
.B \-a
for backwards compatibility only.  This option is mapped to
.BR e2fsck 's
.B \-p
option which is safe to use, unlike the
.B \-a
option that some file system checkers support.
.TP
.B \-n
For some filesystem-specific checkers, the
.B \-n
option will cause the fs-specific fsck to avoid attempting to repair any
problems, but simply report such problems to stdout.  This is however
not true for all filesystem-specific checkers.  In particular,
.BR fsck.reiserfs (8)
will not report any corruption if given this option.
.BR fsck.minix (8)
does not support the
.B \-n
option at all.
.TP
.B \-r
Interactively repair the filesystem (ask for confirmations).  Note: It
is generally a bad idea to use this option if multiple fsck's are being
run in parallel.  Also note that this is
.BR e2fsck 's
default behavior; it supports this option for backwards compatibility
reasons only.
.TP
.B \-y
For some filesystem-specific checkers, the
.B \-y
option will cause the fs-specific fsck to always attempt to fix any
detected filesystem corruption automatically.  Sometimes an expert may
be able to do better driving the fsck manually.  Note that
.B not
all filesystem-specific checkers implement this option.  In particular
.BR fsck.minix (8)
and
.BR fsck.cramfs (8)
does not support the
.B -y
option as of this writing.
.SH AUTHOR
Theodore Ts'o (tytso@mit.edu)
.SH FILES
.IR /etc/fstab .
.SH ENVIRONMENT VARIABLES
The
.B fsck
program's behavior is affected by the following environment variables:
.TP
.B FSCK_FORCE_ALL_PARALLEL
If this environment variable is set,
.B fsck
will attempt to run all of the specified filesystems in parallel,
regardless of whether the filesystems appear to be on the same
device.  (This is useful for RAID systems or high-end storage systems
such as those sold by companies such as IBM or EMC.)
.TP
.B FSCK_MAX_INST
This environment variable will limit the maximum number of file system
checkers that can be running at one time.  This allows configurations
which have a large number of disks to avoid
.B fsck
starting too many file system checkers at once, which might overload
CPU and memory resources available on the system.  If this value is
zero, then an unlimited number of processes can be spawned.  This is
currently the default, but future versions of
.B fsck
may attempt to automatically determine how many file system checks can
be run based on gathering accounting data from the operating system.
.TP
.B PATH
The
.B PATH
environment variable is used to find file system checkers.  A set of
system directories are searched first:
.BR /sbin ,
.BR /sbin/fs.d ,
.BR  /sbin/fs ,
.BR /etc/fs ,
and
.BR /etc .
Then the set of directories found in the
.B PATH
environment are searched.
.TP
.B FSTAB_FILE
This environment variable allows the system administrator
to override the standard location of the
.B /etc/fstab
file.  It is also useful for developers who are testing
.BR fsck .
.SH SEE ALSO
.BR fstab (5),
.BR mkfs (8),
.BR fsck.ext2 (8)
or
.BR fsck.ext3 (8)
or
.BR e2fsck (8),
.BR cramfsck (8),
.BR fsck.minix (8),
.BR fsck.msdos (8),
.BR fsck.jfs (8),
.BR fsck.nfs (8),
.BR fsck.vfat (8),
.BR fsck.xfs (8),
.BR fsck.xiafs (8),
.BR reiserfsck (8).
