ansible-roles/packweb-apache/files/userlogrotate

56 lines
1.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
DATE=`/bin/date +"%d-%m-%Y"`
HOMEPREFIX="/home"
rotate () {
mv $1 $1.$DATE
touch $1
chown $2 $1
chmod g+r $1
}
user_for() {
homedir=`echo $1 | sed "s#\($HOMEPREFIX/\([^/]\+\)\).*#\1#"`
stat -L -c '%G' $homedir
}
for log in access.log access-*.log error.log; do
for i in `ls -1 -d $HOMEPREFIX/*/log/$log 2>/dev/null | grep -v \.bak\.`; do
USER=`user_for $i`
rotate $i root:$USER
done
done
for log in production.log delayed_job.log development.log test.log; do
for i in `ls -1 -d $HOMEPREFIX/*/www/{,current/}log/$log 2>/dev/null | grep -v \.bak\.`; do
USER=`user_for $i`
rotate $i $USER:$USER
done
done
test -x /usr/sbin/apache2ctl && if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
test -x /usr/sbin/nginx && invoke-rc.d nginx rotate >/dev/null 2>&1
# Zipping is done after web serveur reload, so that the file descriptor is released.
# Else, an error is raised (gzip file size changed while zipping)
# and logs written buring the zipping process might be lost.
for log in access.log access-*.log error.log; do
for i in `ls -1 -d $HOMEPREFIX/*/log/$log 2>/dev/null | grep -v \.bak\.`; do
gzip $i
done
done
for log in production.log delayed_job.log development.log test.log; do
for i in `ls -1 -d $HOMEPREFIX/*/www/{,current/}log/$log 2>/dev/null | grep -v \.bak\.`; do
gzip $i
done
done
# we want exit 0
true