Очень большие файлы журналов, что мне делать?

(Этот вопрос имеет дело с аналогичной проблемой, но в ней говорится о повернутом файле журнала.)

Сегодня я получил системное сообщение об очень низком /var пространство.

Как обычно, я выполнил команды в строке sudo apt-get clean что лишь незначительно улучшило сценарий. Затем я удалил повернутые файлы журналов, что снова дало очень незначительное улучшение.

После проверки я обнаружил, что некоторые файлы журналов в /var/log вырос до очень огромных размеров. Чтобы быть конкретным, ls -lSh /var/log дает,

total 28G-rw-r----- 1 syslog            adm      14G Aug 23 21:56 kern.log-rw-r----- 1 syslog            adm      14G Aug 23 21:56 syslog-rw-rw-r-- 1 root              utmp    390K Aug 23 21:47 wtmp-rw-r--r-- 1 root              root    287K Aug 23 21:42 dpkg.log-rw-rw-r-- 1 root              utmp    287K Aug 23 20:43 lastlog

Как мы можем видеть, первые два являются оскорбительными. Я слегка удивлен, почему такие большие файлы не были повернуты.

Итак, что же мне делать? Просто удалите эти файлы, а затем перезагрузитесь? Или пойти на какие-то более благоразумные шаги?

Я использую Ubuntu 14.04.

ОБНОВЛЕНИЕ 1

Начнем с того, что системе всего несколько месяцев. Пару месяцев назад мне пришлось устанавливать систему с нуля после сбоя жесткого диска.

Теперь, как было рекомендовано в этот ответ, Я сначала проверил файлы журнала нарушений с помощью tail В этом нет ничего удивительного. Затем, для более глубокой проверки, я выполнил этот скрипт из тот же ответ.

for log in /var/log/{syslog,kern.log}; do   echo "${log} :"  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \  | sort | uniq -c | sort -hr | head -10done

Этот процесс занял несколько часов. Результат был в строке,

/var/log/syslog :71209229  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=168152268853929977  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device17280298  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024)       <snipped>/var/log/kern.log.1 :71210257  Rafid-Hamiz-Dell kernel:  attempt to access beyond end of device71209212  Rafid-Hamiz-Dell kernel:  sda3: rw=1, want=7638104968240336200, limit=1681522688   1639  Rafid-Hamiz-Dell kernel:  EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)

(/dev/sda3 это мой домашний каталог. Как мы можем найти,

lsblk /dev/sdaNAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda      8:0    0 931.5G  0 disk ├─sda1   8:1    0 122.1G  0 part /├─sda2   8:2    0   7.6G  0 part [SWAP]└─sda3   8:3    0 801.8G  0 part /home

Почему процесс захочет писать сверх предела, на самом деле выходит за рамки моего понимания. Возможно, я захочу задать другой вопрос на этом форуме, если это будет продолжаться даже после обновления системы.)

Затем, из этот ответ (возможно, вы захотите проверить этот для более глубокого понимания), я выполнил,

sudo su -> kern.log> syslog

Теперь эти файлы имеют нулевой размер. Система работает нормально до и после перезагрузки.

Я просмотрю эти файлы (вместе с другими) в ближайшие несколько дней и сообщу об этом, если
они ведут себя не по правилам.

В качестве последнего замечания, оба файла-нарушителя (kern.log и syslog), настроены на поворот, как проверка файлов (grep помогло) внутри /etc/logrotate.d/ показывать.

ОБНОВЛЕНИЕ 2

Файлы журналов фактически вращаются. Похоже, что большие размеры были достигнуты за один день.

Просто удалите эти файлы, а затем перезагрузитесь?

Нет. Очистите их, но не используйте rm потому что это может привести к сбою чего-либо во время ввода touch команда для его воссоздания.

Кратчайший способ:

cd /var/logsudo su> lastlog> wtmp> dpkg.log > kern.log> syslogexit

Если нет root, для этого потребуется sudo. Взято из другого ответ у нас есть.

ПРЕЖДЕ ЧЕМ ТЫ ЭТО СДЕЛАЕШЬ. Сделайте tail {logfile} и проверьте, есть ли причина, по которой они такие большие. Если этой системе не несколько лет, для этого не должно быть никаких причин, и лучше устранить проблему, чем позволить этому продолжаться.

Как kern.log, так и syslog обычно не должны быть такими большими. Но, как я уже сказал: если эта система работает и работает в течение многих лет, это может быть нормально, и файлы просто нужно очистить.

И чтобы он не стал таким большим в будущем: настройка logrotate. Это довольно просто и будет сжимать файл журнала, когда он станет больше установленного вами размера.


1 еще одна вещь: если вы не хотите удалять содержимое, вы можете сжать файлы, поместив их в архив или разархивировав. Это приведет к тому, что в итоге вы получите файлы, вероятно, на 10% меньше, чем они есть сейчас. То есть, если на диске еще есть место для этого.

Вероятно, стоит попытаться установить, что заполняет журнал (журналы) - либо просто изучив их визуально, используя less или tail команда

tail -n 100 /var/log/syslog

или, если оскорбительные строки слишком глубоко скрыты, чтобы легко увидеть, что происходит, что-то вроде

for log in /var/log/{dmesg,syslog,kern.log}; do   echo "${log} :"  sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \  | sort | uniq -c | sort -hr | head -10done

(примечание: это может занять некоторое время, учитывая такие большие файлы), который попытается удалить временные метки, а затем подсчитать наиболее часто встречающиеся сообщения.

Мой метод очистки файлов системного журнала заключается в следующем. Шаги 1 и 2 необязательны, но иногда вам нужно проверить старые журналы, и резервное копирование иногда полезно. ;-)

  1. Необязательно: Скопируйте файл журнала

    cp -av --backup=numbered file.log file.log.old
  2. Необязательно: Используйте Gzip для копирования журнала

    gzip file.log.old
  3. Используйте /dev/null для очистки файла

    cat /dev/null > file.log

И мы используем для этого журналы (только на нескольких серверах) logrotate и еженедельно выполняем cron-скрипт, который все файлы с *.1 (или следующим поворотом) сжимает с помощью gzip.

Сегодня я установил Ubuntu 16.04 и заметил ту же проблему. Однако я исправил это с помощью busybox-syslogd. Ага! Я только что установил этот пакет, и проблема была решена. :)

$ sudo apt-get install busybox-syslogd

После установки этого пакета выполните сброс syslog и kern.log:

sudo tee /var/log/syslog /var/log/kern.log </dev/null

Я надеюсь, что это простое решение будет полезно другим людям вокруг.

Есть ли в этих файлах журналов что-нибудь, что дает ключ к пониманию того, почему они такие большие? Удалите и перезагрузите компьютер, затем проследите за ними, чтобы увидеть, растут ли они каким-то экспоненциальным образом.

У меня была эта проблема, и это было из-за множества докер-контейнеров, работающих в фоновом режиме…

@douggro Действительно есть. Пожалуйста, ознакомьтесь с моим ответом на этот вопрос.