uz
Feedback
Bash Советы

Bash Советы

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
2 750
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
-1130 kunlar
Postlar arxiv
📁Как отрезать расширение у файла в Bash filename="example.txt" name="${filename%.*}" echo "$name" 📌 Что тут происходит: - $
📁Как отрезать расширение у файла в Bash

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

Как быстро найти и удалить пустые директории Иногда в системах с большим количеством файлов и директорий накапливаются пустые
Как быстро найти и удалить пустые директории Иногда в системах с большим количеством файлов и директорий накапливаются пустые папки. Вот простой способ найти и удалить их одним махом:

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

Если вам часто приходится искать файлы по содержимому, то для этого есть мощная связка grep + find 🔍 Например, чтобы найти в
Если вам часто приходится искать файлы по содержимому, то для этого есть мощная связка 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

Чтобы быстро проверить соединение с набором хостов, можно использовать след. скрипт #!/bin/bash for host in server1.example.c
Чтобы быстро проверить соединение с набором хостов, можно использовать след. скрипт

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

Как быстро проверить, какие процессы занимают больше всего памяти или 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