Ubuntu папка log занимает много места

Обновлено: 07.07.2024

Столкнулся с тем, что логи в /var/log/journal/ стали занимать более гига.

Но при этом journalctl не содержит никаких параметров и опций, позволяющих удалить старые записи: например, сделанные до какой-то даты.
Порылся в конфиге /etc/systemd/journald.conf — там есть только про ограничения размеров журналов.
Ограничение я поставил, но journald журналы не обрезал.
Как корректно удалить излишки?

  • Вопрос задан более трёх лет назад
  • 25992 просмотра
Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:
На текущий момент нашел в сети только предложение тупо удалить содержимое папки /var/log/journal/ .
Удалил у себя не всё, а только файлы " *.journal

".
Папка полегчала на 600М. Каких либо косяков в работе не вижу.
Но интересует именно чистка по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб).

Acidter

Насколько я понимаю, то функции logrotate берет на себя journald.

В Linux есть штатная утилита logrotate, которую запускает системный планировщик cron, служит для ротации логов у приложений, которые сами этого не делают и многих системных логов. По ее настройке достаточно много мануалов в сети. Умеет в том числе сжимать логи, кидаться в процессы пишущие лог сигналами перезапуска, чтобы корректно выдернуть из под них файл, удалять файлы логов/архивы по истечении лимита времени жизни или размера и многое другое.

И как всегда в Linux есть и топорный способ — заколотить в crontab команду удаления файлов, например старше 5 дней.
find /path/to/files* -mtime +5 -exec rm <> \;

Спасибо, я прекрасно знаю, что такое logrotate . И я уже сказал, что systemd/journald берут эту функцию на себя.
Журналы journald хранятся в бинарном формате. Причём в одном файле может лежать несколько дней логов, так что ваш топорный способ работать не будет.
Для просмотра логов в journalctl есть опции --since и --until , но удалять логи через утилиту нельзя.
Да, можно настроить так, что journald будет сам удалять логи древнее 5 дней.

Меня интересует накопление логов до тех пор, пока я их не просмотрю. Потом удалить их до (дата просмотра-5 дней), чтобы не хранить кучу хлама.

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

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

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

Это означает, что НЕ копируйте бездумно команды — читайте пояснения к ним и оценивайте, насколько они безболезненны для вашей ситуации.

1. Удаление временных файлов

Файлы в папке /tmp/ будут удалены в любом случае при следующей перезагрузки системы. То есть с одной стороны их можно удалить достаточно безболезненно:

НО: может быть нарушена работа программ, которые запущены в настоящее время и которые сохранили какие-то данные в папку /tmp/.

2. Удаление файлов кэширования

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

Для удаления кэша шрифтов:

Для удаления кэша установочных пакетов (на Debian, Linux Mint, Ubuntu, Kali Linux и их производных):

Для удаления кэша установочных пакетов (на Arch Linux, BlackArch и их производных):

Удаление кэша справочных страниц:

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

3. Удаление логов (журналов)

На веб-серверах могут разрастись слишком сильно журналы веб-сервера.

Для удаления логов Apache на Debian, Linux Mint, Ubuntu, Kali Linux и их производных:

Для удаления логов Apache на Arch Linux, BlackArch и их производных:

Чтобы сервер начал создавать новые файлы журналов и записывать в них, нужно перезапустить службу веб-сервера.

В зависимости от интенсивности использования системы, накопленные журналы могут занимать гигабайты. В зависимости от системы файлы могут называться по-разному, более точный анализ рекомендуется выполнять с помощью утилиты ncdu:

4. Очистите корзину

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

/.local/share/Trash/files/, вы можете проанализировать их и при желании удалить (второй раз):

5. Удаление ненужных файлов исходного кода заголовков ядра

Следующее актуально только для Debian, Linux Mint, Ubuntu, Kali Linux и их производных. Проверьте папку /usr/src/, там будут подпапки вида linux-headers- - большинство из них можно удалить — оставьте только ту, номер которой соответствует текущему ядру системы — обычно это самый последний номер выпуска.

6. Удаление осиротевших пакетов

