77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# daily - daily cleanup of the system.
 | 
						|
 | 
						|
# Doesn't make sense when running from CD
 | 
						|
if [ -f /CD ]
 | 
						|
then	exit
 | 
						|
fi
 | 
						|
 | 
						|
case "$#:$1" in
 | 
						|
1:cron|1:boot)
 | 
						|
    caller=$1
 | 
						|
    ;;
 | 
						|
*)  echo >&2 "Usage: $0 cron|boot"
 | 
						|
    exit 1
 | 
						|
esac
 | 
						|
 | 
						|
test -d /usr/adm || exit
 | 
						|
cd /usr/adm || exit
 | 
						|
 | 
						|
# Last run must have been on a previous day.
 | 
						|
timestamp=daily.lasttime
 | 
						|
if test -f $timestamp
 | 
						|
then
 | 
						|
    set -- `ls -lT $timestamp`
 | 
						|
    test "$6 $7 $9" = "$(date '+%b %d %Y')" && exit
 | 
						|
fi
 | 
						|
 | 
						|
# Update last-run time
 | 
						|
echo >$timestamp
 | 
						|
 | 
						|
# Remove three day old files from various tmp dirs.
 | 
						|
cleantmp -3 /tmp /usr/tmp /usr/preserve /usr/spool/lpd /usr/spool/at/past
 | 
						|
 | 
						|
# Truncate log files in /usr/adm.
 | 
						|
test -d old || mkdir old || exit
 | 
						|
 | 
						|
cycle()
 | 
						|
{
 | 
						|
    # Cycle a log file if larger than a size in kilobytes.
 | 
						|
    local size="`expr "$1" + "$1"`"
 | 
						|
    local log="$2"
 | 
						|
 | 
						|
    if test -f "$log" && test -n "$(find "$log" -size +"$size")"
 | 
						|
    then
 | 
						|
	test -f "old/$log.2" && cp -p "old/$log.2" "old/$log.3"
 | 
						|
	test -f "old/$log.1" && cp -p "old/$log.1" "old/$log.2"
 | 
						|
	cp -p "$log" "old/$log.1"
 | 
						|
	: > "$log"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
cycle 100 wtmp 
 | 
						|
cycle 100 log 
 | 
						|
cycle  20 ftplog
 | 
						|
cycle 200 aftplog
 | 
						|
 | 
						|
# Make copies of /etc/passwd and /etc/shadow if they have been changed.
 | 
						|
for file in passwd shadow
 | 
						|
do
 | 
						|
    if cmp -s /etc/$file old/$file.1
 | 
						|
    then
 | 
						|
	# Fine.
 | 
						|
    else
 | 
						|
	test -f old/$file.2 && cp -p old/$file.2 old/$file.3
 | 
						|
	test -f old/$file.1 && cp -p old/$file.1 old/$file.2
 | 
						|
	test -f /etc/$file && cp -p /etc/$file old/$file.1
 | 
						|
    fi
 | 
						|
done
 | 
						|
 | 
						|
# Update manpage index but don't warn about nonexistant dirs
 | 
						|
/usr/libexec/makewhatis -f 2>/dev/null
 | 
						|
 | 
						|
# Continue with a local script if present.
 | 
						|
test -f /usr/local/etc/daily && sh /usr/local/etc/daily $caller
 | 
						|
exit 0
 |