Блог 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