Linux после удаления файла место не освобождается
То есть бывают действительно критические ситуации — в этих условиях перестают нормально работать многие программы и службы. Поэтому задача становится следующей: срочно любой ценой освободить место на диске, чтобы можно было продолжить обслуживание системы и перейти ко второму этапу — поиску директорий и папок, которые привели к этой проблеме из-за того, что стали занимать слишком много места.
Предупрежу заранее: следующие команды хотя в основном и удаляют бесполезные файлы, после их выполнения могут потребоваться такие действия как:
- перезапуск служб для их нормальной работы (чтобы они заново пересоздали файлы журналов, кэши, файлы блокировки)
- могут быть потеряны различные журналы и файлы из корзины, которые хотя и не нужны большинству пользователей, в некоторых условиях вы можете захотеть их оставить (например, вам важно изучить файлы логов, поскольку в них может быть причина проблемы).
Это означает, что НЕ копируйте бездумно команды — читайте пояснения к ним и оценивайте, насколько они безболезненны для вашей ситуации.
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 практически без потери информации. Кроме рассмотренных директорий, которые можно очистить как на удалённой системе с веб-сервером, так и на домашнем компьютере, пользователям с графическим рабочим столом следует обратить внимание на такие директории как:
Их НЕ нужно удалять, но стоит проанализировать. Например, вы можете выяснить, что веб-браузер на вашем компьютере имеет кэш в несколько гигабайт и что вы можете их освободить (рекомендуется делать средствами веб-браузера, а не удалять файлы напрямую).
Если я пропустил какие-то директории с файлами, которые можно безболезненно удалить, то пишите их в комментариях!
У меня есть файловые серверы, которые используются для хранения файлов. Файлы могут находиться там в течение недели или года. К сожалению, когда я удаляю файлы с сервера, df команда не отражает освободившееся пространство. В итоге сервер заполняется ( df показывает 99%), и мой сценарий больше не отправляет туда файлы, за исключением того, что там может быть несколько десятков ГБ свободного места.
Я получил noatime флаг на смонтированных разделах, если это что-то меняет.
Это происходит на одном разделе или на всех разделах? Ну, это происходит в моем основном разделе данных, который является единственным, о котором я забочусь, так как я только записываю / удаляю файлы на него. Пожалуйста, сообщите мне решение или ссылку на него. Какая файловая система (ы)? DF выполняет статистику суперблока, возможно, ваша файловая система не обновляет инод sb. Вы пробовали очистить кеш?Удаление имени файла фактически не удаляет файл. Какой-то другой процесс удерживает файл открытым, не позволяя удалить его; перезапустите или убейте этот процесс, чтобы освободить файл.
чтобы выяснить, какой процесс использует удаленный (несвязанный) файл.
К удаленным файлам не обращались более месяца, и единственный процесс, который обращается к ним, - это nginx, так что это сомнительно. +1. Кроме того, «lsof + L1» скажет вам, какая программа держит файлы открытыми. Запустив от имени root команду «lsof -n | grep file», вы будете удивлены тем, как долго файлы могут задерживаться из-за процессов, которые по какой-то причине поддерживают их открытыми. Если ничего не помогает, перезагрузите компьютер, я чувствую себя плохо, предлагая это, но он определенно удостоверится, что ничто не держит файл. С другой стороны, lsof + L1, вероятно, лучший путь. Вы только что спасли меня! Удалил файл журнала 93G, не вернул место и не мог понять почему. Благодарю. В том же духе, и в случае, если это поможет другим, я удалил большой файл nginx access.log, но смог освободить место только после перезапуска nginx: service nginx restartкак упоминает Игнасио, удаление файла не освободит место до тех пор, пока вы не удалите процессы, которые имеют открытые дескрипторы для этого файла.
Тем не менее, вы можете восстановить пространство, не убивая процессы. Все, что вам нужно сделать, это удалить дескрипторы файлов.
Сначала выполните lsof | grep удален, чтобы идентифицировать процесс, содержащий файл
«1» будет дескриптором файла. Теперь введите "> FD", чтобы освободить это пространство
Возможно, вам придется повторить операцию, если есть другие процессы, содержащие файл.
у этой > команды есть имя? Мне пришлось переключиться с Zsh на Bash, чтобы иметь возможность использовать его. Можно ли запустить его на Zsh? это перенаправление вывода и, следовательно, усечение файла. Длинна from будет "echo -n> 1" или "true> 1". Он не удаляет FD, а просто указывает на пустой файл.Одна возможность состоит в том, что удаленные файлы имеют больше ссылок в файловой системе. Если вы создали жесткие ссылки, несколько имен файлов будут указывать на одни и те же данные, и данные (фактическое содержимое) не будут помечены как свободные / пригодные для использования, пока все ссылки на них не будут удалены. Прежде чем удалять файлы, либо укажите их (запись с именем Links), либо выполните для них команду ls -l (это должен быть второй столбец).
Если выясняется, что на файлы есть ссылки в другом месте, я думаю, вам придется ls -i файл (ы), чтобы найти номер inode, а затем выполнить поиск с помощью -inum <inode-number>, чтобы найти другие ссылки на этот файл (возможно, вы также захотите использовать -mount, чтобы остаться в той же файловой системе).
Файл все еще заблокирован процессом, открывающим его. Чтобы освободить место, выполните следующие действия:
Запустите sudo lsof | grep deleted и посмотрите, какой процесс содержит файл. Пример результата:
Убить процесс с помощью sudo kill -9 . В приведенном выше примере PID составляет 1623.
Запустите, df чтобы проверить, освободилось ли место. Если он все еще заполнен, возможно, вам нужно подождать несколько секунд и проверить еще раз.
Если раздел настроен на резервирование определенной части дискового пространства только для использования root, df не будет включать это пространство как доступное.
Даже после освобождения места путем удаления файлов / каталогов, пользователь без полномочий root не сможет писать в определенный раздел.
Вы можете легко проверить, так ли это, попытавшись создать файл на устройстве как пользователь root и не пользователь root.
Кроме того, вы можете проверить конфигурацию файловой системы, запустив
и рассчитать фактический% самостоятельно.
Чтобы изменить% диска, зарезервированный для использования только в корне, выполните
Другие ответы верны: если вы удаляете файл, а пространство не освобождается, это обычно либо потому, что файл все еще остается открытым, либо на него есть другие жесткие ссылки.
Чтобы помочь в устранении неполадок, используйте инструмент, который сообщит вам, где место на диске расходуется: вы можете использовать, du чтобы получить представление о том, где место на диске . Еще лучше использовать графический инструмент, такой как xdiskusage (их много), чтобы выследить преступника. xdiskusage и друзья позволяют вам углубиться в самых больших космических свиней, чтобы найти, куда идет космос.
Таким образом, вы быстро найдете файлы, которые все еще занимают место из-за второй жесткой ссылки. Он также покажет пространство, занимаемое удаленными, но открытыми файлами (я считаю, что (разрешение запрещено), поскольку он не может прочитать имя файла).
Так как я знаю, что многие из вас делают это для redhat /var и gzip-файлов, ожидая сокращения FS, но вместо этого она увеличивается, просто убедитесь, что вы перезапускаете syslog службы. а также
покажу вам это в любом случае.
Это на самом деле не добавляет много; принятый ответ покрывал логику этого в 2001 году. Если у вас есть 50 представителей, используйте комментарии, если вы хотите добавить квалификаторы к существующим ответам.Еще один вариант: диск может быть заполнен из-за процесса, который постоянно создает данные: журналы, ядра и тому подобное. Возможно, что пространство на самом деле освобождается, но сразу же заполняется. Я действительно видел такой случай. df в этом случае просто не дает картину дыры. Используйте, du чтобы узнать больше.
Я использую EXT2, FSCK помог мне в этой ситуации. Попробуйте shudown -F сейчас, после некоторых перезапусков и fscks, я вижу половину используемого пространства.
Уважаемый Марцелл, ваше решение заключено в принятом ответе; и иногда вы не хотите делать перезагрузку, если вас не принуждают .Чтобы проверить, какие удаленные файлы заняли память, введите команду
Он покажет удаленные файлы, которые содержат память.
Затем убейте процесс с помощью pid или name
проверьте сейчас у вас будет такая же память
Если нет, введите команду ниже, чтобы увидеть, какой файл занимает память
укажите любой размер, который покажет, какие файлы занимают размер выше порогового, и удалите файл, в котором останется память
открыть терминал, попробуйте эту команду df -Th, затем используйте эту команду sudo du -h --max-deep = 1 / в этой команде вы найдете подробности использования диска, затем откроете, как пользователь root удалит файл (root-local-share-trash) и удали свой файл
У меня есть файловые серверы, которые используются для хранения файлов. Файлы могут храниться там неделю или год. К сожалению, когда я удаляю файлы с сервера, команда df не отражает освободившееся место. В итоге сервер заполняется (df показывает 99%), и мой скрипт больше не отправляет туда файлы, хотя там может быть несколько десятков ГБ свободного места. У меня есть флаг «noatime» на смонтированных разделах, если это имеет какое-то значение.
Ответ 1
Удаление файла не освободит место, пока вы не удалите процессы, у которых есть открытые дескрипторы к этому файлу. Тем не мене е в ы можете освободить место, не завершая процессы. Все, что вам нужно сделать, — это удалить дескрипторы файлов. Сначала выполните команду lsof | grep deleted, чтобы определить процесс, в котором находится файл:
[hudson@opsynxvm0055 log]$ /usr/sbin/lsof |grep deleted
java 8859 hudson 1w REG 253,0 3662503356 7578206 /crucible/data/current/var/log/fisheye.out (deleted)
Затем выполните:
cd /proc/PID/fd
И в итоге:
[hudson@opsynxvm0055 fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb 7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)
«1» будет дескриптором файла. Теперь введите «> FD», чтобы освободить это место.
> 1
Вам может потребоваться повторить операцию, если файл находится в других процессах.
Ответ 2
Одна из возможностей заключается в том, что удаленный файл (файлы) имеет больше ссылок в файловой системе. Если вы создали жесткие ссылки, несколько имен файлов будут указывать на одни и те же данные, и данные (фактическое содержимое) не будут помечены как свободные/используемые, пока все ссылки на них не будут удалены. Прежде чем удалять файлы, либо просмотрите их (Entry с именем Links), либо сделайте ls -l (должен быть второй столбец).
Если окажется, что на файлы есть ссылки в других местах, я полагаю, вам придется выполнить ls -i для файла( ов ), чтобы найти номер inode, а затем выполнить find с -inum <номер inode>, чтобы найти другие ссылки на этот файл (вероятно, вы также захотите использовать -mount, чтобы оставаться в пределах одной файловой системы).
Ответ 3
Если вы удаляете файл, а место не освобождается, это обычно связано либо с тем, что файл все еще открыт, либо с наличием других жестких ссылок на него.
Чтобы помочь в устранении неполадок, используйте инструмент, который подскажет вам, куда расходуется место на диске ; для этого в ы можете использовать du. Еще лучше использовать графический инструмент xdiskusage (их много) для поиска решения. xdiskusage и другие инструменты позволяют просмотреть самые большие « засорители » пространства и найти, куда уходит место.
Таким образом, вы быстро найдете файлы, которые все еще занимают место из-за второй жесткой ссылки. Он также покажет место, занятое удаленными, но открытыми файлами (как permission denied, я полагаю, поскольку он не сможет прочитать имя файла).
Ответ 4
Одна из причин нехватки дискового пространства (сценарий, с которым я только что столкнулся сам, потому что я, очевидно, не сделал то, что обычно делаю при создании нового массива), заключается в следующем. Обычно я освобождаю все доступное дисковое пространство, а также 5%, зарезервированные для root (tune2fs -m0), поскольку это однопользовательская файловая серверная система. Однако внезапно я получил отсутствие свободных байт , согласно df, но разница между общим и используемым пространством говорила о другом.
Поскольку я был уверен, что освободил те 5%, которые зарезервированы по умолчанию в Fedora (и имел несколько пустых папок вместо файлов, которые я только что скопировал. или думал, что скопировал), я начал отчаянно искать способ решить эту проблему, перезагружаясь, пробуя « lsof » и тому подобные вещи.
Зате м н аконе ц я решил запустить tune2fs -m0 на файловой системе, хотя я был уверен, что причина не в этом — но она была! Чуть больше 400 Г Б стало доступно, как и должно быть. Да, я знаю. моя ошибка, н о т ем не мене е м ой ответ может оказаться полезным для других, кто забыл об этом зарезервированном пространстве или твердо уверен, что освободил его.
Ответ 5
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Вот несколько способов очистки вашей системы, чтобы освободить место на Ubuntu и других дистрибутивах Linux на базе Ubuntu.
Со временем любая операционная система может стать загроможденной по мере добавления и удаления программ.
Если у вас есть TB-накопитель, вы можете не трудиться, чтобы очистить Ubuntu, чтобы сделать некоторое свободное дисковое пространство.
В этой статье я покажу вам некоторые из самых простых трюков, чтобы очистить вашу систему Ubuntu и получить больше места.
Но прежде, давайте посмотрим, как найти свободное пространство, оставшееся на Ubuntu.
Проверьте свободное место на Ubuntu
Это довольно легко сделать на Ubuntu.
Просто используйте утилиту анализатор использования диска.
Найдите его в меню и запустите инструмент.
Вы должны увидеть используемое место на диске и оставшееся свободное пространство:
Как только вы узнаете о состоянии свободного места на вашем диске, пришло время очистить вашу систему и сделать здесь еще больше свободного места.
Как освободить место на диске в Ubuntu и Linux Mint
Существует несколько способов очистки дискового пространства в Ubuntu и другой системе на основе Ubuntu.
Я обсуждал несколько трюков с командной строкой, а затем некоторые опции графического интерфейса.
Хотя я упомянул здесь несколько способов, если вы новичок, избегайте тех, которые помечены как «эксперт».
Не то чтобы вы не могли их использовать, но лучше избегать, если вы не знаете, что делаете.
1. Избавьтесь от пакетов, которые больше не требуются. [Рекомендуется]
Если вы прочитали руководство по командам apt-get, возможно, вы столкнулись с опцией команды apt-get «autoremove».
Эта опция удаляет библиотеки и пакеты, которые были установлены автоматически для удовлетворения зависимостей установленного пакета.
Если этот пакет удален, эти автоматически установленные пакеты бесполезны в системе.
Он также удаляет старые ядра Linux, которые были установлены автоматически при обновлении системы.
Команда без проблем позволяет вам время от времени увеличивать свободное пространство в вашей системе Ubuntu:
sudo apt-get autoremove
Как вы можете видеть, эта команда освободит некоторое количество свободного места в вашей системе.
2. Очистка кеша APT в Ubuntu
Ubuntu использует APT (Advanced Package Tool) для установки, удаления и управления программным обеспечением в системе и при этом сохраняет кеш ранее загруженных и установленных пакетов даже после их удаления.
Система управления пакетами APT хранит кеш-файлы DEB в /var/cache/apt/archives.
Со временем этот кеш может вырасти до довольно большого размера и содержать много пакетов, которые вам не нужны.
Размер кеша можно увидеть с помощью следующей команды:
Теперь у вас есть два варианта обработки кеша.
Либо удалите только устаревшие пакеты, как те, которые заменены недавним обновлением, что делает их совершенно ненужными.
sudo apt-get autoclean
Или очистите кеш целиком (освобождает больше места на диске):
sudo apt-get clean
3. Очистите кеш thumbnail
Ubuntu автоматически создает миниатюру для просмотра в файловом менеджере.
Он хранит эти миниатюры в скрытом каталоге в вашей учетной записи пользователя по адресу
Со временем количество эскизов резко возрастет.
Более того, кэш эскизов в конечном итоге будет содержать много лишних эскизов изображений, которые больше не существуют.
Вы можете проверить размер кеша эскизов с помощью следующей команды:
Так что это хорошая практика, чтобы очистить кеш миниатюр каждые несколько месяцев или около того.
4. Удалите старые ядра Linux, которые были установлены вручную [для экспертов]
Команда, обсуждаемая в пункте 1, удаляет старое ядро Linux.
Но это не сработает, если вы вручную установили ядро в Ubuntu.
Но удаление старых неиспользуемых ядер Linux по-прежнему сэкономит вам много места.
Итак, если вы вручную установили ядро Linux, возможно, вы также можете вручную его удалить.
Список всех установленных ядер Linux:
Удаление старых ядер аналогично удалению любого другого пакета. Я использую расширение оболочки для номеров версий, чтобы сохранить ввод. Он предложит вам список пакетов, которые будут удалены, поэтому вы можете дважды проверить список перед продолжением. Примечание. Замените VERSION на версию ядра, которую вы хотите удалить.sudo apt-get remove linux-image-VERSION
Моя рекомендация состоит в том, чтобы сохранить по крайней мере два или предпочтительно три ядра, включая последние.
Таким образом, вы будете иметь по крайней мере одно / два других ядра для загрузки, если по какой-либо причине есть последнее ядро, с которым вы не можете загрузиться.
5. Удалите потерянные пакеты [для экспертов]
Этот шаг лучше избегать, если вы новичок.
Я не поклонник этого метода, и я советую вам избежать этого.
Во-первых, давайте посмотрим, что такое orphaned пакет в Ubuntu.
Но этот пакет имеет зависимость от библиотеки mylib.
Эта библиотека обычно устанавливается автоматически с помощью «myprogram».
Таким образом, mylib в этом случае становится сиротским пакетом.
Теперь команда, указанная в пункте 1, удаляет такие потерянные пакеты.
Но представьте себе случай, когда вы вручную установили mylib перед установкой myprogram.
Команда «apt autoremove» в этом случае не может удалить потерянный пакет.
И, следовательно, вам придется вручную удалить его.
Сначала вам нужно будет найти все потерянные пакеты, а затем удалить их.
К счастью, у нас есть инструмент GUI для этого: gtkorphan, графический интерфейс для deborphan.
Установите gtkorphan через терминал:
Чтобы удалить потерянные пакеты, найдите инструмент «Removed Orphaned Package tool» и запустите его, чтобы найти все потерянные пакеты в вашей системе:
Честно говоря, я не буду использовать этот вариант, если вам действительно не нужно каждый МБ свободного места.
6. Удаление ненужных приложений [Рекомендуется]
У всех нас есть несколько игр и / или приложений, которые мы вряд ли используем. Не верьте мне?
Зайдите и найдите установленное программное обеспечение в системе Ubuntu.
Скорее всего, у вас установлено несколько приложений, которые вы редко используете. Возможно, вы установили их в конце удивительного обзора, или для решения конкретной задачи.Если вам нужно больше пространства, чтобы избавиться от неиспользуемых или менее используемых приложений, это всегда хорошая идея.
Вы можете удалить программу из программного центра или с помощью приведенной ниже команды с конкретным именем приложения:sudo apt-get remove package-name1 package-name2
7. Поиск и удаление дубликатов файлов
Иногда у вас могут быть дубликаты файлов в разных местах вашей системы.
Избавление от дубликатов, безусловно, освободит место и очистит вашу систему Ubuntu.
Для этой задачи можно использовать инструмент графического интерфейса, например, FSlint или инструмент командной строки, такой как FDUPES.
Я рекомендую прочитать эту статью, чтобы узнать, как использовать эти инструменты для удаления дубликатов файлов.
8. Использование GUI-инструментов для увеличения свободного места в Ubuntu
Мы увидели ряд параметров командной строки, чтобы сделать пространство в системе Linux, но я понимаю, если вы не хотите использовать команды.
Помнить о всех командах или использовать их по одному, возможно, вам не будет удобно.
И именно поэтому у нас есть ряд инструментов графического интерфейса, которые помогут вам сделать это за несколько кликов с помощью простого в использовании интерфейса.
Вы можете прочитать эту статью, чтобы узнать, как использовать Stacer в Ubuntu.
Читайте также: