6 printf "error: server not detected, needs to be set manually\n" >&2
7 printf "set \$SERVER or modify the script itself\n" >&2
11 # ... && ... || is not an if-then-else, but this works because
12 # there's no way for only one printf to fail
13 [ -z "$SERVER" ] && SERVER
=$(which > /dev/null 2>&1 apache2 && printf "apache2" || which > /dev/null 2>&1 nginx && printf "nginx" || err)
15 { cat /var
/log
/"$SERVER"/access.log
/var
/log
/"$SERVER"/access.log
.1; gzip -cd $(ls /var/log/"$SERVER"/access.log.*.gz | sed 's/.*\.\([0-9]*\)\.gz
/\
1 &/' | sort -n | cut -d' ' -f2-); } | grep -a "$@" | awk 'match
($0, /" [0-9]{3} [0-9]+ "/) { matchp
= substr
($0, RSTART
, RLENGTH
); split(matchp
, nums
, " "); n
+=nums
[3] } END
{ y
=0; split("B K M G T", units
); while (n
>= 1024 && y
< 4) { n
/= 1024; y
++; } if (y
== 0) { print n
} else if (n
< 10) {printf "%.1f%c\n", n
, units
[y
+1] } else { printf "%d%c\n", n
, units
[y
+1]} }'