BASH_SRV Telegram 138
🧯 Освобождаем место: «удалённые, но открытые» файлы

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


#!/usr/bin/env bash
# автор: https://www.tgoop.com/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 и выполняйте проверку там.

👉@bash_srv
7👍7



tgoop.com/bash_srv/138
Create:
Last Update:

🧯 Освобождаем место: «удалённые, но открытые» файлы

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


#!/usr/bin/env bash
# автор: https://www.tgoop.com/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 и выполняйте проверку там.

👉@bash_srv

BY Bash Советы




Share with your friend now:
tgoop.com/bash_srv/138

View MORE
Open in Telegram


Telegram News

Date: |

Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. 6How to manage your Telegram channel? According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon.
from us


Telegram Bash Советы
FROM American