Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.
Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.
2 340 подписчиков · @bash_srv
К каналу →
⚡Как узнать, какие порты слушает сервер ss -tulpen 🔎 Разбор: -t — TCP соединения -u — UDP соединения -l — только слушающие порты -p — показывает процесс, который держит порт…
Читать далее →
3 848
Реклама
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://m…
Читать далее →
3 744

📈Скрипт показывает, какие каталоги выросли с прошлого запуска Скрипт ниже делает снимок размеров каталогов (через du),

📈Скрипт показывает, какие каталоги выросли с прошлого запуска

Скрипт ниже делает снимок размеров каталогов (через du), а при следующем запуске покажет топ приростов - кто вырос и на сколько.

#!/usr/bin/env bash
# автор: https://t.me/bash_srv

set -Eeuo pipefail

usage() {
cat <<'HELP'
Usage: du-delta.sh [-p PATH] [-d DEPTH] [-n TOP] [-t THRESH] [-s STATE_DIR]
-p PATH Корень анализа (по умолчанию /)
-d DEPTH Глубина du (по умолчанию 2)
-n TOP Сколько строк показать (по умолчанию 15)
-t THRESH Порог роста (например 100M, 1G; по умолчанию 100M)
-s STATE_DIR Директория состояния (по умолчанию /var/lib/du-delta)
-h Помощь
Прим.: требуются права на чтение анализируемых каталогов.
HELP
}

PATH_TO="/"
DEPTH=2
TOP=15
THRESH="100M"
STATE_DIR="/var/lib/du-delta"

while getopts ":p:d:n:t:s:h" opt; do
case "$opt" in
p) PATH_TO="$OPTARG" ;;
d) DEPTH="$OPTARG" ;;
n) TOP="$OPTARG" ;;
t) THRESH="$OPTARG" ;;
s) STATE_DIR="$OPTARG" ;;
h) usage; exit 0 ;;
\?) echo "Неизвестный параметр: -$OPTARG" >&2; usage; exit 1 ;;
:) echo "Параметру -$OPTARG нужно значение" >&2; exit 1 ;;
esac
done

to_bytes() {
local v="$1"
if command -v numfmt >/dev/null 2>&1; then
numfmt --from=iec "$v"
else
awk -v s="$v" 'BEGIN{
n=s; sub(/[KkMmGgTtPp][Bb]?$/,"",n);
u=""; if (match(s,/[KkMmGgTtPp]/)) u=substr(s,RSTART,1);
m=1; if(u=="K"||u=="k") m=1024;
else if(u=="M"||u=="m") m=1024^2;
else if(u=="G"||u=="g") m=1024^3;
else if(u=="T"||u=="t") m=1024^4;
else if(u=="P"||u=="p") m=1024^5;
printf "%d", n*m
}'
fi
}

human() {
local b="$1"
if command -v numfmt >/dev/null 2>&1; then
numfmt --to=iec --suffix=B "$b"
else
awk -v b="$b" 'function h(x, a,i){
split("B KiB MiB GiB TiB PiB",a," ");
for(i=1; x>=1024 && i<6; i++) x/=1024;
return sprintf("%.1f %s", x, a[i])
} BEGIN{print h(b)}'
fi
}

# Определяем совместимый ключ глубины для du
if du -d 0 / >/dev/null 2>&1; then
DU_DEPTH=(-d "$DEPTH")
else
DU_DEPTH=(--max-depth="$DEPTH")
fi

mkdir -p "$STATE_DIR"
chmod 700 "$STATE_DIR"

# Имя снапшота зависит от пути и глубины
safe_name="$(echo "$PATH_TO" | sed 's|/|_|g; s|^_$|root|')_d${DEPTH}.tsv"
SNAP_FILE="$STATE_DIR/$safe_name"

tmp_cur="$(mktemp)"
trap 'rm -f "$tmp_cur"' EXIT

# Снимок текущих размеров: "path \t bytes"
# -B1: байты, -x: не вылезать на другие ФС, --apparent-size: по желанию (коммент ниже)
# Уберите --apparent-size, если хотите считать выделенные блоки, а не логический размер.
du -B1 "${DU_DEPTH[@]}" -x --apparent-size "$PATH_TO" 2>/dev/null \
| awk 'BEGIN{OFS="\t"} {sz=$1; $1=""; sub(/^[ \t]+/,""); print $0, sz}' \
| sort -k1,1 > "$tmp_cur"

