ar
Feedback
Bash Советы

Bash Советы

الذهاب إلى القناة على Telegram

🚀 Секреты и советы по Bash 🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале. 🔹 Автоматизация, скрипты и оптимизация работы в Linux. 🔹 Стать мастером Bash легко – просто подпишись! По всем вопросам @evgenycarter

إظهار المزيد
2 747
المشتركون
-124 ساعات
-57 أيام
-1330 أيام
أرشيف المشاركات
Как быстро проверить, какие процессы занимают больше всего памяти или CPU? Вместо длинных top или htop, можно использовать ск
Как быстро проверить, какие процессы занимают больше всего памяти или CPU? Вместо длинных 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

Скрипт, который находит в логах все уникальные IP-адреса и подсчитывает, сколько раз каждый встречался. #!/bin/bash # Подсчёт
Скрипт, который находит в логах все уникальные IP-адреса и подсчитывает, сколько раз каждый встречался.

#!/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

Мониторинга логов в реальном времени Иногда нужно следить за логами, но обычный tail -f не всегда удобен. Ниже накидал скрипт
Мониторинга логов в реальном времени Иногда нужно следить за логами, но обычный 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

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

#!/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

🔥 Bash-совет дня Иногда нужно быстро найти и удалить все битые симлинки 🪤 в системе (или в конкретной папке). Вот простой с
🔥 Bash-совет дня Иногда нужно быстро найти и удалить все битые симлинки 🪤 в системе (или в конкретной папке). Вот простой скрипт:

#!/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

🚀 Подборка полезных 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 Свежие новости Москвы

🔥 Предупреждение о переполнении дисков + топ “пожирателей” места Данный ниже скрипт проверит заполнение всех ФС (кроме tmpfs
🔥 Предупреждение о переполнении дисков + топ “пожирателей” места Данный ниже скрипт проверит заполнение всех ФС (кроме 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

📈Скрипт показывает, какие каталоги выросли с прошлого запуска Скрипт ниже делает снимок размеров каталогов (через 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

🚀 Подборка полезных 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 Свежие новости Москвы

⚡Как узнать, какие порты слушает сервер ss -tulpen 🔎 Разбор: -t — TCP соединения -u — UDP соединения -l — только слушающие п
⚡Как узнать, какие порты слушает сервер

ss -tulpen
🔎 Разбор: -t — TCP соединения -u — UDP соединения -l — только слушающие порты -p — показывает процесс, который держит порт -e — дополнительная информация -n — не преобразует IP/порт в имена (быстрее) 📡 Отличный способ быстро проверить, не слушает ли сервер «лишнее» и какие процессы занимают порты. 📲 Мы в MAX 👉@bash_srv

Узнаем, какие процессы занимают больше всего памяти Для этого можно использовать комбинацию ps и sort: ps -eo pid,comm,%mem,%
Узнаем, какие процессы занимают больше всего памяти Для этого можно использовать комбинацию 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

🔥Проверяем, какие пользователи в системе имеют пароли, хранящиеся в зашифрованном виде, а какие — без пароля (например, сист
🔥Проверяем, какие пользователи в системе имеют пароли, хранящиеся в зашифрованном виде, а какие — без пароля (например, системные учётки). Для этого можно использовать такой однострочник:

awk -F: '($2!="x" && $2!~"^!|^\\*"){print $1" -> "$2}' /etc/shadow
🔍 Что делает скрипт: -F: — указываем разделитель : (так как /etc/shadow имеет такой формат). $2 — это поле с паролем. Если оно не x, не * и не !, значит пароль реально задан. Выводим имя пользователя и его хеш. ⚡ Полезно для аудита безопасности — можно быстро найти учётки с установленными паролями. 📲 Мы в MAX 👉@bash_srv

Иногда нужно быстро найти и подсветить все IPv4-адреса в логах или текстовых файлах. Для этого отлично подходит регулярное вы
Иногда нужно быстро найти и подсветить все IPv4-адреса в логах или текстовых файлах. Для этого отлично подходит регулярное выражение + 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 или при поиске подозрительных подключений. 📲 Мы в MAX 👉@bash_srv

🚀 Подборка полезных 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 и др. 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 Свежие новости Москвы

🔥 Быстрый поиск крупных файлов Этот скрипт выведет 10 самых больших файлов в указанной директории: #!/bin/bash # автор: http
🔥 Быстрый поиск крупных файлов Этот скрипт выведет 10 самых больших файлов в указанной директории:

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

DIR=${1:-/}

echo "📂 Топ-10 самых больших файлов в $DIR"
du -ah "$DIR" 2>/dev/null | sort -rh | head -n 10
📌 Использование:

./bigfiles.sh /var/log
Выведет список самых "тяжёлых" файлов в /var/log. Если директория не указана — скрипт проверит весь корень /. 📲 Мы в MAX 👉@bash_srv

🔥 Мониторинг нагрузки на сервер Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выво
🔥 Мониторинг нагрузки на сервер Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️

#!/bin/bash
# автор: https://t.me/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
   
Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀 📲 Мы в MAX 👉@bash_srv

🚀 Автоматическое обновление пакетов с логированием Регулярные обновления системы — залог безопасности и стабильности. Ниже с
🚀 Автоматическое обновление пакетов с логированием Регулярные обновления системы — залог безопасности и стабильности. Ниже скрипт, который обновляет пакеты и ведёт лог:

#!/bin/bash
# автор: https://t.me/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
   
Теперь сервер будет обновляться сам, а все действия попадут в лог 📜 📲 Мы в MAX 👉@bash_srv

🔥 Автоматическая проверка и перезапуск упавших сервисов Скрипт, который проверяет список сервисов и перезапускает их при нео
🔥 Автоматическая проверка и перезапуск упавших сервисов Скрипт, который проверяет список сервисов и перезапускает их при необходимости.

#!/bin/bash
# автор: https://t.me/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
   
📲 Мы в MAX 👉@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
   
📲 Мы в MAX 👉@bash_srv

🚀 Быстрое резервное копирование с датой в имени файла Часто нужно сделать резервную копию файла или каталога, но чтобы не пе
🚀 Быстрое резервное копирование с датой в имени файла Часто нужно сделать резервную копию файла или каталога, но чтобы не перезаписать старую - лучше добавить в имя дату и время. Ниже скрипт:

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

# Что копируем
SOURCE="/etc/nginx/nginx.conf"

# Куда сохраняем
BACKUP_DIR="/backup"

# Создаем каталог, если его нет
mkdir -p "$BACKUP_DIR"

# Имя файла с датой
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILENAME=$(basename "$SOURCE")
cp "$SOURCE" "$BACKUP_DIR/${FILENAME}_${DATE}"

echo "✅ Резервная копия создана: $BACKUP_DIR/${FILENAME}_${DATE}"
💡 Как использовать: - Поменяйте SOURCE на свой файл или каталог. - Можно добавить в cron, чтобы резервная копия делалась автоматически. 🛠 Пример для cron (каждый день в 3 ночи):
0 3 * * * /path/to/backup.sh
📂 Теперь у вас всегда будут версии с точным временем создания! 📲 Мы в MAX 👉@bash_srv