home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!mcnc!uvaarpa!umd5!brl-adm!cmcl2!nrl-cmf!ames!necntc!ncoast!allbery
- From: rsalz@pineapple.bbn.com
- Newsgroups: comp.sources.misc
- Subject: v03i013: Mail users about old files
- Message-ID: <8805091314.AA24731@fig.bbn.com>
- Date: 9 May 88 13:14:20 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: rsalz@pineapple.bbn.com
- Lines: 102
- Approved: allbery@ncoast.UUCP
-
- comp.sources.misc: Volume 3, Issue 13
- Submitted-By: "A. Nonymous" <rsalz@pineapple.bbn.com>
- Archive-Name: core_notice
-
- We run this script weekly.
- It will need minor tweaking for other sites, but it's not really
- BSD or USG dependent.
-
- /r$
-
-
- #To unpack, delete all lines before this and feed to /bin/sh
- echo core_notice 1>&2
- sed -e 's/^X//' >core_notice <<'END'
- X#! /bin/sh
- X##
- X## Script to find old core, etc., files and send mail to their owners.
- X## It assumes your find has the "-xdev" option to not cross mount
- X## points. It would like to use System V "xargs" command, but can
- X## use the BSD "fmt" command as a hack, instead. Also check the mail
- X## commands, below.
- X##
- X## The file core_errs will contain any errors; core_ls will be the full
- X## list of old and bogus files.
- X##
- X
- X## Setup.
- Xcd /usr/adm
- XPATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin
- XHOST=`hostname`
- Xrm -f core_ls core_errs core_unknown
- X
- X## If first argument is "-i" then we're interactive.
- Xif [ "x$1" = "x-i" ] ; then
- X shift
- Xelse
- X exec 2>core_errs
- Xfi
- X
- X## Optional next argument is how old files should be before we complain.
- XAGE=${1-5}
- X
- X## Cute trick to get list of directly-mounted filesystems, only.
- XFILESYSTEMS=`df | awk '$1 ~ /^\/dev\// {print $6}'`
- X
- X## You might want to tweak the predicates in here.
- Xfind ${FILESYSTEMS} \( \
- X -name core -o -name a.out \
- X -o -name 'drft.[0-9]*' \
- X -name 'msg[0-3][0-9][JFMASOND]*' \
- X -o -name ',*' \
- X -o -name '#*' -o -name '.#*' \
- X -o -name '*~' -o -name '.*~' \
- X -o -name '.tpen*' \
- X \) -a -xdev -a -mtime +${AGE} -print \
- X | fmt -200 | sed -e 's@^@/bin/ls -l @' | sh >core_ls
- X# If you have xargs, it is more efficient.
- X# | xargs /bin/ls -l >core_ls
- X
- X## Unlikely, but maybe we didn't find anything.
- Xif [ ! -s core_ls ]; then
- X exec rm -f core_ls
- Xfi
- X
- X## Assuming a standard "ls", third field is the users. Loop over list
- X## of all badguys. The funky grep commands ignore filenames; be careful
- X## if your "ls -l" uses tabs.
- Xfor c in `awk '{print $3}' <core_ls | sort -u` ; do
- X case $c in
- X _*|[0-9]*)
- X grep " $c " core_ls >>core_unknown
- X ;;
- X *)
- X (
- X echo "You have the following old files on the ${HOST}:"
- X grep " $c " core_ls
- X echo "which are greater than ${AGE} days old."
- X echo ''
- X echo 'If you are finished with them, it would be nice to remove'
- X echo 'them, freeing up the disk space.'
- X echo ''
- X echo 'Thanks,'
- X echo ''
- X echo "The Filesystem on ${HOST}"
- X echo ''
- X ) | \
- X Mail -s "Old files on ${HOST}" $c
- X# We use sendmail; MMDF is probably this:
- X# v6mail -to $c -subj "Old files on ${HOST}"
- X ;;
- X esac
- Xdone
- Xif [ -s core_unknown ] ; then
- X (
- X echo "Found unknown old files on ${HOST}:"
- X cat core_unknown
- X ) | \
- X Mail -s "${HOST}: No owner for these ancient files." root
- X# We use sendmail; MMDF is probably this:
- X# v6mail -to root -subj "${HOST}: No owner for these ancient files."
- Xfi
- END
-