Sobes.tech
Senior

Es dzēsu lielu failu, bet diska vieta nav atbrīvota. Kāpēc? Kā to atrast un labot?

sobes.tech AI

Atbilde no AI

Если вы удалили большой файл, но место на диске не освободилось, вероятные причины:

  1. Файл всё ещё открыт процессом. В Unix-подобных системах удаление файла удаляет имя из файловой системы, но если процесс держит дескриптор на файл, место не освобождается, пока процесс не закроет файл.

  2. Удаление произошло не в том месте или на другом разделе.

  3. Файловая система или кэш не обновились сразу.


Как найти проблему:

  • Используйте команду lsof (list open files) для поиска процессов, которые держат удалённые файлы:
lsof | grep '(deleted)'

Это покажет файлы, которые были удалены, но ещё открыты процессами.

  • Если нашли процесс, который держит файл, можно:
    • Перезапустить процесс, чтобы он закрыл файл.
    • Или, если возможно, попросить процесс закрыть файл программно.

Пример исправления:

# Найти PID процесса, который держит удалённый файл
lsof | grep '(deleted)'

# Перезапустить процесс (например, по PID 1234)
kill -HUP 1234
# или
kill 1234

После этого место на диске освободится.

Если lsof не установлен, можно использовать fuser:

fuser -v /path/to/deleted/file

В Go-приложениях иногда файлы логов или временные файлы могут оставаться открытыми, поэтому важно корректно закрывать файлы.