Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры1

Файл удалён, но место не освободилось: диагностика с lsof

Как найти удалённые файлы, которые ещё открыты процессами, и собрать данные для безопасного освобождения места без случайной остановки сервиса.

Извлечённый накопитель, подключённый кабелем к компьютеру
В этой статье

Большой журнал удалили, но свободного места почти не прибавилось. В Linux это возможно: имя файла уже исчезло из каталога, а процесс продолжает держать его открытым. До закрытия последней ссылки ядра на такой объект занятые им блоки могут оставаться выделенными.

Подтвердите исходную ситуацию

Эта инструкция относится к Linux с установленной утилитой lsof. Права обычного пользователя могут ограничивать видимость чужих процессов. Если вы администрируете сервер, запускайте проверку с разрешёнными для вашей роли правами; иначе передайте задачу ответственному специалисту.

df -h /var

Запишите файловую систему и доступный объём. Путь /var приведён для примера: нужен именно тот том, на котором находился удалённый файл. Без этой привязки легко принять чужой временный файл за причину заполнения раздела сайта.

Найдите открытые файлы без имени

У lsof есть отбор по числу жёстких ссылок. Значение меньше единицы позволяет найти открытые файлы, удалённые из дерева каталогов:

lsof -nP +L1

Параметры -nP отключают преобразование сетевых адресов и портов в имена. В выводе важны процесс, его идентификатор, дескриптор, устройство и размер. Если список пуст, это может означать отсутствие таких объектов, но также недостаток прав или видимости в текущем пространстве процессов.

Не складывайте каждую строку

Один объект иногда отображается у нескольких процессов или дескрипторов. Простое суммирование всех строк завысит оценку освобождаемого объёма. Сопоставляйте устройство и inode, а также проверяйте, что объект относится к нужной файловой системе.

Надпись об удалении сама по себе не является неисправностью. Приложения могут штатно создавать временные файлы и удалять их имена, оставляя открытые дескрипторы. Важен размер, длительность удержания и связь с наблюдаемым ростом занятого места.

Следующее действие зависит от приложения

Например, веб-сервер может продолжать писать в старый журнал после неправильной ротации. В этом случае нужно проверить штатный механизм переоткрытия логов. У базы данных причина и допустимые действия будут другими. Универсальной команды, безопасно закрывающей любой найденный файл, нет.

Не завершайте процесс только потому, что он стоит в первой строке списка. Он может обслуживать текущие запросы или транзакции. Не обнуляйте файловые дескрипторы через служебные пути: такое вмешательство способно нарушить работу приложения и уничтожить данные. Передайте владельцу сервиса найденный идентификатор, размер и время наблюдения.

Проверка результата

После штатного действия, выбранного администратором, повторите lsof -nP +L1 и замер свободного места на том же разделе. Исчезновение конкретного удерживаемого объекта вместе с ростом свободного объёма подтверждает гипотезу гораздо лучше, чем сам факт перезапуска службы.

Если место не изменилось, вернитесь к другим причинам: снимкам, служебным данным файловой системы или новым записям, появившимся за время проверки. Зафиксируйте результат даже при отрицательном выводе. Это позволит следующему специалисту продолжить диагностику, а не повторять случайные удаления и перезапуски.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.