====== Tmpwatch ======
**General Information**
tmpwatch is a utility that recursively removes files that haven't been accessed for a specified period of time.
It is normally used to clean up directories such as /tmp.
**Checklist**
* Distro(s): Enterprise Linux 6
----
====== Install ======
Tmpwatch does not come installed on a CentOS 6 minimal installation.
yum install tmpwatch
===== cron.daily =====
After installation, there will now be a tmpwatch cron script in: /etc/cron.daily/tmpwatch
See examples below for contents and explanation.
----
====== Tmpwatch Usage ======
Format
tmpwatch -[options]
**time**
* Threshold for removing files.
* Number with optional single character suffix
* m = minutes
* h = hours (default if not specified)
* d = days
**directories**
* One or more directories specified for clean up. (Space separated)
**Common Options**
* -u, --atime => Delete files based on the file's access time. (default setting)
* Note: the "updatedb" file system scans keep the atime of directories recent.
* -m, --mtime => Delete files based on the file's modification time.
* -c, --ctime => Delete files based on the file's inode change time. For directories, delete based on modification time.
* -a, --all => Remove all file types, not just regular files, symbolic links and directories.
* -f, --force => Remove files even if root doesn't have write. (same as rm -f)
* -t, --test => Don't actually remove anything.
* -v, --verbose => Print display.
* -x => Skip specified path. (if directory, skip all files inside)
* -X => Skip paths matching specified pattern.
----
===== Examples =====
==== Fictional App in /opt ====
* Clean up an application's tmp directory at /opt/app/tmp
* Check access time (-u), modification time (-m), and change time (-c).
* Delete if any of the three are older than 30 days (30d).
tmpwatch -umc 30d /opt/app/tmp
----
==== Default /etc/cron.daily/tmpwatch ====
**First tmpwatch (with all the "-x")**
* Clean up /tmp
* Check access time (-u), modification time (-m), and change time (-c).
* Exclude all directories specified after each "-x"
* Exclude any directory that matches the pattern after the "-X"
* Delete if any of the -umc options are older than 10 days (10d).
**Second tmpwatch "$flags" 30d /var/tmp**
* Clean up /var/tmp
* Check access time (-u), modification time (-m), and change time (-c).
* Delete if any of the -umc options are older than 30 days (30d).
**Third /usr/sbin/tmpwatch "$flags" -f 30d "$d"**
* Clean up each directory ($d) in the for loop pattern.
* Check access time (-u), modification time (-m), and change time (-c).
* Force deletion (-f)
* Delete if any of the -umc options are older than 30 days (30d).
/etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
----