--- badi/public_scripts/awstats_update_all/awstats_update_all 2010/08/01 19:33:20 1.3 +++ badi/public_scripts/awstats_update_all/awstats_update_all 2013/11/28 10:12:57 1.5 @@ -6,29 +6,36 @@ # for several sites at once. Give the command line argument "-q" to suppress # all but error output. -# (c) 2010 under GPL v2 by Adrian Zaugg. +# (c) 2010 under GPL v2 by Adrian Zaugg. +# awstats main script AWSTATS_BIN="/usr/lib/cgi-bin/awstats.pl" -CONF_DIR="/etc/awstats" -# file to exclude -CONF_TEMPLATE="awstats.default" +# awstats configuration directory +CONF_DIR="/etc/awstats" # normal awstats config files have this extension CONF_EXT="conf" -# Run with this priority -NICENESS=16 +# File to exclude +# Exclude this file, which isn't a config file for awstats, but +# also resides in the config directory. Note: Only +# files with an extension $CONF_EXT are considered anyway. +CONF_TEMPLATE="awstats.default" + +# Run with this priority (0: normal - 19: friendly) +NICENESS=19 -# maximum awstats update processes to run at once +# Maximum awstats update processes to run at once MAX_PROCESSES=8 -# Wait that many seconds when MAX_PROCESSES are COUNT_PROC +# Wait that many seconds when MAX_PROCESSES are running # to retry starting new update processes RETRY=2 + # ----don't edit below this line----- # default to babbly, -q suppress output @@ -38,13 +45,13 @@ if [ "$1" = "-q" ]; then fi function count_proc() { - # count how many instances are already COUNT_PROC + # count how many instances are already running COUNT_PROC=$(ps -o command -u "$(id -u)" | egrep -cwe '^(/bin/sh|/usr/bin/perl)* *'"$AWSTATS_BIN") } function do_update() { # call awstats - if $SPEAK; then + if $SPEAK; then nice -n "$NICENESS" "$AWSTATS_BIN" -update -config="$site" & else # Print errors only @@ -59,39 +66,40 @@ CURRENT_DIR="$(pwd)" cd "$CONF_DIR" for conf in *.$CONF_EXT; do - notstarted=true - + notstarted=true + # control number uf update processes - while [ $notstarted = true ]; do - count_proc - if [ $COUNT_PROC -lt $MAX_PROCESSES ]; then - # exclude the template file + while [ $notstarted = true ]; do + count_proc + if [ $COUNT_PROC -lt $MAX_PROCESSES ]; then + # exclude the template file if [ "$conf" != "$CONF_TEMPLATE" ]; then site="$(echo "$conf" | sed -e "s/^awstats\.\(.*\)\.conf$/\1/")" $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting update for $site (already running: $COUNT_PROC)." do_update - fi - notstarted=false + fi + notstarted=false let "site_count += 1" break; fi sleep "$RETRY" - done + done done cd "$CURRENT_DIR" + # wait for all processes to finish count_proc if [ $COUNT_PROC -gt 0 ]; then - $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: All jobs started - $COUNT_PROC process(es) still runnning. Waiting..." - - # wait for processes to finish - while [ $COUNT_PROC -gt 0 ]; do - sleep "$RETRY" + $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: All jobs started - $COUNT_PROC process(es) still runnning. Waiting..." + + # wait for processes to finish + while [ $COUNT_PROC -gt 0 ]; do + sleep "$RETRY" count_proc - done + done fi $SPEAK && echo "`date "+%Y-%m-%d %H:%M:%S"`: Finished. Statistics for $site_count sites updated."