Осиротевшие пакеты — это те пакеты (программы), которые устанавливались в качестве зависимостей для других программ. Но по разным причинам они больше не нужны: или удалена программа, которая их использовала, или для той программы они перестали быть зависимостями после обновления программы.


На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:


Для Debian и производных предыдущая команда абсолютно безопасна.

В Arch Linux и производных список осиротевших пакетов можно увидеть следующим образом:

Прежде чем переходить к их автоматическому удалению, настоятельно рекомендуется изучить этот список!

Для рекурсивного удаления сироток и их конфигурационных файлов в Arch Linux и производных:


Если осиротевшие пакеты не были найдены, pacman завершит работу с ошибкой: ошибка: не задано целей (для справки используйте -h). Это ожидаемо, поскольку pacman -Rns не получил аргументов.

7. Очистка журналов systemd

Со временем, в некоторых системах логи системы начинают занимать гигабайты на жёстком диске. Просмотреть журналы и освободить место вы можете с помощью команды journalctl, подробности смотрите в статье «Как использовать journalctl для просмотра системных логов Linux».

Чтобы увидеть, сколько место занимают журналы, выполните:

Чтобы удалить все записи, оставив только записей на 100 мегабайт, выполните:

Либо для удаления всех записей в системном журнале, старше одной недели:

8. Файлы в директории /lost+found

В папку /lost+found сохраняются файлы, которые были найдены после проверки файловой системы диска. Обычно такие проверки выполняются после внезапной перезагрузки системы или в случае признаков проблем с диском.

Найденные файлы обычно повреждены. Их цель — сохранить данные, которые в случае исправления ошибок на файловой системе были бы совсем утеряны.

Папка /lost+found может быть пустой (если не было проблем с диском). В случае если там есть файлы, то вы можете их просмотреть и, при желании, удалить.

9. Очистка PHP сессий

Иногда веб-приложений из-за бага могут создать бесчисленное количество сессий. Проверьте директорию /var/lib/php/sessions/ на предмет слишком большого количества файлов.

(БОНУС) 10. Проанализируйте файлы Docker

Самой большой папкой является /var/lib/docker/overlay2/. Для анализа занимаемого места на диске выполните:

Заключение

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

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

Если я пропустил какие-то директории с файлами, которые можно безболезненно удалить, то пишите их в комментариях!

7 способов освободить место на диске в Ubuntu и Linux Mint

Со временем любая операционная система может засоряться по мере установки и удаления программ. Если ваш диск более 1 Тб, вы можете не утруждать себя очисткой Ubuntu, чтобы освободить место на диске. Но если ваш жесткий диск имеет ограниченное пространство, например, у меня 128 ГБ SSD в ноутбуке, освобождение дискового пространства становится необходимостью.

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

Но перед этим давайте посмотрим, как найти свободное место, оставшееся на Ubuntu.

Проверьте свободное место на Убунту

Всегда полезно сначала проверить свободное дисковое пространство в Linux. Сделать это в Ubuntu довольно просто. Просто используйте инструмент Disk Usage Analyzer. Выполните поиск в меню и запустите программу. Здесь вы должны увидеть используемое дисковое пространство, а также оставшееся свободное место:


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

Как освободить дисковое пространство в Ubuntu и Linux Mint

Существует несколько способов очистки дискового пространства в Ubuntu и других системах на базе Ubuntu. Здесь я покажу несколько трюков из командной строки, а также некоторые опции GUI.

Хоть я и упомянул несколько способов здесь, если вы новичок, избегайте тех, которые помечены как "для экспертов". Не то, чтобы вы не можете их использовать, но лучше избегать, если вы не знаете, что делаете.

Я использую Ubuntu 16.04 во время написания этой статьи, но вы можете использовать те же шаги для Ubuntu 18.04 и других версий Ubuntu, Linux Mint, Elementary OS и других дистрибутивов Linux на основе Ubuntu.

Вы также можете посмотреть видео, если не хотите читать.

1. Избавьтесь от пакетов программ, которые больше не требуются [Рекомендуется]

