Linux — как почистить логи /var/log/journal/
/var/log/journal — это директория с логами systemd пакета
директория /var/log/journal — стала заниматься слишком много места и ее нужно очистить:
953M /var/log/journal
# journalctl --disk-usage Archived and active journals take up 952.2M on disk.
# journalctl --vacuum-size=50M # journalctl --verify
После очистки получаем результат:
# journalctl --disk-usage Archived and active journals take up 56.0M on disk.
# vi /etc/systemd/journald.conf SystemMaxUse=50M SystemMaxFileSize=12M # systemctl restart systemd-journald
Как очистить файл журнала в Linux 2 мин для чтения
Вы окажетесь в ситуациях, когда вам нужно очистить файл. Это часто случается, когда у вас огромные файлы журналов, и как бы вы это сделали?
Один не очень чистый способ — удалить файл, а затем создать новый файл. Но это не очень хорошая идея. Это не будет тот же файл, временная метка (atime, mtime и т. д.). Будет отличаться вместе с другими правами доступа к файлам.
Вместо создания нового пустого файла вы можете удалить его содержимое. Итак, как вы очищаете файл в Linux? Как очистить файл от всего его содержимого без удаления самого файла?
4 способа очистить файл в Linux
Существует несколько способов очистки файла без его фактического удаления. Позвольте нам показать вам некоторые из этих методов.
Способ 1: усечь файл с помощью команды truncate
Самый безопасный способ обрезать файл журнала — использовать команду truncate.
truncate -s 0 filename
В приведенной выше команде -s используется для установки/настройки размера (в байтах) файла. Когда вы используете -s 0, это означает, что вы изменили размер файла до 0 байт.
Способ 2: Пустой файл, используя :> или >
Самый простой способ очистить файл — использовать команду ниже. Если файл не используется, он будет работать в Bash:
> filename
Хотя вышеперечисленное работает только в Bash Shell, вы можете использовать аналогичную команду для других оболочек:
:> filename
Вы также можете использовать эту команду для очистки файла:
true > filename
Способ 3: использование команды echo для очистки файла в Linux
Другой способ очистить файл — использовать команду echo в Linux:
echo > filename
Читать Как измерить и показать прогресс копирования rsync в Linux?
Вы также можете использовать команду echo следующим образом:
echo "" > filename
Способ 4: используйте /dev/null, чтобы очистить файл
Вы также можете использовать знаменитую /dev/null и объединить ее с командой cat для очистки файла журнала:
cat /dev/null > file.log
И если у вас недостаточно прав для какой-либо из вышеперечисленных команд, это верный выстрел, но немного грязный способ добиться этого:
touch newfile mv newfile filename
Мы надеемся, что этот быстрый совет помог вам очистить файл в Linux. Добавьте нас в закладки для получения дополнительных советов по Linux.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Как удалить старые файлы логов в Linux
Хотите удалить старые ненужные файлы логов в Linux одной командой? Хотите что бы старые файлы логов удалились автоматически? Я расскажу как это сделать.
Бывалые пользователи Linux сразу подумают, что в этой статье пойдет речь про logrotate, но это не так. Да ротация логов как раз и была придумана и даже демон для нее, что бы старые логи не накапливались, а проходили ротацию и тем самым не засоряли систему. Но не все так радужно и существует куча служб и прочих задач, которые скапливают логи и никак за их количеством не следят. Более того даже если настроить ротацию таким логам, то ничего не выйдет.
Например, демон SoftEther VPN. Он каждые сутки создает новый файл логов, а про старый забывает. Таким образом его папке слогами через год будет 365 файлов только самого демона, а еще 365 файлов логов каждого хаба, который был создан. В общем это много. Может места и не много они будут занимать, но это много для файловой системы, которой нужно вести журнал по каждому файлу, что бы он не потерялся. Да и Linux работает обычно не один год, а лет 10 и сами понимаете что будет с файлами, если их вовремя не почистить.
Для решения задачи удаления старых фалов логов можно воспользоваться утилитой find с вот такими опциями
find /var/log/* -type f -mtime +182 -exec rm <> \;
- /var/log/* – место для поиска и все папки и подпапки
- -type f – в поиск должны попасть только файлы, папки удалять не стоит, да же если они старые, хотя все опционально
- -mtime +182 – искать файлы будем модифицированные старше 182 дней назад
- -exec rm <> – ну а эта опция удалит все что подпадет под поиск, для теста можно ее удалить и посмотреть что будет удалено
Ок, нашли файлы и удалили. Второй раз это делать не хочется. Нужно автоматизировать. Делаем такой скрипт командой nano rm_old.sh:
#!/bin/sh #Задаем переменные Day=182 log_path="/var/log/" #Найти и удалить файлы find $log_path* -type f -mtime +$Day -exec rm <> \; echo 'файлы журнала старше 30 дней удалены из $log_path'
В переменных указываем нужные значения.
Затем делаем файл исполняемым командой chmod +x rm_old.sh
Добавляем скрипт в cron для периодического запуска командой crontab -e и вписываем следующее
0 10 * * * /path_to_script/rm_old.sh >/dev/null 2>&1
Таким образом скрипт будет запускаться каждые сутки в 00:10
Мне очень сильно помог материал из этих статей:
- Сценарий Bash для очистки/удаления файлов журнала
- Шпаргалка по journalctl в Linux
Канал Телеграм Канал Дзенс Группа ВКонтакте Канал YouTube Канал Rutube
Очистка старых логов и временных файлов на Linux серверах.
Для поддержания чистоты и оптимальной работы системы необходимо периодически очищать старые логи. Ниже приведены действия, которые могут быть предприняты для этой цели.
1. Очистка системных логов:
Необходимо удалить только старые архивы логов, в то время как сами логи не следует удалять, чтобы избежать ошибок с работой некоторых служб. Желательно сжимать или очищать логи следующими командами:
find /var/log \( -name "*.[0-9]" -o -name "*.*.[0-9]" -o -name "*.gz" \) -exec rm <> \; find /var/log/ -type f -name "*log" -exec cp /dev/null <> \;
Если на Вашем сервере ежедневно скапривается множество логов, и недостаточно свободного места на диске, можно выполнять ежедневную очистку устаревших архивов логов. Для чего можно добавить следующую команду в кронтаб:
0 0 * * * find /var/log \( -name "*.[0-9]" -o -name "*.*.[0-9]" -o -name "*.gz" \) -exec rm <> \; && find /var/log/ -type f -name "*log" -exec cp /dev/null <> \;
2. Очистка кеша репозитория:
Рекомендуется использовать специальные команды для очистки кеша локального репозитория от полученных файлов пакета, вместо ручного удаления кеша в директории /var/cache/. Вот некоторые из них:
Для систем CentOS/RedHat на основе yum:
yum clean all
Для Ubuntu/Debian систем на основе apt-get:
apt-get clean
3. Удаление временных файлов:
При удалении временных файлов с помощью следующих команд, следует быть осторожным, чтобы не удалить важные данные, такие как резервные копии конфигов, сайтов или базы данных, которые могут храниться во временных папках. Вначале стоит проверить содержимое этих папок с помощью команды `ls -la`:
ls -la /tmp/ ls -la /var/tmp/
Если Вы проверили, и там нет ничего важного, для удаления временных файлов можно использовать следующие команды:
rm -rf /tmp/* rm -rf /var/tmp/*
4. Дополнительные действия для серверов с разными панелями управления сервеами:
ISPmanager:
Очистить (обнулить) все файлы логов ISP:
find /usr/local/mgr5/var/logs -type f -exec sed -i 'd' "<>" \;
Очистить архивы логов в директории /var/www/httpd-logs:
find /var/www/httpd-logs \( -name "*.[0-9]" -o -name "*.*.[0-9]" -o -name "*.gz" \) -exec rm <> \; && find /var/www/httpd-logs/ -type f -name "*log" -exec cp /dev/null <> \;
Папки с временными файлами в ISPmanager:
rm -rf /var/www/www-root/data/tmp/*
Где www-root — дефолтный пользователь, или другой используемый на сервере.
VestaCP:
Удалить временные файлы и незавершенные архивы в директории VestaCP:
rm -rf /home/admin/tmp* rm -rf /backup/tmp.*
При этом удаляются незавершенные или неудачно выполненные архивы пользователя admin. Для друго пользователя указать его в команде.
В VestaCP также можно использовать следующую команду для удаления устаревших архивов логов:
rm -rf /var/log/*-2023*.gz
Где указываете вместо 2023 — текущий год.
Выводы.
Эти действия помогут очистить систему от устаревших и ненужных логов и временных файлов, поддерживая ее работоспособность и оптимизацию.