[RFC] DCD checkfreespace() vs. multiple filesystems
There has been some debate regarding /etc/cron.daily/multicron-d and one of its functions, checkfreespace(), the default configuration for which does *not* recognize nor act on multiple filesystems. What follows is my proposed modification to that one function and a change in the purge list paradigm for /etc/lrp.conf, which completely resolves this challenge. First, currently, /etc/lrp.conf contains this, by default: lrp_SC_DEL_L1="/var/log/*[4-9].gz" lrp_SC_DEL_L2="/var/log/*[1-3].gz" lrp_SC_DEL_L3="/var/log/*.gz" lrp_SC_DEL_L4="/var/log/*.0" lrp_SC_DEL_L5="/var/log/wtmp" I propose *replacing* those with the likes of these: purge_ram0_L1="/tmp/*" purge_ram0_L2="/var/cache/*[1-9].gz" purge_ram0_L3="/var/cache/*.gz" purge_ram0_L4="/var/cache/*.0" purge_ram0_L5="/var/cache/*" purge_ram1_L1="/var/log/*[4-9].gz" purge_ram1_L2="/var/log/*[1-3].gz" purge_ram1_L3="/var/log/*.gz" purge_ram1_L4="/var/log/*.0" purge_ram1_L5="/var/log/wtmp" Notice, each ramdisk now *must* be configured separately for the five (5) purge levels. The new checkfreespace() automatically checks *ALL* filesystems known to `df'. Currently, in DCD, all of these must take the following form: /dev/ramX where X is some number from 0 to an unidentified upper limit. Need we account for mounted cdrom and floppy? /etc/cron.daily/multicron-d -- proposed modification to function [Beware of inadvertent line wrap!]: checkfreespace () { ckfree () { [ $bfree -le ${lrp_SC_MINKB:--1} ] && return 1 [ $pfree -le ${lrp_SC_MINPER:-101} ] && return 1 return 0 } cleanlevel () { eval F="\$purge_$@_L$cklevel" for f in $F do [ ! -f "$f" ] && continue # Bug in expansion? : > $f done } mailspacelow () { { echo echo "date: $(date)" echo "src : $HOSTNAME" echo "filesystem: /dev/$@" echo "level: $cklevel freeKB: $bfree free%: $pfree" echo } | mailadmin "Freespace Low!" } updatefree () { IFS="$SP$TAB%" set -- $(df /dev/$@ | sed -n 2p) IFS=$OIFS bfree=$4 pfree=$((100 - $5)) } [ "$lrp_SPACECHECK" != "YES" ] && return 0 # NOTE: *BOTH* character classes contain *both* space and tab !?!? fslist=`df | sed '1d;s!^/dev/\([^ ]*\)[ ]*.*$!\1!'` for fs in $fslist do cklevel=0 while [ $cklevel -lt 5 ] do updatefree $fs ckfree && break cklevel=$(($cklevel + 1)) cleanlevel $fs done [ $cklevel -ge ${lrp_SC_MAIL_LEVEL:-1} ] && mailspacelow $fs done log checkfreespace } What do you think? -- Best Regards, mds mds resource 888.250.3987 Dare to fix things before they break . . . Our capacity for understanding is inversely proportional to how much we think we know. The more I know, the more I know I don't know . . . _______________________________________________ Leaf-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/leaf-devel