🔥Проверяем, какие пользователи в системе имеют пароли, хранящиеся в зашифрованном виде, а какие — без пароля (например, системные учётки).
Для этого можно использовать такой однострочник:
🔍 Что делает скрипт:
Если оно не
Выводим имя пользователя и его хеш.
⚡ Полезно для аудита безопасности — можно быстро найти учётки с установленными паролями.
📲 Мы в MAX
👉@bash_srv
Для этого можно использовать такой однострочник:
awk -F: '($2!="x" && $2!~"^!|^\\*"){print $1" -> "$2}' /etc/shadow
🔍 Что делает скрипт:
-F: — указываем разделитель : (так как /etc/shadow имеет такой формат).$2 — это поле с паролем.Если оно не
x, не * и не !, значит пароль реально задан.Выводим имя пользователя и его хеш.
⚡ Полезно для аудита безопасности — можно быстро найти учётки с установленными паролями.
📲 Мы в MAX
👉@bash_srv
👍3🔥1
Узнаем, какие процессы занимают больше всего памяти
Для этого можно использовать комбинацию
📌 Разбор:
🔥 Если хотите сортировать по CPU, замените
📲 Мы в MAX
👉@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.📲 Мы в MAX
👉@bash_srv
👍3
⚡Как узнать, какие порты слушает сервер
🔎 Разбор:
📡 Отличный способ быстро проверить, не слушает ли сервер «лишнее» и какие процессы занимают порты.
📲 Мы в MAX
👉@bash_srv
ss -tulpen
🔎 Разбор:
-t — TCP соединения-u — UDP соединения-l — только слушающие порты-p — показывает процесс, который держит порт-e — дополнительная информация-n — не преобразует IP/порт в имена (быстрее)📡 Отличный способ быстро проверить, не слушает ли сервер «лишнее» и какие процессы занимают порты.
📲 Мы в MAX
👉@bash_srv
👍5
🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
MAX
Системный Администратор | Sysadmin Windows & Linux Server. …
Купить рекламу: https://telega.in/m/i_odmin
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
💩5🤡4👍1👎1🖕1
📈Скрипт показывает, какие каталоги выросли с прошлого запуска
Скрипт ниже делает снимок размеров каталогов (через
- Быстрый запуск вручную:
- Повесить на cron (каждые 6 часов) и писать в syslog:
Хочешь логический размер файлов (как видит
💡 Начни с
📲 Мы в MAX
👉@bash_srv
Скрипт ниже делает снимок размеров каталогов (через
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 для обзора верхних уровней, потом точечно спускайся глубже по «подозрительным» каталогам.📲 Мы в MAX
👉@bash_srv
👍2🔥2
🔥 Предупреждение о переполнении дисков + топ “пожирателей” места
Данный ниже скрипт проверит заполнение всех ФС (кроме tmpfs/devtmpfs/squashfs/overlay), и если порог превышен - пришлёт сводку с ТОП директориями по размеру. Поддерживает уведомления в Telegram (через Bot API) или просто вывод в консоль.
Функционал
✅ Проверяет все реальные файловые системы
✅ Порог заполнения настраивается (
✅ Показывает TOP-N самых “тяжёлых” директорий на проблемном разделе (
✅ Исключения по mountpoint через
✅ Уведомления в Telegram, если задать
Установка
Примеры запуска
- Раз в 15 минут, тревожим после 90%, показываем TOP-3 и шлём в Telegram:
- Исключаем Docker и снапшоты:
- Для больших ФС
- Хотите человеческие единицы? Замените
- Если сервер за NAT/без выхода в интернет - уведомления уйдут в stdout и попадут в системную почту cron.
📲 Мы в MAX
👉@bash_srv
Данный ниже скрипт проверит заполнение всех ФС (кроме tmpfs/devtmpfs/squashfs/overlay), и если порог превышен - пришлёт сводку с ТОП директориями по размеру. Поддерживает уведомления в Telegram (через Bot API) или просто вывод в консоль.
Функционал
✅ Проверяет все реальные файловые системы
✅ Порог заполнения настраивается (
THRESHOLD, по умолчанию 85%)✅ Показывает TOP-N самых “тяжёлых” директорий на проблемном разделе (
TOPN, по умолчанию 5)✅ Исключения по mountpoint через
EXCLUDE_REGEX (например, Docker)✅ Уведомления в Telegram, если задать
TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID
#!/usr/bin/env bash
# автор: https://t.me/bash_srv
set -Eeuo pipefail
# Настройки (можно переопределять переменными окружения)
THRESHOLD="${THRESHOLD:-85}" # % использования ФС, начиная с которого тревожим
TOPN="${TOPN:-5}" # сколько топ-директорий показать
EXCLUDE_REGEX="${EXCLUDE_REGEX:-^(/sys|/proc|/run|/snap|/var/lib/docker|/var/lib/containers)}"
# Исключаем псевдо-ФС
DF_TYPES=(-x tmpfs -x devtmpfs -x squashfs -x overlay)
notify() {
local msg="$1"
if [[ -n "${TELEGRAM_BOT_TOKEN:-}" && -n "${TELEGRAM_CHAT_ID:-}" ]]; then
curl -sS -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d "chat_id=${TELEGRAM_CHAT_ID}" \
--data-urlencode "text=${msg}" >/dev/null || true
else
echo "$msg"
fi
}
alerts=()
# Читаем: <mountpoint> <use%>
while read -r mnt use; do
[[ "$mnt" =~ $EXCLUDE_REGEX ]] && continue
use="${use%\%}"
if (( use >= THRESHOLD )); then
# du в мегабайтах по границам ФС (-x), глубина 1, сортировка по размеру
top=$(du -x -m --max-depth=1 "$mnt" 2>/dev/null | sort -nr | head -n "$TOPN" \
| awk '{printf " %6d MB %s\n",$1,$2}')
alerts+=("⚠️ ФС $mnt занята на ${use}%%. Топ ${TOPN} директорий:\n${top}")
fi
done < <(df -P "${DF_TYPES[@]}" | awk 'NR>1{print $(NF), $(NF-1)}')
if ((${#alerts[@]})); then
host=$(hostname -f 2>/dev/null || hostname)
ts=$(date '+%F %T %Z')
msg="🚨 Диск почти заполнен: ${host}\n${ts}\nПорог: ${THRESHOLD}%%\n\n$(printf "%s\n\n" "${alerts[@]}")"
notify "$msg"
else
echo "✅ Все файловые системы ниже ${THRESHOLD}%."
fi
Установка
sudo install -m 0755 df_guard.sh /usr/local/bin/df_guard.sh
Примеры запуска
- Раз в 15 минут, тревожим после 90%, показываем TOP-3 и шлём в Telegram:
# В crontab (root)
*/15 * * * * THRESHOLD=90 TOPN=3 TELEGRAM_BOT_TOKEN=123:ABC TELEGRAM_CHAT_ID=123456 \
nice -n 10 ionice -c3 /usr/local/bin/df_guard.sh
- Исключаем Docker и снапшоты:
EXCLUDE_REGEX='^(/var/lib/docker|/mnt/snapshots)' df_guard.sh
- Для больших ФС
du может крутиться дольше - добавьте nice/ionice, как в примере.- Хотите человеческие единицы? Замените
-m на -h и уберите выравнивание в awk.- Если сервер за NAT/без выхода в интернет - уведомления уйдут в stdout и попадут в системную почту cron.
📲 Мы в MAX
👉@bash_srv
👍4🔥1
🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
MAX
Системный Администратор | Sysadmin Windows & Linux Server. …
Купить рекламу: https://telega.in/m/i_odmin
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
👎3🤮3💩2
🔥 Bash-совет дня
Иногда нужно быстро найти и удалить все битые симлинки 🪤 в системе (или в конкретной папке). Вот простой скрипт:
🔎 Объяснение:
⚠️ Если хотите сначала просто посмотреть список битых ссылок без удаления:
Так можно быстро почистить систему от мусора и навести порядок 🧹
📲 Мы в MAX
👉@bash_srv
Иногда нужно быстро найти и удалить все битые симлинки 🪤 в системе (или в конкретной папке). Вот простой скрипт:
#!/bin/bash
# Поиск и удаление битых символических ссылок
find / -xtype l -print -delete 2>/dev/null
🔎 Объяснение:
find / -xtype l — ищет все символические ссылки, которые указывают «в никуда»;-print - выводит их на экран (чтобы видеть, что удаляется);-delete - сразу удаляет найденные битые ссылки;2>/dev/null - скрывает лишние ошибки (например, "нет доступа").⚠️ Если хотите сначала просто посмотреть список битых ссылок без удаления:
find / -xtype l 2>/dev/null
Так можно быстро почистить систему от мусора и навести порядок 🧹
📲 Мы в MAX
👉@bash_srv
👍5🔥3
🧯 Освобождаем место: «удалённые, но открытые» файлы
Когда логи удалили, а место не вернулось - виноваты процессы, держащие дескрипторы удалённых файлов. Вот скрипт, который находит таких «пожирателей» и показывает, что можно обнулить.
🧪 Пример
Выводит таблицу вида:
🧹 Как безопасно освободить место (без перезапуска сервиса)
1. Найдите строку с нужным PID и FD (например,
2. Обнулите файл у процесса (уберите буквы из FD - остаётся число):
🔐 Альтернатива (более щадяще): перезапустить соответствующий сервис
ℹ️ Полезные заметки
- Требуется
- Порог можно задавать как
- Не удаляйте повторно сами файлы на диске — они уже помечены как удалённые; место держит именно процесс.
- Для контейнеров Docker заходите внутрь:
📲 Мы в MAX
👉@bash_srv
Когда логи удалили, а место не вернулось - виноваты процессы, держащие дескрипторы удалённых файлов. Вот скрипт, который находит таких «пожирателей» и показывает, что можно обнулить.
#!/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
Мониторинга логов в реальном времени
Иногда нужно следить за логами, но обычный
📌 Можно изменить путь к файлу лога (
Очень удобно, когда нужно быстро отследить проблемные записи в логах.
📲 Мы в MAX
👉@bash_srv
Иногда нужно следить за логами, но обычный
tail -f не всегда удобен. Ниже накидал скрипт, который подсвечивает ошибки и предупреждения разными цветами:
#!/bin/bash
# автор: https://t.me/bash_srv
LOGFILE="/var/log/syslog"
tail -Fn0 "$LOGFILE" | \
while read line; do
if echo "$line" | grep -q "ERROR"; then
echo -e "\e[31m$line\e[0m" # красный для ошибок
elif echo "$line" | grep -q "WARN"; then
echo -e "\e[33m$line\e[0m" # жёлтый для предупреждений
else
echo "$line"
fi
done
📌 Можно изменить путь к файлу лога (
LOGFILE) и ключевые слова (ERROR, WARN) под свои нужды.Очень удобно, когда нужно быстро отследить проблемные записи в логах.
📲 Мы в MAX
👉@bash_srv
👍8❤1🔥1
Скрипт, который находит в логах все уникальные IP-адреса и подсчитывает, сколько раз каждый встречался.
🔍 Что делает скрипт:
-
-
-
-
-
💡Будет полезн для быстрого анализа DDoS или частых запросов от конкретных клиентов.
📲 Мы в MAX
👉@bash_srv
#!/bin/bash
# Подсчёт уникальных IP-адресов в логах
# автор: https://t.me/bash_srv
LOGFILE="/var/log/nginx/access.log"
awk '{print $1}' "$LOGFILE" | sort | uniq -c | sort -nr | head -20
🔍 Что делает скрипт:
-
awk '{print $1}' — вытаскивает первый столбец (обычно IP).-
sort — сортирует все IP.-
uniq -c — считает количество повторений.-
sort -nr — сортировка по числу в обратном порядке.-
head -20 — показывает топ-20 самых активных IP.💡Будет полезн для быстрого анализа DDoS или частых запросов от конкретных клиентов.
📲 Мы в MAX
👉@bash_srv
👍5🔥3❤1
Как быстро проверить, какие процессы занимают больше всего памяти или CPU?
Вместо длинных
🔍 Что делает скрипт:
📌 Если хотите отсортировать по CPU - замените
Удобно для быстрой диагностики «прожорливых» процессов без лишних инструментов! ⚡
📲 Мы в MAX
👉@bash_srv
Вместо длинных
top или htop, можно использовать скрипт ниже.
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 15
🔍 Что делает скрипт:
ps -eo ... - выводит список процессов с PID, PPID, командой, % памяти и CPU.--sort=-%mem - сортировка по памяти (от большего к меньшему).head -n 15 - показываем только топ-15 процессов.📌 Если хотите отсортировать по CPU - замените
%mem на %cpu:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 15
Удобно для быстрой диагностики «прожорливых» процессов без лишних инструментов! ⚡
📲 Мы в MAX
👉@bash_srv
👍5❤2🔥1
Чтобы быстро проверить соединение с набором хостов, можно использовать след. скрипт
🔧 Можно добавить свои сервера в список и за пару секунд проверить доступность.
📲 Мы в MAX
👉@bash_srv
#!/bin/bash
for host in server1.example.com server2.example.com 8.8.8.8; do
if ping -c1 -W1 "$host" &>/dev/null; then
echo "✅ $host доступен"
else
echo "❌ $host недоступен"
fi
done
🔧 Можно добавить свои сервера в список и за пару секунд проверить доступность.
📲 Мы в MAX
👉@bash_srv
👍6
Если вам часто приходится искать файлы по содержимому, то для этого есть мощная связка
Например, чтобы найти все файлы с текстом "ERROR" в
📌 А если хотите искать рекурсивно по каталогу проще, используйте
✨ Добавим подсветку совпадений:
Теперь нужные строки будут выделяться цветом
📲 Мы в MAX
👉@bash_srv
grep + find 🔍Например, чтобы найти все файлы с текстом "ERROR" в
/var/log:
find /var/log -type f -exec grep -H "ERROR" {} \;
📌 А если хотите искать рекурсивно по каталогу проще, используйте
grep -r:
grep -r "ERROR" /var/log
✨ Добавим подсветку совпадений:
grep --color=always -r "ERROR" /var/log
Теперь нужные строки будут выделяться цветом
📲 Мы в MAX
👉@bash_srv
👍6🔥3
Как быстро найти и удалить пустые директории
Иногда в системах с большим количеством файлов и директорий накапливаются пустые папки. Вот простой способ найти и удалить их одним махом:
🔍 Разбор:
-
-
-
-
🛡 Важно:
Перед удалением рекомендую посмотреть, что именно будет удалено:
📲 Мы в MAX
👉@bash_srv
Иногда в системах с большим количеством файлов и директорий накапливаются пустые папки. Вот простой способ найти и удалить их одним махом:
find /path/to/search -type d -empty -delete
🔍 Разбор:
-
/path/to/search — укажи директорию, где искать.-
-type d — ищем только директории.-
-empty — фильтруем только пустые.-
-delete — удаляем найденные.🛡 Важно:
Перед удалением рекомендую посмотреть, что именно будет удалено:
find /path/to/search -type d -empty
📲 Мы в MAX
👉@bash_srv
👍5
📁Как отрезать расширение у файла в Bash
📌 Что тут происходит:
-
👀 Примеры:
Если хочешь убрать все расширения (в т.ч.
🧠 Под капотом:
-
-
Мощно и без внешних команд! 🚀
📲 Мы в MAX
👉@bash_srv
filename="example.txt"
name="${filename%.*}"
echo "$name"
📌 Что тут происходит:
-
${filename%.*} — удаляет последнюю точку и всё после неё, то есть расширение.👀 Примеры:
filename="backup.tar.gz"
name="${filename%.*}" # Результат: backup.tar
Если хочешь убрать все расширения (в т.ч.
.tar.gz), можно использовать вот так:
filename="backup.tar.gz"
name="${filename%%.*}" # Результат: backup
🧠 Под капотом:
-
%.* — удаляет самую правую точку и всё после.-
%%.* — удаляет самую левую точку и всё после.Мощно и без внешних команд! 🚀
📲 Мы в MAX
👉@bash_srv
👍6
🛡 Проверка SSL-сертификатов с помощью Bash
Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот удобный однострочник на Bash, который покажет дату окончания действия сертификата:
📆 Чтобы получить только оставшиеся дни до окончания:
🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!
📲 Мы в MAX
👉@bash_srv
Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот удобный однострочник на Bash, который покажет дату окончания действия сертификата:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates | grep notAfter
📆 Чтобы получить только оставшиеся дни до окончания:
end_date=$(echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)
end_ts=$(date -d "$end_date" +%s)
now_ts=$(date +%s)
echo "Осталось дней: $(( (end_ts - now_ts) / 86400 ))"
🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!
📲 Мы в MAX
👉@bash_srv
👍6❤1
🚀 Утилита
Когда ты запускаешь какую-то команду, и она может зависнуть - это беда. Особенно в скриптах. На помощь приходит утилита
Пример использования:
Эта команда завершит
Можно задать время в секундах (
Что произойдёт при превышении тайм-аута?
По умолчанию
Изменение сигнала:
Проверка кода возврата:
📲 Мы в MAX
👉@bash_srv
timeout: автоматическое завершение зависших команд Когда ты запускаешь какую-то команду, и она может зависнуть - это беда. Особенно в скриптах. На помощь приходит утилита
timeout из пакета coreutils.Пример использования:
timeout 30s ./backup.sh
Эта команда завершит
./backup.sh, если она не завершится за 30 секунд.Можно задать время в секундах (
s), минутах (m), часах (h) и даже днях (d).Что произойдёт при превышении тайм-аута?
По умолчанию
timeout отправляет сигнал SIGTERM, а через 5 секунд - SIGKILL, если процесс всё ещё жив.Изменение сигнала:
timeout -s SIGINT 10s ./script.sh
Проверка кода возврата:
if timeout 5s ./some_command; then
echo "Успешно"
else
echo "Команда завершена по таймауту или с ошибкой"
fi
📲 Мы в MAX
👉@bash_srv
👍6❤1🔥1
Отключаем историю Bash (~/.bash_history)
🔒Отключение истории в текущей сессии
Просто обнуляем переменные истории:
💥 После этого Bash не будет сохранять историю вообще. Даже после выхода из сессии.
🧼 Стереть историю прямо сейчас
🔁 Отключить навсегда (для пользователя)
Добавь в ~/.bashrc или ~/.bash_profile:
📌 После перезапуска оболочки история вестись не будет.
🧙 Дополнительно (опционально)
Чтобы Bash не пытался писать историю на выходе:
💡Без истории сложнее откатить действия, иногда это нужно.
📲 Мы в MAX
👉@bash_srv
🔒Отключение истории в текущей сессии
Просто обнуляем переменные истории:
unset HISTFILE
export HISTSIZE=0
export HISTFILESIZE=0
💥 После этого Bash не будет сохранять историю вообще. Даже после выхода из сессии.
🧼 Стереть историю прямо сейчас
history -c # очистить историю из памяти
> ~/.bash_history # стереть файл истории
🔁 Отключить навсегда (для пользователя)
Добавь в ~/.bashrc или ~/.bash_profile:
export HISTFILE=
export HISTSIZE=0
export HISTFILESIZE=0
📌 После перезапуска оболочки история вестись не будет.
🧙 Дополнительно (опционально)
Чтобы Bash не пытался писать историю на выходе:
unset HISTFILE
trap "" EXIT
💡Без истории сложнее откатить действия, иногда это нужно.
📲 Мы в MAX
👉@bash_srv
👍3🔥2
🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
MAX
Системный Администратор | Sysadmin Windows & Linux Server. …
Купить рекламу: https://telega.in/m/i_odmin
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Раб…
👎3🗿1
📌 Регулярки - ищем email-адреса в тексте
Если необходимо быстро вытащить email-адреса из логов или текстов, скрипт ниже для вас.
Примеры использования:
Оно находит валидные email'ы вроде:
-
-
⚙️ Флаг
📲 Мы в MAX
👉@bash_srv
Если необходимо быстро вытащить email-адреса из логов или текстов, скрипт ниже для вас.
grep -Eo '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
Примеры использования:
cat файл.txt | grep -Eo '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
Оно находит валидные email'ы вроде:
-
support@domain.com-
test.user+admin@sub.domain.co⚙️ Флаг
-o в grep выводит только совпадения, без строк целиком.📲 Мы в MAX
👉@bash_srv
👍6🔥1