Если вы читали руководство по командам apt-get, вы могли наткнуться на опцию apt-get command 'autoremove'.

Эта опция удаляет библиотеки и пакеты, которые были установлены автоматически для создания зависимостей устанавливаемого пакета. Если пакет был удален, то эти автоматически установленные пакеты бесполезны в системе.

Эта команда также удаляет старые ядра Linux, которые были автоматически установлены при обновлении системы.

Это простая команда, которую вы можете запускать время от времени, чтобы освободить место в системе Ubuntu:

Как видите, эта она освободила 300 Мб свободного пространства в моей системе.


2. Удалите ненужные приложения [Рекомендуется]

У всех нас есть несколько игр и/или приложений, которые мы почти не используем. Думаете, это не так? Попробуйте найти всё установленное программное обеспечение в вашей системе Ubuntu.


Скорее всего, у вас установлено несколько приложений, которые вы редко используете. Может быть, вы установили их после просмотра какого-либо крутого обзора, из любопытства или для выполнения определенной задачи.

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

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

3. Очистка APT-кэша в Ubuntu

Ubuntu использует APT (Advanced Package Tool) для установки, удаления и управления программным обеспечением в системе, при этом он сохраняет кэш ранее загруженных и установленных пакетов даже после их удаления.

Система управления пакетами APT хранит кэш DEB пакетов в /var/cache/apt/archives. Со временем этот кэш может увеличиваться и содержать множество пакетов, которые вам не нужны.

Вы можете увидеть размер этого кэша с помощью команды du ниже:

Как видите, у меня более 500 Мб кэш-памяти. Когда у вас почти нет места, эти 500 Мб могут быть очень полезными.


Теперь у вас есть два способа очистить APT кэш.

Либо удалить только устаревшие пакеты, как те, которые были заменены недавним обновлением, что делает их совершенно ненужными.

Либо удалить кэш apt целиком (освобождает больше дискового пространства):

4. Очистка логов системных журналов [Средний уровень]

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

Есть способы очистить системные журналы. Самый простой для вас - это очистить журналы, которые старше определенного дня.

5. Удаление старых версии Snap-приложений [Средний уровень]

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

Алан Поуп (Alan Pope), член команды Snapcraft в Canonical, создал небольшой скрипт, который вы можете использовать и запускать для очистки всех старых версий ваших snap приложений.

Здесь вам нужно создать новый shell скрипт и использовать следующие строки в нем:

Дайте ему разрешение на выполнение, запустите скрипт оболочки с помощью sudo и увидите магию. Скрипт удалил старые пакеты Snap и освободил более 2,5 ГБ пространства, используемого Snap.

6. Очистка кэша эскизов [Средний уровень]

Ubuntu автоматически создает эскизы для просмотра в файловом менеджере. Эти эскизы хранятся в скрытом каталоге в вашем аккаунте пользователя в каталоге

Со временем количество эскизов будет резко возрастать. Более того, кэш эскизов со временем будет содержать множество лишних элементов, которые больше не существуют.

Вы можете проверить размер кэша эскизов с помощью следующей команды:

В моей системе кэш эскизов размером более 300 Мб.


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

7. Поиск и удаление дубликатов файлов

Иногда у вас могут быть дубликаты файлов в разных местах вашей системы. Избавление от дубликатов, безусловно, освободит некоторое пространство и очистит вашу систему Ubuntu.

Для этой задачи можно использовать графический интерфейс, такой как FSlint, или инструмент командной строки, такой как FDUPES.


Другие методы очистки системы [Для экспертов]

Удаление старых ядер Linux, которые были установлены вручную [Для экспертов].

Команда, рассмотренная в пункте 1, удаляет старое ядро Linux. Но она не сработает, если вручную установить ядро в Ubuntu. Но удаление старого, неиспользуемого ядра Linux все равно сэкономит Вам много места.

Поэтому, если Вы вручную установили ядро Linux, возможно, Вы сможете вручную и удалить его.

Сначала перечислите все установленные ядра Linux:

