У меня есть cronjob, который запускает некоторые скрипты Python, и они генерируют значительный файл журнала. Как я препятствую тому, чтобы они стали настолько большими? Это было бы прекрасно, если бы файл был удален, после того как это поразило определенный размер. Поскольку каждые несколько дней, файл составляет 50 МБ теперь, но становится намного больше и берет навсегда, чтобы загрузить и проанализировать ошибку на медленном соединении с интернетом. Я действительно только хочу видеть, что последние 1 000 строк, которые будут видеть, где сценарий пошел не так, как надо.
Я знаю, что мог кодировать что-то, чтобы сделать это, но я просто задавался вопросом, имел ли Linux что-то, о чем я не знал. Я предполагаю, что большие файлы журнала являются типичной проблемой. Слова благодарности.
Обычно необходимо только зарегистрировать действие, о котором Вы заботитесь и должны настроить программу, чтобы быть менее подробными, если это возможно.
Как предложено, использование logrotate является обычным способом иметь дело с файлами журнала. Но вместо того, чтобы добавить содержание к /etc/logrotate.conf
необходимо добавить собственное задание к /etc/logrotate.d/
, иначе необходимо было бы посмотреть на большее количество diffs конфигурационных файлов во время обновлений версии.
Вот пример, который я создал для сценария PHP:
/var/log/some-php-app/*.log {
daily
rotate 10
delaycompress
compress
notifempty
missingok
}
/var/log/some-php-app/*.log
- Путь, где файл (файлы) журнала расположен, и это - имя. Как Вы видите, можно также использовать подстановочные знаки для применения правила больше чем к одному файлу журнала.zless
вместо less
просмотреть файлы.Взгляните на logrotate страницу справочника для большего количества опций.
Вы захотите установить размер в/etc/logrotate.conf
, файл существует по умолчанию и, ежедневно работал. Единственная вещь, которую необходимо будет сделать, добавляют некоторые дополнительные параметры к logrotate.conf.
/path/to_big.log {
size 1k
create 700 user group
rotate 1
}
В этом примере мы определяем путь к нашему журналу, размер, который мы хотим ограничить его, полномочия для заменяющего журнала, и сколько копий для хранения. Вращайтесь 1, сохранит одну копию.
Если Ваши журналы становятся очень быстрыми, Вы не можете ожидать крона для выполнения logrotate один раз в день, как значение по умолчанию после установления предела размера, как упомянуто в предыдущем ответе, можно сделать символьную ссылку в/etc/cron.hourly к logrotate заданию крона в/etc/cron.daily с этой командой:
sudo ln -s /etc/cron.daily/logrotate /etc/cron.hourly/
единственная вещь, которую необходимо помнить, состоит в том, чтобы быть уверена и удалить ссылку однажды проблема, которая создает чрезмерные журналы, разрешен. Это - то, если у Вас есть что-то за пределами Вашего управления, создающего чрезмерные журналы, необходимо сообщить об ошибке о проблеме, потому что это может влиять на других, не понимая его. Этот вид ошибки может заставить корневой объем исчерпывать пространство, и затем люди будут видеть все виды проблем и никогда не понимать, что это - потому что у них заканчивается пространство на корне.