Linux не освобождает место после удаления файла

Обновлено: 21.11.2024

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

Почему место на диске не освобождается после удаления файла в Red Hat Enterprise Linux?

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

Как освободить место на диске в Linux?

Освобождение дискового пространства на сервере Linux

  1. Перейдите в корень вашего компьютера, запустив cd /
  2. Запустите sudo du -h --max-depth=1.
  3. Обратите внимание, какие каталоги занимают много места на диске.
  4. перейдите в один из больших каталогов.
  5. Запустите ls -l, чтобы узнать, какие файлы занимают много места. Удалите все, что вам не нужно.
  6. Повторите шаги 2–5.

Как безвозвратно удалить удаленные файлы в Linux?

Нажмите пункт меню «Терминал» или «Консоль», чтобы открыть окно терминала и получить доступ к командной строке. Введите команду «shred -u -z -n 20 filename», чтобы записать случайные единицы и нули в файл 20 раз, затем записать нули во весь файл и, наконец, удалить файл.

Почему мои файлы не удаляются, когда я освобождаю место?

Доступное место на диске не увеличивается после удаления файлов. Когда файл удаляется, пространство, используемое на диске, не восстанавливается до тех пор, пока файл не будет полностью стерт. Корзина (корзина в Windows) на самом деле представляет собой скрытую папку, расположенную на каждом жестком диске. Чтобы полностью удалить файл, необходимо выполнить еще один шаг.

Можно ли удалить файл Kcore в Linux?

Выполнение команды sudo rm /proc/kcore абсолютно безопасно. … Все файлы в /proc фактически не существуют на вашем жестком диске, поэтому их нельзя удалить.

Как освободить место на диске?

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

  1. Удалите ненужные приложения и программы. …
  2. Очистите свой рабочий стол. …
  3. Избавьтесь от файлов-монстров. …
  4. Используйте инструмент очистки диска. …
  5. Удалить временные файлы. …
  6. Разберитесь с загрузками. …
  7. Сохранить в облаке.

Как управлять дисковым пространством в Ubuntu?

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

  1. Избавьтесь от пакетов, которые больше не нужны [рекомендуется]…
  2. Удалите ненужные приложения [рекомендуется]…
  3. Очистите кеш APT в Ubuntu. …
  4. Очистить журналы журнала systemd [Средний уровень]…
  5. Удалите старые версии приложений Snap [Средний уровень]

Как очистить открытые файлы в Linux?

Команды Linux — команда lsof для просмотра списка открытых файлов и уничтожения…

  1. Список всех открытых файлов. …
  2. Список всех файлов, открытых пользователем. …
  3. Вывести список всех открытых файлов IPv4. …
  4. Вывести список всех открытых файлов IPv6. …
  5. Вывести список всех открытых файлов с заданным PID. …
  6. Вывести список всех открытых файлов с заданными идентификаторами PID. …
  7. Вывести список всех процессов, запущенных на данном порту. …
  8. Вывести список всех процессов, запущенных на заданных портах.

Удаляет ли RM навсегда?

Как в Linux, так и в Windows команды rm и DEL (соответственно) безвозвратно удаляют файл, в то время как приложение графического файлового менеджера по умолчанию перемещает файл в корзину.

Как удалить все данные в Linux?

