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