LINUX.ORG.RU

Как освободить место, занятое открытым файлом?

 , , , ,


0

1

Иксам стало плохо и они заполнили логом весь диск.
При этом иксы всё ещё запущены, в них дофига терминалов и используемых не сегодня - так через неделю программ, аптайм системы больше месяца (echo disk > /sys/power/state).
Теперь пока на диске нет места, каждую секунду иксы замирают на секунду - то есть , всё происходит с рывками раз в секунду.
Как удалить лог? Убивать иксы не предлагать

★★★★★

Последнее исправление: mittorn (всего исправлений: 1)

ftruncate. Но тебе придется поискать, как это сделать для уже удаленного файла.

anonymous
()
Ответ на: комментарий от mittorn

Вот теперь мы узнали, что ты их удалил

anonymous
()
Ответ на: комментарий от anonymous

Как ты узнал что я нервничаю? Интуиция? На этот раз подвела она тебя.

anonymous
()
Ответ на: комментарий от mittorn

Иди по линку

If it was already deleted, on Linux, you can still truncate it by doing:

: > «/proc/$pid/fd/$fd»

Where $pid is the process id of the process that has the file opened

anonymous
()
Ответ на: комментарий от anonymous

Ничего не помогло. При попытке усечь этот дескриптор получаю «Нет такого устройства или адреса»
close(fd) из gdb тоже не спас. Вернул 0, а место не освободилось.

mittorn ★★★★★
() автор топика

Посмотрел в strace - почему-то он писал лог в 0 и получал ошибку нехватки места на диске. Закрыл 0 в gdb - помогло.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Я думаю, уже не смогу разобраться, кто виноват.
lsof показывал на 38 дескриптор и писал там его имя, хотя он закрыт уже. Возможно, даже дело в ядре или с dup намутили.

mittorn ★★★★★
() автор топика
Последнее исправление: mittorn (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.