ansible-roles/userlogrotate/files/userlogrotate
Jérémy Lecour 0e81eab6fa
All checks were successful
Ansible Lint |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |4825|2|4823|3|:+1: Reference build: <a href="https://jenkins.evolix.org/job/gitea/job/ansible-roles/job/unstable/209//ansiblelint">Evolix » ansible-roles » unstable #209</a>
gitea/ansible-roles/pipeline/head This commit looks good
If you want exit 0, well… run exit 0 :D
2023-03-16 14:53:53 +01:00

58 lines
1.5 KiB
Bash

#!/bin/bash
DATE="$(/bin/date +"%Y-%m-%d")"
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 server reload, so that the file descriptor is released.
# Else, an error is raised (gzip file size changed while zipping)
# and logs written during the zipping process might be lost.
for log in access.log*[!\.gz] access-*.log*[!\.gz] error.log*[!\.gz]; do
for i in $(ls -1 -d $HOMEPREFIX/*/log/$log 2>/dev/null | grep -v \.bak\.); do
if test -f "$i"; then
gzip "$i"
fi
done
done
for log in production.log*[!\.gz] delayed_job.log*[!\.gz] development.log*[!\.gz] test.log*[!\.gz]; do
for i in $(ls -1 -d $HOMEPREFIX/*/www/{,current/}log/$log 2>/dev/null | grep -v \.bak\.); do
if test -f "$i"; then
gzip "$i"
fi
done
done
exit 0