Ротация логов скриптом
Хотя для ротации логов есть специализированные средства (например, logrotate), зачастую проще оказывается использовать обычные shell скрипты, подобные приведенному ниже.
Пример скрипта для ротации логов nginx:
d=$(date +%Y%m%d_%H%M)
# Копирование логов
cp /tmp/ngx_access.log /tmp/ngx_access_$d.log
cp /tmp/ngx_error.log /tmp/ngx_error_$d.log
# Очистка существующих логов
cat /dev/null > /tmp/ngx_access.log
cat /dev/null > /tmp/ngx_error.log
# Архивация логов
/usr/local/bin/7z a -mx=9 -md=128m -ms=on -t7z -sdel /var/log/archive/logs_$d.7z /tmp/*$d.log
# Контрольное удаление не-архивированных логов (вообще их должно удалить через опцию -sdel)
rm /tmp/*$d.log
# Скрипт выше позволяет не перезапускать nginx, однако, никто не мешает это делать
#service nginx restart