- Как освободить место на диске Linux сервера ?
- Что занимает место на диске?
- Лог-файлы
- Временные файлы
- Установленные пакеты
- Ненужные файлы
- Анализ использования дискового пространства
- Вывод
- How to clean log file? [duplicate]
- 1 Answer 1
- Как удалить старые файлы логов в Linux
- Добавить комментарий Отменить ответ
- Вам также может понравиться
- Linux Ubuntu ZFS добавление диска в RAID0 и RAID1 на ходу
Как освободить место на диске Linux сервера ?
Если вы работаете с Linux сервером, то вы, возможно, столкнулись с проблемой нехватки места на диске. Это может произойти по многим причинам, например, из-за накопления большого количества логов или временных файлов. В этой статье мы рассмотрим, чем забито место на диске и как его можно освободить.
Что занимает место на диске?
На сервере Linux есть несколько мест, где могут накапливаться файлы и занимать место на диске. Рассмотрим некоторые из них:
Лог-файлы
Лог-файлы содержат информацию о работе системы и приложений. Они создаются автоматически и могут занимать много места на диске. Чтобы освободить место, можно удалить старые лог-файлы или настроить систему на их ротацию. Ротация лог-файлов представляет собой процесс переименования текущего файла лога и создания нового файла для записи новых данных. Это позволяет сохранить старые файлы логов, но при этом не позволяет им занимать много места на диске.
Лог-файлы обычно хранятся в директории /var/log. Для удаления старых лог-файлов можно использовать команду sudo rm /var/log/file.log , где file.log — имя удаляемого файла. Для настройки ротации лог-файлов можно использовать утилиту logrotate , которая позволяет настроить периодичность ротации и количество хранимых файлов логов.
Временные файлы
Временные файлы, создаваемые приложениями в директории /tmp, могут занимать значительное количество места на диске. Их можно удалять вручную, но также существуют утилиты, предназначенные для автоматического удаления старых временных файлов. Например, systemd-tmpfiles или tmpreaper . Systemd-tmpfiles позволяет настроить удаление файлов при каждой загрузке системы или через определенное количество дней. Tmpreaper удаляет файлы, которые не изменялись в течение заданного периода времени. Например, можно настроить tmpreaper для удаления файлов, которые не изменялись за последние 7 дней.
Установленные пакеты
Установленные пакеты занимают место на диске даже после того, как вы перестали использовать соответствующее приложение. Чтобы освободить место, можно удалить неиспользуемые пакеты с помощью команды apt-get remove . Вы также можете использовать команду apt-get autoremove , чтобы удалить пакеты, которые больше не нужны в системе, но которые были установлены вместе с другими пакетами.
Ненужные файлы
Ненужные файлы, например, старые документы или резервные копии, могут занимать значительное количество места на диске. Для того чтобы освободить место, их можно удалить вручную или с помощью специальных программ. Кроме того, существует утилита ncdu , о которой будет рассказано подробнее ниже, которая также может помочь в этом деле.
Анализ использования дискового пространства
ncdu — это утилита командной строки, которая помогает в анализе использования дискового пространства в Linux. Она показывает использование дискового пространства в виде древовидной структуры и помогает быстро определить, какие файлы и директории занимают больше всего места. Это очень полезно при поиске и удалении ненужных файлов, которые занимают много места на диске. Кроме этого, ncdu имеет удобный интерфейс, который позволяет быстро перемещаться по файловой системе и делает процесс очистки дискового пространства более удобным и эффективным.
Пример использования утилиты ncdu :
- Откройте терминал на сервере Linux.
- Установите ncdu , если еще не установлено: sudo apt-get install ncdu . Для установки ncdu на CentOS можно использовать следующую команду: sudo yum install ncdu
- Запустите утилиту: ncdu / .
- ncdu начнет сканирование файловой системы и отобразит древовидную структуру файлов и директорий, начиная с корневой директории. Вы можете использовать клавиши со стрелками для навигации по директориям и файлам.
- Если вы хотите удалить файл или директорию, выделите ее и нажмите клавишу D. Подтвердите свой выбор, нажав клавишу Y.
- После завершения сканирования ncdu покажет общий размер файлов и директорий, а также количество свободного и занятого места на диске.
Например, если вы хотите найти и удалить большие файлы, вы можете открыть ncdu , перейти в корневую директорию и отсортировать файлы по размеру, нажав клавишу S. Затем вы можете найти и выбрать большие файлы для удаления, используя клавиши со стрелками.
Вывод
Чтобы избежать проблем с нехваткой места на диске на Linux сервере, важно регулярно очищать систему от ненужных файлов и настроить систему на автоматическое удаление временных файлов и ротацию лог-файлов. Это поможет не только освободить место на диске, но и улучшить производительность системы в целом.
How to clean log file? [duplicate]
Is there a better way to clean the log file? I usually delete the old logfile and create a new logfile and I am looking for a shorter type/bash/command program. How can I use an alias?
1 Answer 1
(fell free to substitute false or any other command that produces no output, like e.g. : does in bash ) if you want to be more eloquent, will all empty logfile (actually they will truncate it to zero size).
If you want to know how long it «takes», you may use
(which is the same as dd if=/dev/null > logfile , by the way)
(or truncate -s 0 logfile ) to be perfectly explicit or, if you don’t want to,
(in which case you are relying on the common behaviour that applications usually do recreate a logfile if it doesn’t exist already).
However, since logfiles are usually useful, you might want to compress and save a copy. While you could do that with your own script, it is a good idea to at least try using an existing working solution, in this case logrotate , which can do exactly that and is reasonably configurable.
Should you need to do it for several files, the safe way is
Some shells ( zsh ) also allow one to specify several redirection targets.
This works (at least in bash ) since it creates all the redirections required although only the last one will catch any input (or none in this case). The tee example with several files should work in any case (given your tee does know how to handle several output files)
Of course, the good old shell loop would work as well:
for f in file1 file2 . ; do # pick your favourite emptying method done
although it will be much slower due to the command being run separately for each file. That may be helped by using find :
Как удалить старые файлы логов в 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
Мне очень сильно помог материал из этих статей:
Канал Телеграм Канал Дзенс Группа ВКонтакте Канал YouTube Канал Rutube
Добавить комментарий Отменить ответ
Вам также может понравиться
Linux Ubuntu ZFS добавление диска в RAID0 и RAID1 на ходу
02.02.2021