Linux Удалить все файлы в каталоге

  1. Откройте терминальное приложение.
  2. Чтобы удалить все в каталоге, запустите: rm /path/to/dir/*
  3. Чтобы удалить все подкаталоги и файлы: rm -r /path/to/dir/*

Занимают ли удаленные файлы место?

Вы можете безопасно восстановить удаленные файлы из внутренней памяти телефона Android. Это связано с тем, что когда файлы удаляются из внутреннего хранилища, они не удаляются навсегда. … Приложения для резервного копирования обычно имеют простой интерфейс, поэтому вы можете без проблем восстанавливать файлы.

Не освобождается место после удаления файлов в Linux? Прочтите это руководство по устранению неполадок

Одной из распространенных проблем, с которой сталкиваются пользователи системы Linux Unix, является то, что место на диске не освобождается даже после удаления файлов. Системные администраторы сталкиваются с некоторыми проблемами, когда пытаются восстановить место на диске, удаляя файлы большого размера в точке монтирования, а затем обнаруживают, что использование диска остается прежним даже после удаления огромных файлов.Иногда пользователи приложений перемещают/удаляют большие файлы журналов и все равно не могут освободить место в точке подключения.

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

Остановка/запуск/перезапуск процесса

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

Вывод lsof можно читать по столбцам, как показано ниже –

Теперь в приведенном выше выводе проверьте PID 777 и остановите этот процесс. Если вы не можете остановить его, вы можете убить процесс. В случае процессов приложений вы можете обратиться к руководствам по приложениям, чтобы узнать, как остановить, запустить и перезапустить его процессы. Процесс перезапуска помогает снять блокировку этого файла, который процесс сделал так, чтобы он оставался открытым. Как только связанный процесс будет остановлен/перезапущен, вы увидите, что место будет освобождено, и вы можете наблюдать снижение использования в выводе команды df.

Очистить файловую систему proc

Еще один способ — освободить пространство, используемое файлом, путем отмены выделения этого пространства из файловой системы /proc. Как вы знаете, каждый процесс в Linux имеет свои выделения в файловой системе /proc, то есть в файловой системе процесса. Убедитесь, что процесс/приложение не влияет на удаление файлов (которые открыты приложением) из файловой системы /proc.

Расположение файлов можно найти в /proc/

/fd/ местоположение. Где PID и fd_number вы можете получить из вывода lsof, который мы видели выше. Если вы проверите тип этого файла, то это символическая ссылка на ваш удаленный файл.

Итак, в нашем случае мы можем сделать это с помощью –

Вот оно! Сбросив его, вы восстановите потерянное пространство теми файлами, которые вы уже удалили.

У меня есть файловые серверы, которые используются для хранения файлов. Файлы могут находиться там неделю или год. К сожалению, когда я удаляю файлы с сервера, команда df не отображает освободившееся место. Итак, в конце концов, сервер заполняется ( df показывает 99%), и мой скрипт больше не отправляет туда файлы, за исключением того, что там может быть несколько десятков ГБ свободного места.

У меня есть флаг noatime для смонтированных разделов, если это имеет значение.

Ну, это происходит в моем основном разделе данных, который меня волнует, так как я только записываю/удаляю файлы на него.

Какие файловые системы? DF выполняет статистику суперблока, возможно, ваша файловая система не обновляет индекс sb. Вы пробовали сбросить кеш?

15 ответов 15

Удаление имени файла на самом деле не удаляет файл. Какой-то другой процесс удерживает файл открытым, из-за чего он не может быть удален; перезапустите или завершите этот процесс, чтобы освободить файл.

чтобы узнать, какой процесс использует удаленный (несвязанный) файл.

К удаленным файлам не обращались более месяца, и единственный процесс, который обращается к ним, — это nginx, так что это сомнительно.

от имени пользователя 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, а просто потом указывает на пустой файл.

Если раздел настроен на резервирование определенной части дискового пространства только для использования root, df не будет включать это пространство как доступное.

Даже после того, как пространство будет освобождено путем удаления файлов/каталогов, пользователь без полномочий root не сможет выполнять запись в определенный раздел.

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

Кроме того, вы можете проверить конфигурацию файловой системы, запустив

и расчет фактического % самостоятельно.

Чтобы изменить % диска, зарезервированный для использования только root, выполните

Возможно, на файлы, которые вы удалили, больше ссылок в файловой системе. Если вы создали жесткие ссылки, несколько имен файлов будут указывать на одни и те же данные, и данные (фактическое содержимое) не будут помечены как свободные/пригодные для использования, пока все ссылки на них не будут удалены. Прежде чем удалять файлы, либо укажите их (запись с именем «Ссылки»), либо выполните для них команду ls -l (должно быть во втором столбце).

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

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

Запустите sudo lsof | grep удалил и посмотрел, какой процесс удерживает файл. Пример результата:

Завершить процесс с помощью sudo kill -9 . В приведенном выше примере PID равен 1623.

Запустите df, чтобы проверить, не освободилось ли уже место. Если он по-прежнему заполнен, возможно, вам нужно подождать несколько секунд и проверить еще раз.

Поскольку я знаю, что многие из вас делают это для redhat в /var и сжимают файлы, ожидая, что файловая система уменьшится, но вместо этого она увеличится, просто убедитесь, что вы перезапускаете сервисный системный журнал. и

все равно покажет вам это.

Это мало что добавляет; принятый ответ охватывал логику, лежащую в основе этого в 2001 году. Когда у вас есть 50 повторений, используйте комментарии, если вы хотите добавить квалификаторы к существующим ответам.

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

Обычно я освобождаю все доступное дисковое пространство, а также 5%, зарезервированные для root (tune2fs -m0), так как это однопользовательская файловая серверная система. Тем не менее, я внезапно застрял с 0 байтами свободного в соответствии с df, но разница между общим и используемым пространством говорила о другом.

Поскольку я был уверен, что освободил эти 5%, зарезервированные по умолчанию, по крайней мере, в Fedora (и имея несколько пустых папок вместо файлов, которые я только что скопировал или думал, что у меня есть), я начал потеть и отчаянно искать для решения этой проблемы, перезагрузки, попытки «lsof» и тому подобного.

Затем, наконец, я решил запустить tune2fs -m0 в файловой системе, хотя я был уверен, что это не причина, но это было! Стало доступно чуть более 400G, как и должно быть. Да, знаю. моя ошибка, но, тем не менее, мой комментарий может быть полезен другим, кто забывает об этом зарезервированном пространстве или твердо уверен, что освободил его. в")

Имея дело со старой коробкой CentOS 5.6, без настройки lvm, моя корневая файловая система / заполнена, я очистил много старых файлов журналов и файлов приложений, которые мне не нужны, размер которых превышал 2-5 ГБ, однако моя система по-прежнему сообщает, что диск заполнен.

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

Извините за глупый вопрос, но вы убедились, что ваш /.Trash/ пуст? Вы сделали sudo rm -Rf ~/.Trash/* ?

Это сервер, у меня не установлен xwindow, поэтому у меня нет папки .trash в моей корневой учетной записи.

9 ответов 9

Здесь могут происходить две вещи.

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

Если это ваша ситуация, и вы в отчаянии, вы можете изменить объем пространства, зарезервированного для root . Чтобы уменьшить его до 1% (по умолчанию 5%), ваша команда будет

Во-вторых, операционная система не освобождает место на диске для удаленных файлов, которые все еще открыты. Если вы удалили, скажем, один из файлов журнала Apache, вам потребуется перезапустить Apache, чтобы освободить место.

Если вы удалите файл, который используется процессом, вы больше не сможете просмотреть этот файл с помощью ls . Процесс продолжает выполнять запись в этот файл, пока вы его не остановите.

Чтобы просмотреть эти удаленные файлы, просто запустите lsof|grep delete

Еще 2 способа получить диск заполнен:

1) скрытый под точкой монтирования: linux покажет полный диск с файлами, «спрятанными» под точкой монтирования. Если у вас есть данные, записанные на диск, и вы монтируете поверх него другую файловую систему, Linux правильно отмечает использование диска, даже если вы не видите файлы в точке монтирования. Если у вас есть монтирования nfs, попробуйте размонтировать их и посмотреть, не было ли что-нибудь случайно записано в эти каталоги перед монтированием.

2) поврежденные файлы: я иногда вижу это при передаче файлов из Windows в Linux через SMB. В одном файле не удается закрыть файловый дескриптор, и вы получаете 4 ГБ мусорного файла.

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

Число каталогов верхнего уровня обычно ограничено, поэтому я установил удобочитаемый флаг -h, чтобы увидеть, какой подкаталог занимает много места.

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

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

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