diff --git a/roles/nginx/files/nginx-logrotate.sh b/roles/nginx/files/nginx-logrotate.sh new file mode 100755 index 0000000..8fe8338 --- /dev/null +++ b/roles/nginx/files/nginx-logrotate.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +set -eu + +cd /var/www/logs + +find_rotated() { + find . -mindepth 1 -maxdepth 1 -type f -name "${1}.*" | sort -V -r +} + +for log in *.log ; do + find_rotated "$log" | while read -r name; do + ext="${name##*.}" + next="${name%.*}.$((ext+1))" + mv "$name" "$next" + done + mv "$log" "${log}.1" + touch "$log" + + find_rotated "$log" | while read -r name; do + num="$(echo "$name" | awk -F. '{ print $NF }')" + if [ "$num" -gt 7 ]; then + rm -f "$log" + fi + done +done + +kill -USR1 "$(cat /var/run/nginx.pid)"