Эффективное управление файлами журналов является важной задачей для системного администратора Linux.
В этой статье мы обсудим, как выполнять следующие операции с файлами журналов с помощью утилиты UNIX logrotate .
Ниже приведены ключевые файлы, которые вы должны знать для правильной работы logrotate.
/usr/sbin/logrotate — сама команда logrotate.
/etc/cron.daily/logrotate — этот сценарий оболочки выполняет команду logrotate каждый день.
$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
/etc/logrotate.conf — в этом файле указана конфигурация ротации журналов для всех файлов журналов.
$ cat /etc/logrotate.conf weekly rotate 4 create include /etc/logrotate.d /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 }
/etc/logrotate.d — Когда в системе установлены отдельные пакеты, они удаляют информацию о конфигурации ротации журналов в этом каталоге. Например, информация о конфигурации yum log rotate показана ниже.
$ cat /etc/logrotate.d/yum /var/log/yum.log { missingok notifempty size 30k yearly create 0600 root root }
Если вы хотите rotate файл журнала (например, /tmp/output.log) для каждого 1 КБ, создайте файл logrotate.conf, как показано ниже.
$ cat logrotate.conf /tmp/output.log { size 1k create 700 bala bala rotate 4 }
Эта конфигурация logrotate имеет следующие три параметра:
Перед журналированием следующий размер: output.log:
$ ls -l /tmp/output.log -rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log
Теперь запустите команду logrotate, как показано ниже. Опция -s указывает имя файла для записи статуса logrotate.
$ logrotate -s /var/log/logstatus logrotate.conf
Примечание: всякий раз, когда вам нужно ротации журналов для некоторых файлов, подготовьте конфигурацию logrotate и выполните команду logroate вручную. После logrotation, следующий размер файла output.log:
$ ls -l /tmp/output* -rw-r--r-- 1 bala bala 25868 2010-06-09 21:20 output.log.1 -rwx------ 1 bala bala 0 2010-06-09 21:20 output.log
В конечном итоге это продолжит следовать настройке rotate файлов журнала.
Помните, что после ротации журнала файл журнала, соответствующий службе, все равно будет указывать на rotate файл (output.log.1) и будет продолжать запись в него. Вы можете использовать описанный выше метод, если хотите rotate apache access_log или error_log каждые 5 МБ.
В идеале вы должны изменить /etc/logrotate.conf, чтобы указать информацию logrotate для конкретного файла журнала.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 }
copytruncate дает команду logrotate для создания копии исходного файла (т. е. ротации исходного файла журнала) и обрезания исходного файла до нулевого байтового размера. Это помогает соответствующей службе, которая принадлежит этому файлу журнала, записывать в соответствующий файл.
В то время как работа с файлами журналы, вы можете найти sed substitute, sed delete советы полезны.
Если вы используете параметр сжатия, как показано ниже, rotate файлы будут сжаты утилитой gzip.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala rotate 4 compress }
Вывод сжатого файла журнала:
$ ls /tmp/output* output.log.1.gz output.log
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala dateext rotate 4 compress }
После вышеуказанной конфигурации вы увидите дату в rotate файле журнала, как показано ниже.
$ ls -lrt /tmp/output* -rw-r--r-- 1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz -rwxrwxrwx 1 bala bala 0 2010-06-09 22:11 output.log
Это будет работать только один раз в день. Потому что, когда он попытается rotate в следующий раз в тот же день, ранее rotate файл будет иметь то же имя файла. Таким образом, logrotate не будет успешным после первого запуска в тот же день.
Обычно вы можете использовать tail -f, чтобы просмотреть вывод файла журнала в реальном времени. Вы даже можете объединить несколько выходных данных tail -f и отобразить их на одном терминале.
Для выполнения ротации ежемесячно один раз,
$ cat logrotate.conf /tmp/output.log { monthly copytruncate rotate 4 compress }
Добавьте еженедельное ключевое слово, как показано ниже, для еженедельного ротации журнала.
$ cat logrotate.conf /tmp/output.log { weekly copytruncate rotate 4 compress }
Добавьте ключевое слово daily, как показано ниже, для ротации журналов за каждый день. Вы также можете rotate журналы ежечасно.
$ cat logrotate.conf /tmp/output.log { daily copytruncate rotate 4 compress }
Logrotate позволяет вам запускать собственные сценарии оболочки после завершения ротации файла журнала. Следующая конфигурация указывает, что он выполнит myscript.sh после входа в систему.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress postrotate /home/bala/myscript.sh endscript }
Logrotate автоматически удаляет rotate файлы через определенное количество дней. В следующем примере показано, что rotate файлы журнала будут удалены через 100 дней.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress maxage 100 }
Вы можете игнорировать сообщение об ошибке, когда фактический файл недоступен, используя эту опцию, как показано ниже.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress missingok }
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create compress compresscmd /bin/bzip2 compressext .bz2 rotate 4 }
Следующие параметры сжатия указаны выше:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies