#!/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)"