summaryrefslogtreecommitdiffstats
path: root/debian/logwatch.sh
diff options
context:
space:
mode:
Diffstat (limited to 'debian/logwatch.sh')
-rwxr-xr-xdebian/logwatch.sh104
1 files changed, 104 insertions, 0 deletions
diff --git a/debian/logwatch.sh b/debian/logwatch.sh
new file mode 100755
index 0000000..64c21ed
--- /dev/null
+++ b/debian/logwatch.sh
@@ -0,0 +1,104 @@
+#! /bin/sh
+
+# script to trick the build daemons and output something, if there is
+# still test/build activity
+
+# $1: primary file to watch. if there is activity on this file, we do nothing
+# $2+: files to watch to look for activity despite no output in $1
+# if the files are modified or are newly created, then the message
+# is printed on stdout.
+# if nothing is modified, don't output anything (so the buildd timeout
+# hits).
+
+pidfile=logwatch.pid
+timeout=3600
+message='\nlogwatch still running\n'
+
+usage()
+{
+ echo >&2 "usage: `basename $0` [-p <pidfile>] [-t <timeout>] [-m <message>]"
+ echo >&2 " <logfile> [<logfile> ...]"
+ exit 1
+}
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -p)
+ pidfile=$2
+ shift
+ shift
+ ;;
+ -t)
+ timeout=$2
+ shift
+ shift
+ ;;
+ -m)
+ message="$2"
+ shift
+ shift
+ ;;
+ -*)
+ usage
+ ;;
+ *)
+ break
+ esac
+done
+
+[ $# -gt 0 ] || usage
+
+logfile="$1"
+shift
+otherlogs="$@"
+
+cleanup()
+{
+ rm -f $pidfile
+ exit 0
+}
+
+#trap cleanup 0 1 3 15
+
+echo $$ > $pidfile
+
+update()
+{
+ _logvar=$1
+ _othervar=$2
+
+ # logfile may not exist yet
+ if [ -r $logfile ]; then
+ _logtail="`tail -10 $logfile | md5sum` $f"
+ else
+ _logtail="does not exist: $logfile"
+ fi
+ eval $_logvar="'$_logtail'"
+
+ _othertails=''
+ for f in $otherlogs; do
+ if [ -r $f ]; then
+ _othertails="$_othertails `tail -10 $f | md5sum` $f"
+ else
+ _othertails="$_othertails does not exist: $f"
+ fi
+ done
+ eval $_othervar="'$_othertails'"
+}
+
+update logtail othertails
+while true; do
+ sleep $timeout
+ update newlogtail newothertails
+ if [ "$logtail" != "$newlogtail" ]; then
+ # there is still action in the primary logfile. do nothing.
+ logtail="$newlogtail"
+ elif [ "$othertails" != "$newothertails" ]; then
+ # there is still action in the other log files, so print the message
+ /bin/echo -e $message
+ othertails="$newothertails"
+ else
+ # nothing changed in the other log files. maybe a timeout ...
+ :
+ fi
+done