28 lines
559 B
Bash
Executable file
28 lines
559 B
Bash
Executable file
#!/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}.${num}"
|
|
fi
|
|
done
|
|
done
|
|
|
|
kill -USR1 "$(cat /var/run/nginx.pid)"
|