# Если есть предыдущий снимок — считаем дельты
THRESH_BYTES="$(to_bytes "$THRESH")"
printf "📈 Топ %d приростов в %s (глубина %d, порог %s):\n" \
"$TOP" "$PATH_TO" "$DEPTH" "$THRESH"

if [[ -s "$SNAP_FILE" ]]; then
awk -F'\t' -v th="$THRESH_BYTES" '
NR==FNR { prev[$1]=$2; next }
{
cur=$2+0; p=(($1 in prev)?prev[$1]+0:0);
d=cur-p;
if (d>=th) { print $1 "\t" d }
}
' "$SNAP_FILE" "$tmp_cur" \
| sort -k2,2nr \
| head -n "$TOP" \
| awk -F'\t' '{printf " + %-8s %s\n", "'"$(human "$2")"'", $1}' \
|| true
else
echo " (первый запуск — снимаю базовую метрику, сравнивать не с чем)"
fi

# Обновляем снимок
mv -f "$tmp_cur" "$SNAP_FILE"

- Быстрый запуск вручную:

sudo bash du-delta.sh -p /var -d 3 -t 200M -n 20

- Повесить на cron (каждые 6 часов) и писать в syslog:

*/6 * * * * root /usr/local/sbin/du-delta.sh -p / -d 3 -t 200M -n 20 | logger -t du-delta

Хочешь логический размер файлов (как видит ls -l) - оставляй --apparent-size. Нужен именно занятый на диске объём - убери этот флаг.

💡 Начни с -d 2 для обзора верхних уровней, потом точечно спускайся глубже по «подозрительным» каталогам.

👉 @bash_srv
🔥 Предупреждение о переполнении дисков + топ “пожирателей” места Данный ниже скрипт проверит заполнение всех ФС (кроме tmpfs/devtmpfs/squashfs/overlay), и если порог превышен - пр…
Читать далее →
3 377
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://m…
Читать далее →
3 156
Другие главы канала «Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 12.09.2026
AI-агенты уже экономят специалистам до 15 часов в неделю. У Яндекс Практикума е…
👁 190 просмотров
Глава от 11.09.2026
🧹 Bash-скрипт для очистки старых логов с уведомлением Иногда логи занимают слиш…
👁 505 просмотров
Глава от 08.09.2026
🚀 Мониторим активные подключения к серверу по SSH Иногда нужно быстро узнать, к…
👁 763 просмотров
Глава от 07.09.2026
🚀 Полезный Bash-скрипт для архивации старых логов 🚀 Иногда логи на сервере раст…
👁 772 просмотров
Глава от 01.09.2026
✨ Извлечение уникальных IP-адресов из логов Apache ✨ Иногда нужно быстро получи…
👁 1 042 просмотров
Глава от 28.08.2026
🗑️ Bash-совет дня: safe_rm - «корзина» для удаляемых файлов Сколько раз вы слу…
👁 1 156 просмотров
Глава от 26.08.2026
⚙️ Bash: Мониторинг пользователей в системе в реальном времени Иногда нужно пон…
👁 1 150 просмотров
Глава от 24.08.2026
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онла…
👁 1 066 просмотров
Глава от 24.08.2026
Проверка открытых портов без использования netstat Утилита netstat считается ус…
👁 1 006 просмотров

