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

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

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

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

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

 всего 28G 
 - rw-r ----- 1 syslog adm 14G 23 августа 21:56 kern.log 
 - rw-r ----- 1 syslog adm 14G 23 августа 21:56 syslog 
 - rw-rw-r-- 1 root utmp 390K 23 августа 21:47 wtmp {{1 }} - rw-r - r-- 1 root root 287K 23 августа 21:42 dpkg.log 
 - rw-rw-r-- 1 root utmp 287K 23 августа 20:43 lastlog {{1} } 

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

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

Я использую 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 -10
done

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

 / var / log / syslog: 
71209229 Ядро Рафида-Хамиза-Делла: sda3: rw = 1, want = 7638104968240336200, limit = 1681522688 { {1}} 53929977 Ядро Rafid-Hamiz-Dell: попытка доступа за пределы устройства 
17280298 Ядро Rafid-Hamiz-Dell: попытка доступа за пределами конца устройства 
1639 Rafid-Hamiz-Dell ядро: EXT4-fs предупреждение (устройство sda3): ext4_end_bio: 317: ошибка ввода-вывода -5 запись в индексный дескриптор 6819258 (смещение 0 размер 4096 начальный блок 54763121030042024) 
  
 {{1 }} / var / log / kern.log.1: 
71210257 Ядро Rafid-Hamiz-Dell: попытка доступа за пределы устройства 
71209212 Rafid-Hamiz-Dell ядро: sda3: rw = 1, want = 7638104968240336200, limit = 1681522688 
Ядро 1639 Rafid-Hamiz-Dell: предупреждение EXT4-fs (устройство sda3): ext4_end_bio: 317: ошибка ввода-вывода -5 запись в индексный дескриптор 6819258 (размер смещения 0 4096 начальный блок 954763121030042024) 
 

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

 lsblk / dev / sda 
NAME MAJ: MIN RM РАЗМЕР RO ТИП MOUNTPOINT 
sda 8: 0 0 931,5 ГБ 0 диск 
 ├─sda1 8: 1 0 122,1 ГБ 0 частей / 
 ├─sda2 8: 2 0 7,6 ГБ 0 частей [ SWAP] 
 └─sda3 8: 3 0 801.8G 0 part / home 
 

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

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

sudo su -
> kern.log
> syslog

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

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

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

ОБНОВЛЕНИЕ 2

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

59
задан 13 April 2017 в 05:24

4 ответа

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

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

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

cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log 
> kern.log
> syslog
exit

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

ДО ЭТОГО. Выполните tail {logfile} и проверьте, есть ли причина для их большого размера. Если этой системе не исполнилось несколько лет, для этого не должно быть причин, и исправить проблему лучше, чем позволить этому продолжаться.

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

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


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

60
ответ дан 23 November 2019 в 00:21

Вероятно, стоит попытаться определить, что заполняет журнал (-ы) - либо просто визуально изучив их с помощью команды 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 -10
done

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

23
ответ дан 23 November 2019 в 00:21

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

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

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

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

     cat / dev / null> file.log
     

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

12
ответ дан 23 November 2019 в 00:21

Сегодня я установил 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

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

5
ответ дан 23 November 2019 в 00:21

Другие вопросы по тегам:

Похожие вопросы: