Ротация логов mongodb (logrotate)
Пришлось на днях настроить ротацию логов mongodb. С logrotate не сложилось, там костыль на костыле и костылём погоняет. В общем используем встроенную функцию mongodb для ротации логов и немного ей помогаем. Создаём скриптик, а потом этот скриптик добавляем в крон. # vim /root/scripts/mongorotate.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash ### log rotate /usr/bin/kill -USR1 $(cat /var/run/mongodb/mongodb.pid) ### compress newly rotated for f in /home/logs/mongodb/mongodb.log.????-??-??T??-??-??; do gzip "$f" done ### remove files older than x days #find /home/logs/mongodb/mongodb.log.????-??-??T??-??-??.gz -ctime +7 -delete ### remove more then X-1 last files ls -t /home/logs/mongodb/mongodb.log.????-??-??T??-??-??.gz|tail -n+5|xargs -d "\n" -i rm "{}" Обратите внимание что в скрипте можно оставлять архивы логов за несколько дней, а можно оставлять просто несколько последних архивов логов. Так же обратите внимание на пути к самим логам и к файлу .pid. Разрешим файлу выполняться # chmod +x /root/scripts/mongorotate.sh Добавляем задание в крон # crontab -e Rotate logs mongodb 0 2 * * * /bin/bash /root/scripts/mongorotate.sh > /dev/null 2> /dev/null ...