2720b68f1b
. previously was not updated causing daily to be run on every boot
76 lines
1.6 KiB
Bash
Executable file
76 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 2>/dev/null
|
|
|
|
# Continue with a local script if present.
|
|
test -f /usr/local/etc/daily && sh /usr/local/etc/daily $caller
|
|
exit 0
|