Я использую pyapns (push-сервер Iphone), который, в свою очередь, использует twisted (демон twistd).
Демон twistd создает файлы twistd.log. Он поворачивает их в twistd.log.1, twistd.log.2 и так далее, когда twistd.log достигает 1 МБ, но не использует logrotate, поэтому я думаю, он встроен.
Проблема в том, что это продолжается вечно и старые файлы журналов никогда не удаляются. В конечном итоге это заполняет мой диск.
Я пробовал использовать logrotate или что-то подобное для поворота журналов, но тогда мне нужно было бы запускать logrotate очень часто, так как мне нужно повернуть ДО того, как twistd.log достигнет 1 МБ. Это может произойти в течение секунды, насколько я знаю, в зависимости от того, сколько журнала было произведено.
Итак, как я могу войти в систему, не взламывая скрипты pyapns / twistd?
На самом деле нет способа сделать это с помощью обычного logrotate. Logrotate - это не демон, он запускается cron и обычно один раз в день.
Вы можете изменить его так, чтобы он запускался каждые несколько секунд, но если 1 МБ может заполниться так быстро, logrotate не сможет успевать.
Почему бы вам не написать простую задачу cron, которая удаляла бы все лишние повернутые файлы журналов и оставила бы pyapns / twistd для продолжения вращения на 1 МБ? Например, вы можете удалить все файлы старше недели, выполнив простую задачу cron:
/usr/bin/find /var/log/twistd/* -mtime +7 -exec /bin/rm {} \;
Вы даже можете сжать файлы, например:
/usr/bin/find /var/log/twistd/* -regex '*.log.[0-9]+' | /usr/bin/xargs -I{} /bin/gzip {}
Таким образом, вы можете имитировать поведение logrotate, не отключая внутренний logrotate Twistd, и без риска переполнения диска.