Linux: після видалення файлу місце не звільняється

Зіткнувся сьогодні з такою проблемкою: безглуздий minidlna весь день вантажив процесор на все 100 відсотків. Я проігнорував це проблему, проте потім у мене зламалася Samba, і жодна кулі не працювала. Подивився, що ж там з місцем на диску:

df -h

І він мені показав, що в корені не залишилося місця!
Далі я пішов досліджувати по всьому корені, що ж де не так.

cd /
du -h --max-depth 1

І знайшов проблему: папка / var важила 85ГБ! А точніше папка log. У ній сидів minidlna.log файл розміром в усі 85ГБ! Ну і звичайно ж я видалив його за допомогою “гт -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

Ну і, власне, місце звільниться після цієї операції.

Завантаження

This entry was posted in Комп'ютери and tagged , , , , , , , . Bookmark the permalink. | Коротке посилання:  http://p1rat.ru/lezzz/GjZvh

One Response to Linux: після видалення файлу місце не звільняється

Залиште відповідь