Annotation of badi/public_scripts/awstats_update_all/awstats_update_all, revision 1.1
1.1 ! adi 1: #!/bin/sh
! 2:
! 3:
! 4: # Update all awstats sites there is a config file for
! 5:
! 6:
! 7: AWSTATS_BIN="/usr/lib/cgi-bin/awstats.pl"
! 8: CONF_DIR="/etc/awstats"
! 9: CONF_TEMPLATE="awstats.default"
! 10: CONF_EXT="conf"
! 11: NICENESS=16
! 12: MAX_PROCESSES=8
! 13: # Wait that many seconds when MAX_PROCESSES are COUNT_PROC
! 14: # to retry starting new update processes
! 15: RETRY=2
! 16:
! 17:
! 18:
! 19: # ----don't edit below this line-----
! 20:
! 21: # default to babbly, -q suppress output
! 22: SPEAK=true
! 23:
! 24: if [ "$1" = "-q" ]; then
! 25: SPEAK=false
! 26: fi
! 27:
! 28: function count_proc() {
! 29: # count how many instances are already COUNT_PROC
! 30: COUNT_PROC=$(ps -o command -u "$(id -u)" | egrep -cwe '^(/bin/sh|/usr/bin/perl)* *'"$AWSTATS_BIN")
! 31: }
! 32:
! 33: function do_update() {
! 34: # call awstats
! 35: if $SPEAK; then
! 36: nice -n "$NICENESS" "$AWSTATS_BIN" -update -config="$site" &
! 37: else
! 38: # Print errors only
! 39: nice -n "$NICENESS" "$AWSTATS_BIN" -update -config="$site" > /dev/null &
! 40: fi
! 41: }
! 42:
! 43:
! 44: # call awstats for each configured domain
! 45: COUNT_PROC=0
! 46: CURRENT_DIR="$(pwd)"
! 47: cd "$CONF_DIR"
! 48: for conf in *.$CONF_EXT; do
! 49:
! 50: notstarted=true
! 51:
! 52: # control number uf update processes
! 53: while [ $notstarted = true ]; do
! 54: count_proc
! 55: if [ $COUNT_PROC -lt $MAX_PROCESSES ]; then
! 56: # exclude the template file
! 57: if [ "$conf" != "$CONF_TEMPLATE" ]; then
! 58: site="$(echo "$conf" | sed -e "s/^awstats\.\(.*\)\.conf$/\1/")"
! 59: $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting update for $site (already running: $COUNT_PROC)."
! 60: do_update
! 61: fi
! 62: notstarted=false
! 63: let "site_count += 1"
! 64: break;
! 65: fi
! 66:
! 67: sleep "$RETRY"
! 68: done
! 69:
! 70: done
! 71: cd "$CURRENT_DIR"
! 72:
! 73: # wait for all processes to finish
! 74: count_proc
! 75: if [ $COUNT_PROC -gt 0 ]; then
! 76: $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: All jobs started - $COUNT_PROC process(es) still runnning. Waiting..."
! 77:
! 78: # wait for processes to finish
! 79: while [ $COUNT_PROC -gt 0 ]; do
! 80: sleep "$RETRY"
! 81: count_proc
! 82: done
! 83: fi
! 84:
! 85: $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: Finished. Statistics for $site_count sites updated."
! 86: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>