.\" -*- 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 \-AVRTNP
]
[
.B \-s
]
[
.B \-t
.I fstype
]
[
.B fs-options
]
.I filesys [ ... ]
.SH DESCRIPTION
.B fsck
is used to check and optionally repair a Linux file system.  
.I filesys
is either the device name (e.g. /dev/hda1, /dev/sdb2) or the mount point
(e.g. /, /usr, /home) for the file system.  If this invocation of 
.B fsck 
has several filesystems on different physical disk drives to check, then
.B fsck 
will try to run them in parallel.  This reduces the total amount time it
takes to check all of the filesystems, since 
.B fsck
takes advantage of the parallelism of multiple disk spindles.
.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 /sbin first, then in /etc/fs
and /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 -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.
.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 -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 -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
.B -V
Produce verbose output, including all file system-specific commands
that are executed.
.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 
.B 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 fs-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).
