Bash Советы
2.75K subscribers
192 photos
7 videos
93 links
🚀 Секреты и советы по Bash

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

По всем вопросам @evgenycarter
Download Telegram
🚀 Подборка полезных 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 Свежие новости Москвы
👎3🤮3💩2
🔥 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
👍5🔥3
🧯 Освобождаем место: «удалённые, но открытые» файлы

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


#!/usr/bin/env bash
# автор: https://xn--r1a.website/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
Мониторинга логов в реальном времени

Иногда нужно следить за логами, но обычный tail -f не всегда удобен. Ниже накидал скрипт, который подсвечивает ошибки и предупреждения разными цветами:


#!/bin/bash
# автор: https://xn--r1a.website/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
👍81🔥1
Скрипт, который находит в логах все уникальные IP-адреса и подсчитывает, сколько раз каждый встречался.


#!/bin/bash
# Подсчёт уникальных IP-адресов в логах
# автор: https://xn--r1a.website/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🔥31
Как быстро проверить, какие процессы занимают больше всего памяти или 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
👍52🔥1
Чтобы быстро проверить соединение с набором хостов, можно использовать след. скрипт


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

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


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


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, который покажет дату окончания действия сертификата:


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
👍61
🚀 Утилита 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
👍61🔥1
Отключаем историю Bash (~/.bash_history)

🔒Отключение истории в текущей сессии

Просто обнуляем переменные истории:


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://xn--r1a.website/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 Питер Новости: Санкт-Петербург / СПБ / ДТП
👎3🗿1
📌 Регулярки - ищем email-адреса в тексте

Если необходимо быстро вытащить 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
🧠 Логи — Самые частые IP-адреса в access.log

Когда нужно быстро понять, кто чаще всего лупит по серверу — вот простой однострочник:


awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head


🔍 Что делает:
1. awk '{print $1}' — вытаскивает IP из первой колонки.
2. sort и uniq -c — считает повторы.
3. sort -nr | head — выводит топ-10 по частоте.

📊 Вывод будет примерно такой:

152 192.168.1.10
103 203.0.113.45
87 172.16.0.5


🔥 Подходит для NGINX, Apache и других web-логов с классическим форматом.

📲 Мы в MAX

👉@bash_srv
👍4🔥1
🚀 Очистка кэша пакетного менеджера APT

Иногда кэш пакетов APT разрастается и занимает лишнее место. Ниже написал простой скрипт, который поможет автоматизировать очистку и освободить дисковое пространство 💾


#!/bin/bash

# Очищаем кэш APT
echo "🧼 Очистка кэша APT..."
sudo apt clean
sudo apt autoclean

# Удаляем неиспользуемые пакеты
echo "🗑 Удаление неиспользуемых пакетов..."
sudo apt autoremove -y

# Отчёт о свободном месте
echo "📊 Свободное место после очистки:"
df -h /


📌 Как использовать:
1. Сохрани как clean_apt.sh
2. Сделай исполняемым: chmod +x clean_apt.sh
3. Запускай по необходимости или добавь в cron

📲 Мы в MAX

👉@bash_srv
👍5😁1💩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 Типичный Сисадмин

Excel лайфхак 📌
https://xn--r1a.website/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 Питер Новости: Санкт-Петербург / СПБ / ДТП
💩3👍1
🚀 Bash-совет дня: Быстрый мониторинг TCP/UDP портов

Иногда нужно оперативно узнать, какие порты слушает сервер и какие подключения активны. Вот простой однострочник, который поможет:


sudo ss -tunlp


📌 Пояснение ключей:
- -t — TCP
- -u — UDP
- -n — не разрешать имена хостов и портов (быстрее)
- -l — только слушающие сокеты
- -p — показать PID и имя процесса

🔍 Хочешь отсортировать по порту или найти конкретный? Добавь grep:

sudo ss -tunlp | grep 8080


🎯 Альтернатива на случай, если нет ss:

sudo netstat -tunlp


Полезно для отладки фаервола, проверки работы сервисов или просто для уверенности, что сервер не слушает ничего лишнего 😉

📲 Мы в MAX

👉@bash_srv
👍2🔥1
⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код.

🎥 Приглашаем на вебинар - Продвинутый Bash

На вебинаре вы узнаете:
- Связка set -euo pipefail навсегда исключит тихое проглатывание ошибок и потерю данных в конвейерах.
- Нативные подстановки Bash заменят тысячи ресурсоемких вызовов sed и сэкономят CPU.
- Регулярный мониторинг системных профилей защитит продакшен от перехвата команд троянами.
- Грамотный перехват сигналов через trap обеспечит безопасное сворачивание процессов при сбоях.

В результате вебинара вы:
- Замените многоуровневые костыли лаконичной логикой на базе ассоциативных массивов.
- Исключите утечки глобальных переменных через жесткую изоляцию областей видимости в функциях.
- Внедрите нативную построчную трассировку скриптов вместо примитивного дебага echo-принтами.
- Начнете напрямую пробрасывать переменные окружения в SystemD-юниты для надежного старта сервисов.

🧠 Открытый урок проходит в преддверии старта курса «Администратор Linux. Продвинутый уровень»

👉 Для участи зарегистрируйтесь: https://vk.cc/cYnpiY

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1