File:  [Local Repository] / badi / public_scripts / awstats_update_all / awstats_update_all
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Sat Jul 31 11:54:46 2010 UTC (13 years, 8 months ago) by adi
Branches: MAIN
CVS tags: HEAD
corrected comment

    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 running
   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>