Привет У меня есть много файлов, которые были удалены, но по какой-то причине дисковое пространство, связанное с удаленными файлами, не может быть использовано, пока я явно не уничтожу процесс для файла, занимающего место на диске
$ lsof /tmp/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted)
Дисковое пространство, занимаемое удаленным файлом выше, вызывает проблемы, такие как при попытке использовать клавишу табуляции для автозаполнения пути к файлу, я получаю ошибку bash: cannot create temp file for here-document: No space left on device
Но после запуска kill -9 1623
места для этого PID освобождается, и я больше не получаю ошибку.
Мои вопросы:
- почему это пространство не освобождается сразу при первом удалении файла?
- Каков наилучший способ вернуть файловое пространство, связанное с удаленными файлами?
и, пожалуйста, дайте мне знать любую неправильную терминологию, которую я использовал, или любую другую соответствующую и уместную информацию относительно этой ситуации
источник
Как уже говорили другие,
lsof
можно использовать список всех удаленных файлов, которые все еще находятся на диске из-за дескрипторов открытых файлов. Однако это может быть очень длинный список. Вот команда, которая перечисляет эти файлы, отсортированные по возрастанию в байтах:Может быть более краткий способ сделать это, но вышеприведенная команда сработала для меня.
источник
Пространство не освобождается сразу, потому что запущенный процесс все еще имеет дескриптор открытого файла для только что удаленного файла. В конце концов, если процесс все еще пытается использовать файл, вы, вероятно, не хотите, чтобы ядро избавилось от него (файла). Это может немного расстроить процесс. Лучший (и единственный, насколько мне известно) способ освободить место - это сделать то, что вы сделали - убить процесс.
источник
(Монетный двор 17.1)
TL; DR:
sudo baobab
(Анализатор использования дисков).root
корзину пользователя.контекст
Я застрял с постоянно уменьшающимся пространством, в то время как я постоянно удалял файлы. Я установил
trash-cli
пакет, чтобы очистить корзину, но это не помогло. Наконец, я заметил, что когда я запускалbaobab
(Disk Usage Analyzer в GUI, по крайней мере, на Mint 17.1) для проверки структуры дискового пространства, он выдавал предупреждение о том, что некоторые папки были недоступны. Так что я побежал вroot
использованииsudo baobab
. Это выявило проблему. Многие файлы, которые были удалены, были в мусорной корзинеroot
пользователя, а не моего собственного пользователя. Таким образом, я не смог освободить пространство. Затем я просто очистил корзину, используя root (sudo trash-cli
), и все мое пространство вернулось.источник
Попробуйте использовать приведенную ниже команду
а затем убить pid удаленного файла.
источник