Удаление старых ядер - то же самое, что и удаление любого другого пакета. Я использую shell для набора номеров версий, чтобы немного сэкономить время на перепечатывании. Это подскажет вам список пакетов, которые будут удалены, так что вы можете дважды проверить этот список перед тем, как продолжить.

Замечание: Замените VERSION на версию ядра, которую хотите удалить.

Я рекомендую хранить как минимум два или, желательно, три ядра, включая самые последние. Таким образом, у вас будет по крайней мере одно/два других ядра для загрузки, если по какой-то причине последнее ядро не может быть загружено.

Удаление осиротевших пакетов [Для экспертов]

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

Во-первых, давайте посмотрим, что такое осиротевший пакет в Ubuntu.

Предположим, вы установили пакет "myprogram". Но у этого пакета есть зависимость от библиотеки 'mylib'. Эта библиотека обычно устанавливается автоматически с помощью 'myprogram'. Когда вы удаляете 'myprogram', mylib может остаться в системе. Таким образом, mylib, в данном случае, становится сиротским пакетом.

Теперь команда, перечисленная в пункте 1, удаляет такие осиротевшие пакеты. Но представьте себе случай, когда вы вручную установили mylib перед установкой myprogram. Команда 'apt autoremove' в данном случае может не удалить осиротевший пакет. Следовательно, вам придется удалить его вручную.

Сначала вы должны найти все осиротевшие пакеты, а затем удалить их. К счастью, у нас есть GUI-инструмент для этого: gtkorphan, графическая оболочка для deborphan.

Установите gtkorphan через терминал:

А чтобы удалить осиротевшие пакеты, найдите инструмент Removed Orphaned Package и запустите его:


Честно говоря, я бы не рекомендовал этот вариант, если конечно тебе действительно не нужен каждый Мб свободного пространства.

Бонус: Использование графических инструментов GUI для освобождения пространства в Ubuntu

Мы видели несколько вариантов работы с командной строкой, чтобы освободить место в системе Linux, но я пойму, если вы не хотите использовать команды.

Запоминать все команды или использовать их все по очереди может быть неудобно. И именно поэтому у нас есть ряд GUI инструментов, которые помогут вам сделать это за несколько кликов с помощью простого в использовании интерфейса.

Stacer - это один из таких инструментов, который вы можете использовать.

Завершение

Итак, вы видели несколько способов очистки системы Ubuntu. Лично я использую apt-get autoremove чаще, чем любые другие команды, показанные здесь. Регулярное использование этой команды освобождает систему от лишних файлов.

Надеюсь, эта статья помогла Вам освободить место в Ubuntu, Linux Mint и других подобных дистрибутивах. Дайте мне знать, сработало ли это для Вас, или у Вас есть другой совет, которым Вы можете поделиться.

Могу ли я удалить все в /var/log ? Или я должен только удалить файлы (рекурсивно), /var/log но оставить папки?

У кого-нибудь есть хорошая rm командная строка? (Мои навыки администратора заставляют меня нервничать.)

Примечание: я использую Debian. Я не уверен, какая версия.

Удаление файлов журналов - плохая идея (вам также нужно найти каждый запущенный процесс, у которого есть собственный файл журнала, и «kill -HUP» - мягкий перезапуск, который приведет к тому, что программа заново создаст все необходимые файлы журналов). Я настоятельно рекомендую не удалять файлы журналов, полагаться на утилиты, такие как logrotate, для автоматического управления содержимым / var / log для вас (он выполняет такие вещи, как HUP процессы). Если бы я хотел решить эту проблему под другим углом. Какую проблему вы пытаетесь решить, и это заставило вас задуматься об этом?

Вместо удаления файлов вы должны повернуть их, например, используя logrotate .

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

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

Ну, ИМХО удаление всех логов может иметь смысл в некоторых случаях. Например, я хочу создать образ Virtial Machine, который будет использоваться для новых развертываний. Само собой разумеется, я хотел бы, чтобы это была действительно чистая система без каких-либо сохраненных журналов, историй, кэшей и т. Д. Извините, но просмотр файлов журнала за три месяца - это археология. Если вы собираете журналы для выявления проблем, оцените их быстро. @countermode Вы никогда не в настроении для ностальгии? Как смотреть на 3-месячные файлы журнала, думая о хороших старых временах? Хорошо, я вижу команду. Как это использовать? man logrotate говорит, что используйте его в cron. Я полагаю, с опцией -f?

