Блог P1ratRuleZZZ

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

Столкнулся сегодня с такой проблемкой: дурацкий minidlna весь день грузил процессор на все 100 процентов. Я проигнорировал это проблему, однако потом у меня сломалась Samba, и ни одна шара не работала. Посмотрел, что же там с местом на диске:

df -h

И он мне показал, что в корне не осталось места!
Далее я пошел исследовать по всему корню, что же где не так.

cd /
du -h --max-depth 1

И нашел проблему: папка /var весила 85ГБ! А точнее папка log. В ней сидел minidlna.log файл размером во все 85ГБ! Ну и конечно же я удалил его с помощью “rm -rf /var/log/minidlna.log”

Но место так и не освободилось. В общем, inode файла был все еще открыт и он все еще занимал 85ГБ.

Решение

Запускаем

lsof | grep deleted | grep minidlna.log

И видим такую картину

chrome     3446       user  128u      REG              253,2              16400       2364626 /var/log/minidlna.log (deleted) 

Нам интересна цифра 3446 (какой-то айдишник короче). Далее надо найти ссылку на этот файл в /proc/*наш айдишник*/fd/*ссылка на файл*. Это делается так

ls -l /proc/3446/fd | grep minidla.log

Ну получаем примерно такую вещь:

lrwx------. 1 user unix 64 Feb 11 15:31 128 -> /var/log/minidlna.log (deleted)

Тут нам интересен файл 128. Дальше обнулим этот файл:

cat /dev/null > /proc/3446/fd/128

Ну и, собственно, место освободится после этой операции.

Exit mobile version