/var/log/syslog увеличивается в размере бесконечно

Вопрос или проблема

Диск, на котором находится Ubuntu на моем компьютере, имеет размер 115GB.

Когда диск был заполнен на 114.7GB.

Я начал удалять некоторые файлы здесь и там, чтобы освободить около 5GB.

Но я заметил, что диск снова был заполнен на 114GB. Я подумал, что это из-за каких-то кешей или подкачки, поэтому не придал этому значения и освободил около 40GB, переместив несколько медиафайлов с диска.

Через час или около того у меня появилось уведомление, что диск снова полон!!
40GB!!! Всё исчезло!

Итак, я выяснил, что проблема связана с файлом /var/log/syslog, который первоначально был точно менее 20GB. Я знаю это, потому что папка /var была 17GB до того, как я очистил память.

Файл /var/log/syslog сейчас составляет 55.9GB!

Может ли кто-нибудь объяснить эту аномалию?
Это баг?
Или на меня повлияла какая-то вредоносная программа или вирус?

Такой неограниченный рост обычно возникает из-за повторяющихся логов одной или нескольких ошибок из одного и того же источника.
В моем случае это было из-за постоянного сообщения об ошибке подключения с интерфейса мониторинга wifi mon0, который я использовал для мониторинга моего wifi-трафика.
Также были сообщения об ошибках такого переполнения в других различных интерфейсах, таких как tun0 из VPN и т.д.

Я решил свою проблему, очистив файл /var/log/syslog

Чтобы устранить эту ошибку

  1. Вам нужно найти источник этой ошибки и остановить его, чтобы предотвратить дальнейшее переполнение лога
  2. Затем очистить файл /var/log/syslog

Проблемы, с которыми вы можете столкнуться, выполняя то же самое

  1. Невозможно открыть var/log/syslog: из-за огромного размера любой редактор, скорее всего, зависнет
  2. Невозможно очистить /var/log/syslog: опять же, из-за огромного размера очистка – также сложная задача

Итак, чтобы просмотреть ошибку, которая вызвала переполнение

tail -f /var/log/syslog

Для очистки используйте:

sudo sh -c 'cat /dev/null > /var/log/syslog'

У меня были похожие проблемы, мой файл syslog имел размер 115GB, а syslog.1 также 115G, плюс множество сжатых файлов.

1-й шаг
найти источник:

watch tail /var/log/syslog

вы, вероятно, заметите общие записи об ошибках;
после этого; учитывая, что ваши файлы слишком большие; почти бессмысленно их вращать.
Итак, вы можете удалить все сжатые файлы и файлы *.1, чтобы освободить место на диске (в моем случае около 300GB)

2-й шаг
Уменьшите файл, НЕ УДАЛЯЙТЕ (иначе у вас могут быть проблемы с разрешениями в будущем), существует много методов, включая:

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

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

Проверьте /var/lib/logrotate/status и убедитесь, что он правильно вращается. Вам также нужно просмотреть содержимое файла и посмотреть, не является ли это системной проблемой, постоянно бросающей предупреждения.

Попробуйте это. Это должно правильно работать и очистить:

sudo sh -c 'cat /dev/null > /var/log/syslog'

Шаг 1: Создайте файл-скрипт, например clearlog.sh, в папке /var/log/ с разрешением на файл ‘chmod 775 clearlog.sh’

файл clearlog.sh с нижеследующими строками:

#!/bin/sh
LINECOUNTS=(`cat /var/log/syslog | wc -l`)

if [ $LINECOUNTS -gt "1000" ];
    then
        echo "Recreating syslog file due to lines "$LINECOUNTS" are more than 1000 lines"
        truncate -s 0 /var/log/syslog
        sleep 5
else
        echo "syslog file having line count "$LINECOUNTS" less than 1000}"
fi
/bin/systemctl restart syslog
exit

Шаг 2: Отредактируйте файл в папке /etc/logrotate.d/logs, добавьте секцию postrotate

