TGViewer
Bash Советы Bash Советы @bash_srv · 2.73K subscribers
Post #245 855
🧯 Освобождаем место: «удалённые, но открытые» файлы

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


#!/usr/bin/env bash
# автор: https://t.me/bash_srv
# leakspace.sh — ищет удалённые, но открытые большие файлы
# Использование: ./leakspace.sh [порог] # пример: ./leakspace.sh 1G
set -o pipefail

THRESH="${1:-100M}"
THR_BYTES=$(numfmt --from=iec "$THRESH" 2>/dev/null || printf '104857600')

echo -e "SIZE\tPID\tFD\tFILE"
sudo lsof -nP | awk -v thr="$THR_BYTES" '
/ \(deleted\)/ && $7 ~ /^[0-9]+$/ {
size=$7; pid=$2; fd=$4;
name="";
for (i=9;i<=NF;i++) name=name (i>9?" ":"") $i;
if (size+0 >= thr) printf "%s\t%s\t%s\t%s\n", size, pid, fd, name
}' | sort -nr \
| numfmt --to=iec --header=1 --field=1 \
| column -t


🧪 Пример


./leakspace.sh 500M


Выводит таблицу вида: SIZE PID FD FILE для файлов ≥ 500M, помеченных как (deleted).

🧹 Как безопасно освободить место (без перезапуска сервиса)

1. Найдите строку с нужным PID и FD (например, PID=1234, FD=4u).
2. Обнулите файл у процесса (уберите буквы из FD - остаётся число):


sudo truncate -s 0 "/proc/1234/fd/4"


🔐 Альтернатива (более щадяще): перезапустить соответствующий сервис


sudo systemctl restart <service>


ℹ️ Полезные заметки

- Требуется lsof (apt install lsof / yum install lsof).
- Порог можно задавать как 200M, 1G и т.п. (по умолчанию 100M).
- Не удаляйте повторно сами файлы на диске — они уже помечены как удалённые; место держит именно процесс.
- Для контейнеров Docker заходите внутрь: docker exec -it <container> bash и выполняйте проверку там.

📲 Мы в MAX

👉@bash_srv
  • 👍 6
  • 🔥 3
More from @bash_srv
  1. Sep 21, 2026💡 Bash-совет: Анализ самых активных IP в логах веб-сервера 🐚🚀 Когда на сервере много тр…
  2. Sep 16, 2026Сегодня я хочу поделиться простым, но очень полезным Bash-скриптом для автоматического рез…
  3. Sep 14, 2026🕵️‍♂️ Мониторим новые файлы в каталоге в реальном времени Иногда нужно узнать, когда в оп…
  4. Sep 11, 2026🧹 Bash-скрипт для очистки старых логов с уведомлением Иногда логи занимают слишком много…
  5. Sep 8, 2026🚀 Мониторим активные подключения к серверу по SSH Иногда нужно быстро узнать, кто сейчас…
  6. Sep 7, 2026🚀 Полезный Bash-скрипт для архивации старых логов 🚀 Иногда логи на сервере растут быстре…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →