var/log/syslog постоянно растет в размерах

Диск с Ubuntu на моем компьютере 115GB по размеру.

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

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

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

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

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

/var/log/syslog файл в настоящее время 55.9GB!

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

6 ответов

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

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

Чтобы справиться с этой ошибкой

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

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

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

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

tail -f /var/log/syslog

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

sudo cat /dev/null > /var/log/syslog

У меня были подобные проблемы, мой файл системного журнала имел 115 ГБ и syslog.1 еще 115 ГБ, плюс несколько сжатых файлов.

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

watch tail /var/log/syslog

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

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

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

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

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

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

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

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

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

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

Обратите внимание, что (для меня) я, когда файл системного журнала заполнился достаточно, это предотвратило запуск рабочего стола pi - я работал над этим, войдя в систему через Putty и сначала используя команду tee, а затем перезагрузившись.

Шаг 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
}

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

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