xref: /freebsd/usr.sbin/periodic/etc/daily/110.clean-tmps (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1#!/bin/sh
2#
3# $FreeBSD$
4#
5# Perform temporary directory cleaning so that long-lived systems
6# don't end up with excessively old files there.
7#
8
9# If there is a global system configuration file, suck it in.
10#
11if [ -r /etc/defaults/periodic.conf ]
12then
13    . /etc/defaults/periodic.conf
14    source_periodic_confs
15fi
16
17case "$daily_clean_tmps_enable" in
18    [Yy][Ee][Ss])
19	if [ -z "$daily_clean_tmps_days" ]
20	then
21	    echo '$daily_clean_tmps_enable is set but' \
22		'$daily_clean_tmps_days is not'
23	    rc=2
24	else
25	    echo ""
26	    echo "Removing old temporary files:"
27
28	    set -f noglob
29	    args="-atime +$daily_clean_tmps_days -mtime +$daily_clean_tmps_days"
30	    args="${args} -ctime +$daily_clean_tmps_days"
31	    dargs="-empty -mtime +$daily_clean_tmps_days"
32	    [ -n "$daily_clean_tmps_ignore" ] && {
33		args="$args "`echo " ${daily_clean_tmps_ignore% }" |
34		    sed 's/[ 	][ 	]*/ ! -name /g'`
35		dargs="$dargs "`echo " ${daily_clean_tmps_ignore% }" |
36		    sed 's/[ 	][ 	]*/ ! -name /g'`
37	    }
38	    case "$daily_clean_tmps_verbose" in
39		[Yy][Ee][Ss])
40		    print=-print;;
41		*)
42		    print=;;
43	    esac
44
45	    rc=$(for dir in $daily_clean_tmps_dirs
46		do
47		    [ ."${dir#/}" != ."$dir" -a -d $dir ] && cd $dir && {
48			find -x -d . -type f $args -delete $print
49			find -x -d . ! -name . -type d $dargs -delete $print
50		    } | sed "s,^\\.,  $dir,"
51		done | tee /dev/stderr | wc -l)
52	    [ -z "$print" ] && rc=0
53	    [ $rc -gt 1 ] && rc=1
54	    set -f glob
55	fi;;
56
57    *)  rc=0;;
58esac
59
60exit $rc
61