🚀 Быстрый мониторинг использования диска по каталогам
Иногда нужно быстро понять, какая папка на сервере съедает больше всего места. Вот простой скрипт, который выведет топ-10 "пожирателей" диска:
📌 Как использовать:
1. Перейдите в интересующую директорию:
2. Запустите скрипт:
👉@bash_srv
Иногда нужно быстро понять, какая папка на сервере съедает больше всего места. Вот простой скрипт, который выведет топ-10 "пожирателей" диска:
#!/bin/bash
# Топ-10 каталогов по размеру в текущем пути
du -h --max-depth=1 2>/dev/null | sort -hr | head -n 10
📌 Как использовать:
1. Перейдите в интересующую директорию:
cd /var/log
2. Запустите скрипт:
./disk_top.sh
👉@bash_srv
🔥7👍2👎1
🔥 Автоматическая проверка и перезапуск упавших сервисов
Скрипт, который проверяет список сервисов и перезапускает их при необходимости.
📌 Как использовать:
1. Сохраните скрипт, например, в
2. Дайте права на выполнение:
3. Добавьте в
👉@bash_srv
Скрипт, который проверяет список сервисов и перезапускает их при необходимости.
#!/bin/bash
# автор: https://t.iss.one/bash_srv
# Список сервисов для проверки
services=("nginx" "mysql" "ssh")
for service in "${services[@]}"; do
if ! systemctl is-active --quiet "$service"; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - $service не работает. Перезапускаем..."
systemctl restart "$service"
# Можно отправить уведомление в Telegram или email
else
echo "$(date '+%Y-%m-%d %H:%M:%S') - $service работает."
fi
done
📌 Как использовать:
1. Сохраните скрипт, например, в
/usr/local/bin/service_check.sh
.2. Дайте права на выполнение:
chmod +x /usr/local/bin/service_check.sh
3. Добавьте в
cron
для регулярной проверки, например, каждые 5 минут:
*/5 * * * * /usr/local/bin/service_check.sh >> /var/log/service_check.log 2>&1
👉@bash_srv
👍8
🚀 Автоматическое обновление пакетов с логированием
Регулярные обновления системы — залог безопасности и стабильности.
Ниже скрипт, который обновляет пакеты и ведёт лог:
📌 Как использовать:
1. Сохраните скрипт, например,
2. Дайте права на выполнение:
3. Добавьте в cron для ежедневного запуска:
Теперь сервер будет обновляться сам, а все действия попадут в лог 📜
👉@bash_srv
Регулярные обновления системы — залог безопасности и стабильности.
Ниже скрипт, который обновляет пакеты и ведёт лог:
#!/bin/bash
# автор: https://t.iss.one/bash_srv
LOGFILE="/var/log/auto_update.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] Начало обновления" >> $LOGFILE
if command -v apt &>/dev/null; then
apt update >> $LOGFILE 2>&1
apt -y upgrade >> $LOGFILE 2>&1
elif command -v dnf &>/dev/null; then
dnf -y update >> $LOGFILE 2>&1
elif command -v yum &>/dev/null; then
yum -y update >> $LOGFILE 2>&1
else
echo "[$DATE] Неизвестный пакетный менеджер" >> $LOGFILE
exit 1
fi
echo "[$DATE] Обновление завершено" >> $LOGFILE
📌 Как использовать:
1. Сохраните скрипт, например,
/usr/local/bin/auto_update.sh
2. Дайте права на выполнение:
chmod +x /usr/local/bin/auto_update.sh
3. Добавьте в cron для ежедневного запуска:
0 3 * * * /usr/local/bin/auto_update.sh
Теперь сервер будет обновляться сам, а все действия попадут в лог 📜
👉@bash_srv
👍7🤔1
🔥 Мониторинг нагрузки на сервер
Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️
📌 Как использовать:
1. Сохраните в файл, например
2. Сделайте исполняемым:
3. Запускайте при необходимости:
Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀
👉@bash_srv
Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️
#!/bin/bash
# автор: https://t.iss.one/bash_srv
echo "=== Топ-5 процессов по CPU ==="
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 6
echo ""
echo "=== Топ-5 процессов по RAM ==="
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 6
📌 Как использовать:
1. Сохраните в файл, например
top_procs.sh
2. Сделайте исполняемым:
chmod +x top_procs.sh
3. Запускайте при необходимости:
./top_procs.sh
Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀
👉@bash_srv
👍7
🗓 27 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab».
🎯 На вебинаре разберем:
👥 Кому будет интересно:
- DevOps-инженерам, которые осваивают или уже используют GitLab CI и Ansible, и хотят связать их в единый, автоматизированный процесс
- Начинающим специалистам, изучающим инфраструктурный код и автоматизацию
- Техническим архитекторам, заинтересованным в построении масштабируемых и управляемых CI/CD процессов с Ansible
🎯 Что вы получите:
- Практическое понимание интеграции Ansible с GitLab CI
- Готовые идеи и примеры для запуска и тестирования Ansible-плейбуков
- Уверенность в использовании CI/CD пайплайнов для инфраструктурных задач и конфигурационного менеджмента
🔗 Ссылка на регистрацию: https://vk.cc/cOK226
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Быстрый поиск крупных файлов
Этот скрипт выведет 10 самых больших файлов в указанной директории:
📌 Использование:
Выведет список самых "тяжёлых" файлов в
Если директория не указана — скрипт проверит весь корень
👉@bash_srv
Этот скрипт выведет 10 самых больших файлов в указанной директории:
#!/bin/bash
# автор: https://t.iss.one/bash_srv
DIR=${1:-/}
echo "📂 Топ-10 самых больших файлов в $DIR"
du -ah "$DIR" 2>/dev/null | sort -rh | head -n 10
📌 Использование:
./bigfiles.sh /var/log
Выведет список самых "тяжёлых" файлов в
/var/log
.Если директория не указана — скрипт проверит весь корень
/
.👉@bash_srv
👍7❤2
🗂 Мониторинг размера логов
Иногда логи на сервере начинают разрастаться и быстро занимают место. Чтобы контролировать их размер, можно использовать небольшой bash-скрипт:
📌 Скрипт ищет все
🔧 Можно добавить в
👉@bash_srv
Иногда логи на сервере начинают разрастаться и быстро занимают место. Чтобы контролировать их размер, можно использовать небольшой bash-скрипт:
#!/bin/bash
# автор: https://t.iss.one/bash_srv
# каталог с логами
LOG_DIR="/var/log"
# максимальный размер файла (в мегабайтах)
MAX_SIZE=100
find "$LOG_DIR" -type f -name "*.log" | while read -r log; do
size=$(du -m "$log" | cut -f1)
if (( size > MAX_SIZE )); then
echo "⚠️ Лог $log превышает $MAX_SIZE MB (текущий размер: ${size}MB)"
fi
done
📌 Скрипт ищет все
.log
- файлы в каталоге /var/log
и проверяет их размер. Если размер превышает указанный порог (например, 100MB), выводит предупреждение.🔧 Можно добавить в
cron
, чтобы проверка выполнялась регулярно.👉@bash_srv
👍4
Иногда нужно быстро найти и подсветить все IPv4-адреса в логах или текстовых файлах. Для этого отлично подходит регулярное выражение +
🔎 Что здесь происходит:
📌 Чтобы сразу убрать дубликаты и отсортировать список IP:
Это удобно при анализе логов Nginx/Apache или при поиске подозрительных подключений.
👉@bash_srv
grep
.
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log
🔎 Что здесь происходит:
-E
— включает расширенные регулярки.-o
— выводит только совпадения, без остальной строки.([0-9]{1,3}\.){3}[0-9]{1,3}
— шаблон поиска IPv4-адреса.📌 Чтобы сразу убрать дубликаты и отсортировать список IP:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort -u
Это удобно при анализе логов Nginx/Apache или при поиске подозрительных подключений.
👉@bash_srv
👍7
🇷🇺 100% российская разработка
INFRAX — платформа all-in-one для управления ИТ-инфраструктурой:
✅ Мониторинг инфраструктуры (ITOM)
✅ Удаленный доступ для сотрудников и привилегированных пользователей
✅ Обработка заявок пользователей (ServiceDesk)
✅ База знаний с разграничением доступа к категориям (публичные и закрытые)
✅ Автоматизация (скрипты и планировщик)
✅ Контроль привилегированных пользователей. Видеозапись сессий RDP/SSH/VNC. (PAM)
✅ Управление доступами. Доступ ко всем корпоративным сервисам через одну учетку (IAM)
БЕСПЛАТНО до 100 пользователей! 🎁
👉 Попробовать INFRAX
Реклама. ООО «АУДИТ-ТЕЛЕКОМ», ОГРН 1167746696776, erid: 2Vtzqv8Ag74
INFRAX — платформа all-in-one для управления ИТ-инфраструктурой:
✅ Мониторинг инфраструктуры (ITOM)
✅ Удаленный доступ для сотрудников и привилегированных пользователей
✅ Обработка заявок пользователей (ServiceDesk)
✅ База знаний с разграничением доступа к категориям (публичные и закрытые)
✅ Автоматизация (скрипты и планировщик)
✅ Контроль привилегированных пользователей. Видеозапись сессий RDP/SSH/VNC. (PAM)
✅ Управление доступами. Доступ ко всем корпоративным сервисам через одну учетку (IAM)
БЕСПЛАТНО до 100 пользователей! 🎁
👉 Попробовать INFRAX
Реклама. ООО «АУДИТ-ТЕЛЕКОМ», ОГРН 1167746696776, erid: 2Vtzqv8Ag74
🤮3
🔥Проверяем, какие пользователи в системе имеют пароли, хранящиеся в зашифрованном виде, а какие — без пароля (например, системные учётки).
Для этого можно использовать такой однострочник:
🔍 Что делает скрипт:
Если оно не
Выводим имя пользователя и его хеш.
⚡ Полезно для аудита безопасности — можно быстро найти учётки с установленными паролями.
👉@bash_srv
Для этого можно использовать такой однострочник:
awk -F: '($2!="x" && $2!~"^!|^\\*"){print $1" -> "$2}' /etc/shadow
🔍 Что делает скрипт:
-F:
— указываем разделитель :
(так как /etc/shadow
имеет такой формат).$2
— это поле с паролем.Если оно не
x
, не *
и не !
, значит пароль реально задан.Выводим имя пользователя и его хеш.
⚡ Полезно для аудита безопасности — можно быстро найти учётки с установленными паролями.
👉@bash_srv
👍7❤2😱1
Узнаем, какие процессы занимают больше всего памяти
Для этого можно использовать комбинацию
📌 Разбор:
🔥 Если хотите сортировать по CPU, замените
👉@bash_srv
Для этого можно использовать комбинацию
ps
и sort
:
ps -eo pid,comm,%mem,%cpu --sort=-%mem | head -n 10
📌 Разбор:
ps -eo pid,comm,%mem,%cpu
— выводит PID, имя команды, процент памяти и CPU.--sort=-%mem
— сортировка по памяти (по убыванию).head -n 10
— показывает топ-10 процессов.🔥 Если хотите сортировать по CPU, замените
%mem
на %cpu
.👉@bash_srv
👍9
⚡Как узнать, какие порты слушает сервер
🔎 Разбор:
📡 Отличный способ быстро проверить, не слушает ли сервер «лишнее» и какие процессы занимают порты.
👉@bash_srv
ss -tulpen
🔎 Разбор:
-t
— TCP соединения-u
— UDP соединения-l
— только слушающие порты-p
— показывает процесс, который держит порт-e
— дополнительная информация-n
— не преобразует IP/порт в имена (быстрее)📡 Отличный способ быстро проверить, не слушает ли сервер «лишнее» и какие процессы занимают порты.
👉@bash_srv
👍11
🗓 10 сентября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab».
🎯 На вебинаре разберем:
👥 Кому будет интересно:
- Начинающим DevOps-инженерам — вы получите базовое понимание архитектуры GitLab и научитесь разворачивать его под разные задачи
- DevOps-практикам, которые уже используют GitLab и хотят повысить стабильность и отказоустойчивость
- Инженерам по внедрению CI/CD, которым важно понять, как масштабировать GitLab в корпоративной среде
🎯 Что вы получите:
- Понимание, как развернуть GitLab оптимально под свои задачи
- Понимание, как правильно выбрать среду (Docker vs Kubernetes) для развёртывания
- Практические советы по стабильности, резервированию и отказоустойчивости GitLab-инсталляций
🔗 Ссылка на регистрацию: https://vk.cc/cPbekj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📈Скрипт показывает, какие каталоги выросли с прошлого запуска
Скрипт ниже делает снимок размеров каталогов (через
- Быстрый запуск вручную:
- Повесить на cron (каждые 6 часов) и писать в syslog:
Хочешь логический размер файлов (как видит
💡 Начни с
👉@bash_srv
Скрипт ниже делает снимок размеров каталогов (через
du
), а при следующем запуске покажет топ приростов - кто вырос и на сколько.
#!/usr/bin/env bash
# автор: https://t.iss.one/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
👍6