.\" -*- 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 \-sACVRTNP
]
[
.B \-t
.I fstype
] [\-\-] [
.B fsck-options
]
.I filesys [ ... ]
.SH DESCRIPTION
.B fsck
is used to check and optionally repair a 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).  
The 
.B fsck 
program will try to run filesystems on different physical disk drives 
in parallel to reduce total amount time to check all of the filesystems.
.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
\	128\	\-\ Shared library error
.br
The exit code returned when all file systems are checked using the
.B \-A
option 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 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 " fstype"
Specifies the type of file system to be checked.  When the
.B \-A 
flag is specified, only filesystems that match 
.I fstype
are checked.  If 
.I fstype
is prefixed with 
.I no
then only filesystems whose type does not match
.I fstype
are checked.
.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, 
.B fsck
will use the type specified by the 
.B \-t
option if it specifies a unique 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 initalization 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.  If there are multiple filesystems with the same pass number, 
e2fsck will attempt to check them in parallel, although it will avoid running 
multiple filesystem checks on the same physical disk.  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 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
Display completion/progress bars for those filesystems checkers (currently
only for ext2) which support them.   Fsck will manage the filesystem checkers
so that only one of them will display a progress bar at a time.
.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 fsck-options
Any options which are not understood by 
.BR fsck ,
or which follow the
.B \-\-
option are treated as file system-specific options to be passed to the
file system-specific checker.
.PP
Currently, standardized file system-specific options are somewhat in
flux.  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 most file system checkers support.
.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.
.SH AUTHOR
Theodore Ts'o (tytso@mit.edu)
.PP
The manual page was shamelessly adapted from David Engel and Fred van
Kempen's generic 
.B fsck
front end program, which was in turn shamelessly
adapted from Remy Card's version for the ext2 file system.
.SH FILES
.IR /etc/fstab .
.SH SEE ALSO
.BR fstab (5),
.BR mkfs (8),
.BR fsck.minix (8),
.BR fsck.ext2 (8)
or
.BR e2fsck (8),
.BR fsck.xiafs (8).
