.\" A man page for tmpwatch(8).
.\"
.\" Copyright (C) 1997-2001, 2004-2009 Red Hat, Inc.  All rights reserved.
.\"
.\" This copyrighted material is made available to anyone wishing to use,
.\" modify, copy, or redistribute it subject to the terms and conditions of the
.\" GNU General Public License v.2.  This program is distributed in the hope
.\" that it will be useful, but WITHOUT ANY WARRANTY expressed or implied,
.\" including the implied warranties of MERCHANTABILITY or FITNESS FOR A
.\" PARTICULAR PURPOSE.  See the GNU General Public License for more details.
.\" You should have received a copy of the GNU General Public License along with
.\" this program; if not, write to the Free Software Foundation, Inc., 51
.\" Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  Any Red Hat
.\" trademarks that are incorporated in the source code or documentation are not
.\" subject to the GNU General Public License and may only be used or replicated
.\" with the express permission of Red Hat, Inc.
.\"
.\" Red Hat Author(s): Erik Troan <ewt@redhat.com>
.\"                    Preston Brown <pbrown@redhat.com>
.\"                    Nalin Dahyabhai <nalin@redhat.com>
.\"                    Mike A. Harris <mharris@redhat.com>
.\"                    Miloslav Trmac <mitr@redhat.com>
.\"
.TH TMPWATCH 8 "2009-10-15" "Red Hat Linux" "System Administrator's Manual"
.UC 4
.SH NAME
tmpwatch \- removes files which haven't been accessed for a period of time
.SH SYNOPSIS
\fBtmpwatch\fR [-u|-m|-c] [-MUXadfqstvx] [--verbose] [--force] [--all]
               [--nodirs] [--nosymlinks] [--test] [--fuser] [--quiet]
               [--atime|--mtime|--ctime] [--dirmtime] [--exclude \fIpath\fR]
               [--exclude-user \fIuser\fR] [--exclude-pattern \fIpattern\fR]
               \fItime\fR \fIdirs\fR

.SH DESCRIPTION
\fBtmpwatch\fR recursively removes files which haven't been accessed
for a given time.
Normally, it's used to clean up directories
which are used for temporary holding space such as /tmp.

When changing directories, \fBtmpwatch\fR is very sensitive to possible
race conditions and will exit with an error if one is detected. It does
not follow symbolic links in the directories it's cleaning (even if a
symbolic link is given as its argument),
does not switch filesystems (including non-trivial bind mounts),
skips \fIlost+found\fR directories owned by the root user,
and only removes empty directories, regular files, symbolic links, and on some
systems also unused sockets.

By default, \fBtmpwatch\fR dates files by their atime (access time), not
their mtime (modification time). If files aren't being removed when
\fBls -l\fR implies they should be, use \fBls -u\fR to examine their
atime to see if that explains the problem.

If the -\-atime, -\-ctime or -\-mtime options are used in combination,
the decision about deleting a file will be based on the maximum of
these times.  The -\-dirmtime option implies ignoring atime of directories,
even if the -\-atime option is used.

The \fItime\fR parameter defines the threshold for removing files.
If the file has not been accessed for \fItime\fR, the file is removed.
The
.I time
argument is a number with an optional single-character suffix
specifying the units:
.B m
for minutes,
.B h
for hours,
.B d
for days.
If no suffix is specified,
.I time
is in hours.

Following this, one or more directories may be given for \fBtmpwatch\fR
to clean up.


.SH OPTIONS
.TP
\fB-u, -\-atime\fR
Make the decision about deleting a file based on the file's atime (access
time). This is the default.

Note that the periodic \fBupdatedb\fR file system scans keep the atime of
directories recent.

.TP
\fB-m, -\-mtime\fR
Make the decision about deleting a file based on the file's mtime
(modification time) instead of the atime.

.TP
\fB-c, -\-ctime\fR
Make the decision about deleting a file based on the file's ctime
(inode change time) instead of the atime; for directories, make the
decision based on the mtime.

.TP
\fB-M, -\-dirmtime\fR
Make the decision about deleting a directory based on the directory's mtime
(modification time) instead of the atime; completely ignore atime for
directories.

.TP
\fB-a, -\-all\fR
Remove all file types, not just regular files, symbolic links and directories.
On systems where
.B tmpwatch
can remove unused sockets, make the decision only based on file times,
ignoring possible use of the socket.

.TP
\fB-d, -\-nodirs\fR
Do not attempt to remove directories, even if they are empty.

.TP
\fB-f, -\-force\fR
Remove root-owned files even if root doesn't have write access
(akin to \fBrm -f\fR).

.TP
\fB-l, -\-nosymlinks\fR
Do not attempt to remove symbolic links.

.TP
\fB-q, -\-quiet\fR
Report only fatal errors.

.TP
\fB-s, -\-fuser\fR
Attempt to use the "fuser" command to see if a file is already open
before removing it.  Not enabled by default.   Does help in some
circumstances, but not all.  Dependent on fuser being installed in
/sbin.  Not supported on HP-UX or Solaris.

.TP
\fB-t, -\-test\fR
Don't remove files, but go through the motions of removing them. This
implies \fB\-v\fR.

.TP
\fB-U, -\-exclude-user=\fIuser\fR
Don't remove files owned by \fIuser\fR, which can be an user name or numeric
user ID.

.TP
\fB-v, -\-verbose\fR
Print a verbose display. Two levels of verboseness are available -- use
this option twice to get the most verbose output.

.TP
\fB-x, -\-exclude=\fIpath\fR
Skip \fIpath\fR; if \fIpath\fR is a directory, all files
contained in it are skipped too.
If
.I path
does not exist,
it must be an absolute path that contains no symbolic links.

.TP
\fB\-X\fR, \fB\-\-exclude\-pattern=\fIpattern\fR
Skip paths matching \fIpattern\fR;
if a directory matches \fIpattern\fR,
all files contained in it are skipped too.
.I pattern
must match an absolute path that contains no symbolic links.

.SH SEE ALSO
.IR cron (1),
.IR ls (1),
.IR rm (1),
.IR fuser (1)

.SH AUTHORS
.nf
Erik Troan <ewt@redhat.com>
Preston Brown <pbrown@redhat.com>
Nalin Dahyabhai <nalin@redhat.com>
Miloslav Trmac <mitr@redhat.com>
.fi
