4.6/5 - (9 голосов)

Такое бывает часто на Linux, только обычно этого не кто не замечает если файлик маленький, а перезагрузка сервера решает эту проблему. Но когда файл большой (несколько ГБ) и место не освободилось заметно сразу, а еще если и перезагрузить нельзя, что же тогда делать.

df -h

Показало, что мало место, путем не большого поиска находим источник занятого места. В моем случае это mysql-slow.log.

rm -rf /var/log/mysql-slow.log

Файл удален, а место то не освободилось.

Решение:

lsof | grep deleted | grep mysql-slow.log

mysqld     7206     mysql   10w      REG              253,0   3839285    1966592 /var/log/mysql-slow.log

Интересным в этом выводе будет цифра 7206. Ищем ссылку на типа /proc/*наш id*/fd/*ссылка на файл*

ls -l /proc/7206/fd | grep mysql-slow.log

И видим следующее:

l-wx—— 1 root root 64 Dec 25 10:00 10 -> /var/log/mysql-slow.log

Собственно временный файл найден, обнуляем его и радуемся освободившемуся месту.

cat /dev/null > /proc/7206/fd/10

По видимому таким образом можно восстановить удаленный файл linux из временного. Если он конечно остался в системе.