/var/log/syslog {
        daily
        rotate 3
        missingok
        copy
        notifempty
        compress
        dateext
        dateformat -%Y%m%d%H%M
        postrotate
                /var/log/clearlog.sh
        endscript
}

Чтобы протестировать скрипт из командной строки, выполните эту команду ‘logrotate -f /etc/logrotate/logs’

Несмотря на запоздалый ответ на оригинальный пост, это помогло мне. При запуске программы как сервиса, кажется, что все printf-функции перенаправляются в syslog вместо stdout, если у вас много printf, это быстро заполнит syslog. У меня были проблемы с некоторыми из предложенных здесь методов, но

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

работал каждый раз.

Учтите, что (по крайней мере, для меня) когда файл syslog достаточно заполнится, это предотвратило запуск интерфейса Raspberry Pi – я обошел это, войдя через Putty и первым выполнив команду tee, а затем перезагружая.

Если вы не хотите отслеживать программу, которая часто/много/повторно/… пишет в syslog, то измените конфигурацию logrotate. У вас должен быть файл /etc/logrotate.d/rsyslog (или какой-то аналогичный файл конфигурации. Добавьте одно из следующих в конфигурацию (сразу под “rotate” или в другом месте, если вы знаете, что делаете):

size 100k <= установите это, чтобы вращать логи, когда они достигают указанного размера в байтах
minsize 100k <= установите это, чтобы предотвратить временное вращение лога, если размер лога меньше этого значения
maxsize 100k <= установите это, чтобы вращать лог, который достиг этого размера, кроме временных вращений.

Размер 100k указан просто для примера – зависит от того, сколько лога вы хотите видеть в любое время… Лично мне больше всего нравится настройка minsize, но это только мое мнение. И 100k – это просто для примера. Установите разумное значение для вашего доступного дискового пространства (и ваших привычек/предпочтений отладки).

Установка shurfshark snap привела к тому, что мой syslog занял все свободное место на жестком диске за день. После удаления кажется, что размер файла стал стабилен.

Ответ или решение

Как предотвратить неконтролируемый рост файла /var/log/syslog в Ubuntu

Данный вопрос часто встречается у пользователей Linux, особенно тех, кто сталкивается с проблемами быстрого заполнения диска. Проблема чрезмерного роста файла /var/log/syslog может быть вызвана различными факторами, которые важно идентифицировать и устранить. Давайте посмотрим, как решить эту проблему шаг за шагом.

Шаг 1: Идентификация источника проблемы

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

watch tail /var/log/syslog

Эта команда позволит вам наблюдать в реальном времени за логами и выявить сообщения, которые повторяются чаще всего. Чаще всего такие сообщения индикаторы ошибок, например, с интерфейсами Wi-Fi, как mon0, или другими сетевыми интерфейсами.

Шаг 2: Очистка желудка syslog

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

sudo sh -c 'cat /dev/null > /var/log/syslog'

Этот подход безопасно очищает содержимое файла, не изменяя его права и владельца.

Шаг 3: Настройка ротации логов

После очистки файла важно настроить системное вращение логов, чтобы в будущем избежать подобных проблем. Проверьте конфигурацию logrotate, открыв файл /etc/logrotate.d/rsyslog, и добавьте следующие настройки:


/var/log/syslog {
    daily
    rotate 7
    missingok
    notifempty
    compress
    dateext
    maxsize 100M
}

Эти параметры означают ежедневную ротацию логов, хранение семи архивов, их сжатие и ограничение объема файла до 100M перед ротацией.

Заключение

Сложности в виде быстрого роста лог-файлов могут возникнуть в результате запущенных процессов, создающих большое количество записей из-за ошибок или других аномалий в системе. Правильная идентификация и решение этих проблем, а также настройка системной ротации логов помогут избежать дальнейших проблем. Постоянный мониторинг и управление логами на системах Linux – это важная часть поддержания стабильности и производительности вашего ПК.

Следуя этим рекомендациям, вы можете значительным образом повысить управляемость системы и снизить риски, связанные с переполнением диска.

Оцените материал
Добавить комментарий

Капча загружается...