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>