Как указал Йоски, нет никаких оснований для этого. У меня запущены серверы Debian, в которых не было удалено ни одного файла журнала за последние годы.

Я не осознавал этого. хорошо знать. +1 + изменил мое согласие. Я только что сделал это. Желания! Я читал этот ответ ранее Есть веские причины для удаления лог файлов, ИМХО. Например, вы экспортируете виртуальную машину для использования другими, но вы не хотите, чтобы образ виртуальной машины содержал сведения обо всем, что произошло до экспорта.

Удалить все файлы:

Удалить все .gz и повернутый файл

Попробуйте запустить команду без "-delete", чтобы проверить это.

Я нашел это полезным, чтобы очистить файлы журнала Vagrant box перед упаковкой.

Я клонирую виртуальные машины от мастера. Имеет смысл очистить журнал мастера, чтобы при загрузке клонов вы не получили журнал мастера. Я сделал в tcsh:

который очищает журналы, но сохраняет файлы.

Это должно быть ограничено вариантом использования, подобным описанному вами. В bash: найдите / var / log / -type f -exec cp / dev / null <> \;

Очистка всех журналов в системе Linux без удаления файлов:

Samba ( /var/www/samba ) создает имена файлов журнала с IP-адресами, вы можете удалить их:

Вы можете использовать опцию ctime, чтобы найти старые файлы . например:

Как объясняет bindbn, сначала попробуйте найти файлы извлечения, а после используйте опцию delete: D

/var/log часто имеет разрешения drwxrwxr-x , поэтому не доступен для записи пользователем, если пользователь не является пользователем root или не принадлежит к привилегированной группе. Это означает, что новые файлы журнала не могут быть созданы непривилегированными пользователями.

Приложения, которые ожидают регистрации в какой-либо точке внутри /var/log , часто будут касаться файла, существующего где-то в /var/log иерархии, во время установки (что часто происходит с повышенными привилегиями), и будут chmod и, возможно, chown в это время с разрешениями, подходящими для непривилегированных пользователей, которые будут используя приложение.

Журналы Apache, например, обычно записываются пользователем nobody , который имеет как можно меньше привилегий, чтобы Apache мог выполнять свою работу, не подвергая систему чрезмерному риску. Но даже более заурядное приложение часто ожидает возможность записи в файл журнала /var/log .

Так что же произойдет, если лог-файл и путь к лог-файлу не существуют? Это полностью зависит от приложения. Некоторые приложения будут спокойно пропускать регистрацию. Другие создадут много предупреждений. А другие просто выручат. Там нет жесткого правила; это зависит от бдительности разработчика приложения, а также от того, насколько критично разработчик считает, что он может вести журнал. В лучшем случае приложение будет пытаться либо выполнить запись, либо, возможно, создать, а затем записать в файл журнала в месте назначения /var/log , и окажется, что оно не сможет этого сделать, поскольку оно выполняется пользователем, у которого нет прав для записи в него. эта часть файловой системы.

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

Надлежащее действие - настроить logrotate с помощью соответствующих файлов конфигурации. Обычно ротация будет связана с заданием cron. Вращение может быть основано на интервале, или на основе размера, или на обоих. Можно даже настроить правила, которые избегают ротации на основе интервалов, если файл журнала все еще пуст после истечения интервала. Ротация может включать рассылку файлов журналов, сжатие, удаление, уничтожение и т. Д.

Обычному пользователю не нужно слишком беспокоиться о ротации логов. Разработчики, вероятно, захотят убедиться, что для журналов, которые они используют, установлены правила ротации. На самом деле, разработчики, вероятно, установят ротацию журналов во время установки для любых программно-специфических журналов, которые будут создаваться и записываться программным обеспечением.

Читайте также: