How to use watchdisk and subst.pl to dynamically do News expiration based on how much disk space is available.

On each filesystem to be monitored, have a .watchtab file with three sections. The first section contains lines that will cause subst.pl to be executed to revise expiration times in a filesystem-specific expire.ctl file. For example, in a filesystem called /news4 we might have a .watchtab file like this:

# This file is /news4/.watchtab # # First revise expiration time in qexp.news4 400 cd /news/inn/lib; subst qexp.news4 ALL=3 300 cd /news/inn/lib; subst qexp.news4 ALL=3.5 200 cd /news/inn/lib; subst qexp.news4 ALL=2 100 cd /news/inn/lib; subst qexp.news4 ALL=1 # Then expire 400 cd /news/inn/lib; /news/bin/qexp qexp.export.news4 # Then do last-resort actions if we still do not have sufficient space # e.g., page operator. 100 sendpage "`hostname` %DIR% has only %FREE% M free"

Run watchdisk periodically fron cron.

The file qexp.news4 is a customized expire.ctl file. Suppose we have comp.* and rec.* hierarchies on /news4. Then qexp.news4 might contain these lines:

# This file is /news/inn/lib/qexp.news4 # Quick expire for /news4. /remember/:7 # Default is expire nothing. *:A:never:never:never # Expire comp.* and rec.* #%SUB%comp.*:A:%ALL%:%ALL%:%ALL% comp.*:A:4:4:4 #%SUB%rec.*:A:%ALL%:%ALL%:%ALL% rec.*:A:4:4:4

When watchdisk runs, it checks each line in the .watchtab file, and invokes subst.pl to update the expiration times represented by the macro %ALL% in the file qexp.news4. Then News expiration occurs and space is recovered. In the example above, if /news4 had slightly less than 200 megabytes left, a version of the qexp.news4 file would be generated in which comp.* and rec.* were expired retaining 2 days of News.

The program qexp that is invoked from the .watchtab file should be a small script that you will write. It will expect a single argument which will be the name of an expire.ctl file. It will invoke the actual News expiration program supplying it the name of the expire.ctl file along with any other needed arguments. The qexp script can be quite simple, e.g;

#! /bin/sh # This file is /news/bin/qexp # Invoke news.daily, supplying it the name of # a custome expire.ctl file. /news/inn/bin/news.daily delayrm expctl=$1 \ nologs nomail norenumber norotate nostat notdaily flags='-v1 -l'

To my software page


$Id: instructions.html,v 1.2 1997/08/13 12:03:39 dhesi Exp $
$Source: /files/home/ftp/pub/dhesi/www/software/RCS/instructions.html,v $