Популярные посты канала «Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.»

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 6 567 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 6 542 просмотров
📌 Рекурсивная массовая замена текста во всех файлах 🔍✏️ Иногда нужно за пару секунд заменить одну строку или слово сразу во множестве файло…
👁 6 487 просмотров
🔥 Бэкап базы данных MySQL с автоматической ротацией 🔄 Если у тебя есть сервер с MySQL/MariaDB, автоматический бэкап с ротацией — must have …
👁 6 480 просмотров
🚀 Мониторим активные подключения к серверу по SSH Иногда нужно быстро узнать, кто сейчас подключён к серверу по SSH. Вот простой однострочн…
👁 6 438 просмотров
🔥 Bash: выводим самые «тяжёлые» директории в системе 🧱 Когда место на диске заканчивается, надо быстро найти, кто его ест. Вот однострочник…
👁 6 436 просмотров
🧠 Регулярки на практике: как вытащить IP-адреса из логов Когда нужно быстро достать все IP-адреса из логов — тебе на помощь приходит grep +…
👁 6 432 просмотров
🧹 Bash-скрипт для очистки старых логов с уведомлением Иногда логи занимают слишком много места, и их нужно периодически чистить. Этот скрип…
👁 6 427 просмотров
🔍 Поиск текста во множестве файлов — быстро и точно! Если нужно найти, где в проекте встречается определённая строка (например, DB_PASSWORD…
👁 6 427 просмотров
🔍 Мониторинг сервисов Linux и автоматический перезапуск 🛠️ Иногда сервисы на сервере «внезапно» падают, а вы об этом узнаёте лишь по жалоба…
👁 6 423 просмотров
Bash-совет: анализ неудачных SSH-логинов и бан «горячих» IP 🔒🐚 Хотите быстро узнать, какие IP вызывают максимум неудачных попыток входа в S…
👁 6 417 просмотров
💡 Bash-совет: Анализ самых активных IP в логах веб-сервера 🐚🚀 Когда на сервере много трафика, полезно быстро узнать, какие IP-адреса обраща…
👁 6 401 просмотров
Сегодня я хочу поделиться простым, но очень полезным Bash-скриптом для автоматического резервного копирования директорий с ротацией старых б…
👁 6 393 просмотров
🔐 Проверка пароля на сложность 🧪 Когда нужно быстро проверить, достаточно ли сложный пароль (длина, буквы, цифры, спецсимволы) — используйт…
👁 6 378 просмотров
🔄 Как узнать, какой процесс держит порт в Linux? Часто бывает, что нужный порт уже занят, и надо быстро найти, кто его "захватил". Использу…
👁 6 370 просмотров
📌 Мониторинг процессов с высоким потреблением CPU Скрипт, который покажет топ-5 процессов по загрузке CPU. ps -eo pid,comm,%cpu --sort=-%c…
👁 6 365 просмотров
🚀 Полезный Bash-скрипт для архивации старых логов 🚀 Иногда логи на сервере растут быстрее, чем хочется, и начинают занимать всё свободное м…
👁 6 365 просмотров
🕵️‍♂️ Мониторим новые файлы в каталоге в реальном времени Иногда нужно узнать, когда в определённой папке появляются новые файлы. Bash + in…
👁 6 354 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 6 320 просмотров
✨ Извлечение уникальных IP-адресов из логов Apache ✨ Иногда нужно быстро получить список всех клиентов, обращавшихся к вашему веб-серверу. …
👁 6 303 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@rlz_the_kraken
Выпускайте КракенаZ! Новости Россия Путин
Первый патриотический. За Россию! За Путина! Обратная связь: МАХ: https://clck.ru/3R95Mw, https://clck.ru/3REePQ ТГ: https://t.me/rls_the_kraken_bot Канал обо всем в м…
👥 161 423 · +1 336/7д
@maxgotovitt
Гороскоп
Гороскоп
👥 146 335 · +1 940/7д
@chp_78
ЧП 78 | Санкт-Петербург , Питер / СПБ / ДТП / Новости
ЧП 78 - публикуем ваши новости, происшествия, ЧП, ДТП. Реклама https://telega.in/m/chp_78 Сотрудничаем с https://maxln.ru/SpiralYu Контакты: ВК- vk.com/leemma MAX- s…
👥 124 045 · -3 378/7д
@vysokygovorit
Старше Эдды
Телеграмм https://t.me/vysokygovorit
👥 99 916 · +735/7д
@zolotayahozyaika
Гороскоп
гороскоп Купить рекламу в канале — s.marketly.ru/ugDQujCJ https://vk.cc/cRUO6P
👥 99 007 · -1 286/7д
@pikabu
Пикабу
Официальный канал Пикабу. Тепло и лампово. Сайт: pikabu.ru
👥 93 687 · +1 548/7д
🏷 Темы и теги
#автоматизация задач #grep sed awk #devops инструменты #системное администрирование #zsh tmux #командная строка #Астрология и эзотерика
📋 О канале Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.
Укроти командную строку. Пишем эффективные Bash-скрипты для сервера и десктопа. Магия текстовой обработки: Grep, Sed, Awk и регулярные выражения (Regex). Настройка окружения: Zsh, Fish, Vim, Tmux. Автоматизация через Cron и Systemd. Работа с SSH, логами и процессами. Полезные команды (Curl, Wget, Tar) и пайплайны (Pipes). Лучшие практики написания кода и отладки.
🔍 Архив всех постов Макс
Поиск по 16,317,751 постам из 203,562 каналов
Подключить за 490 ₽/мес →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Bash Советы - Bash Scripting | Linux Terminal & Shell. Скрипты и Автоматизация задач. Командная строка для Sysadmin и DevOps. Уроки Баш, Zsh и CLI Tools. Unix Console.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.