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> <directories>
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