🐧Linux для админов и DevOps
182 subscribers
2 photos
1 file
9 links
Практика Linux, серверов, Bash, Docker, Ansible, Kubernetes, мониторинга и DevOps.
Без воды: команды, разборы ошибок, шпаргалки и реальные кейсы для админов.

По всем вопросам: @Kostyan_00
Download Telegram
🔥 SSH Config: Один файл, который экономит 10 минут в день

Что это вообще такое?

SSH config — это конфигурационный файл (~/.ssh/config), который хранит настройки подключения к серверам. Вместо того чтобы каждый раз вбивать длинные команды с IP, портами, ключами и пользователями — вы один раз прописываете параметры и дальше подключаетесь по короткому алиасу.

🧲Как это выглядело раньше (боль и страдания)
Допустим, у вас есть сервер на удалённой машине:
ssh root@192.168.1.100 -p 2222 -i ~/.ssh/prod_key

А если серверов три? А пять? А если вы забыли, какой ключ к какому серверу? Приходится лезть в историю команд, искать, вспоминать... Потеря времени и нервов.

💣Как это работает с SSH Config
Создаёте файл ~/.ssh/config (если его нет) и пишете:
Host prod
HostName 192.168.1.100
User root
Port 2222
IdentityFile ~/.ssh/prod_key

Host stage
HostName 192.168.1.101
User deploy

Всё. Дальше заходите одной короткой командой:
ssh prod
ssh stage

🚀Работа с серверами превращается из "боли и гугления" в "пара секунд". Экономия времени — колоссальная, рекомендую всем, кто работает с удалёнными машинами.
👍10
🔥 Пинг не проходит — не факт, что сервер упал
ICMP может быть заблокирован файрволом. Проверяйте порты напрямую:
▶️ Netcat
nc -zv 192.168.1.100 22

Где:
-z — режим сканирования без передачи данных
-v — подробный вывод
192.168.1.100 — IP-адрес сервера
22 — порт SSH
Если увидите succeeded! — сервер жив и служба работает.

▶️Bash (без установки утилит)

timeout 2 bash -c 'echo > /dev/tcp/192.168.1.100/22 && echo "Порт открыт"'

Где:
timeout 2 — прервать попытку через 2 секунды, если нет ответа
/dev/tcp/192.168.1.100/22 — встроенный механизм Bash для TCP-соединения
&& echo "Порт открыт" — выведет сообщение только при успешном подключении
✏️Запомните: пинг — это вежливость, порты — это реальность.
👌3👍2
🔥 SSH отвалился, а команда не доделалась — больше никаких потерь
Знакомая боль: запустил apt upgrade, ушёл пить кофе, вернулся — SSH отвалился. Команда оборвалась на середине. И ты такой сидишь и думаешь: «ну и зачем я вообще уходил».

Вот что нужно делать перед любой долгой командой:
nohup apt upgrade -y > upgrade.log 2>&1 &

Всё. Процесс теперь живёт своей жизнью — независимо от вашего соединения. Закройте ноутбук, идите спать, возвращайтесь когда хотите.
🏆Что здесь происходит: — nohup говорит процессу игнорировать обрыв сессии — & отправляет его в фон — > upgrade.log 2>&1 пишет весь вывод в файл
💡Вернулся — проверил:
ps aux | grep apt        # живёт ли процесс
tail -f upgrade.log # что там происходит

Работает с чем угодно: деплои, компиляция, бэкапы, скрипты на несколько часов.

#linux #bash #devops #tips
👍41
🔥 Docker захламил сервер — чистим множество ГБ за 10 секунд
Со временем Docker копит мусор: остановленные контейнеры, висящие образы, кэш сборок.
Одна команда — полная уборка:
docker system prune -af

😳Мой результат только что был вот такой:
Total reclaimed space: 2.957GB

Удалится всё, что не запущено прямо сейчас.
💡 Осторожно: если в контейнерах были важные данные (БД, файлы) — сначала сохрани их. Эта команда не щадит никого.
👍51
🔥 SSH не подключается? Хватит гадать — включите отладку
Вы сидите, смотрите в чёрный терминал и не понимаете: почему ssh user@server молчит или выдаёт ту самую ошибку?
Руки тянутся проверить настройки сервера, порты, файрвол… Стоп. Есть более быстрый путь — включить отладку.
Команда-спасение
ssh -v user@server

Вывод покажет каждый шаг подключения. Смотрите внимательно:
 Offering public key: ... — ваш ключ отправлен
 Authentication succeeded — всё, вы внутри
 Permission denied (publickey) — ключ не подошёл
Если хотите совсем детально (увидеть даже отвергнутые ключи) — добавьте ещё два v:
ssh -vvv user@server

Самая частая причина
🔐 Права доступа. SSH — параноик. Сделайте раз и навсегда:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*

Больше не придётся гадать — отладка покажет истину.
🏆Сохраните себе, пригодится
4🔥1
🔥 Сайт не открывается? Хватит гадать — проверьте сеть
Вы сидите, браузер грузит, а результата нет. «Упал сервер», «провайдер виноват», «DDoS»…. Есть простой способ узнать правду — curl и dig.
Быстрая проверка доступности:
curl -I https://google.com

✏️Что вы увидите в ответе:
HTTP/2 200 — всё ок
curl: (6) Could not resolve host — DNS не работает
curl: (7) Failed to connect — сервер не отвечает

🎯Проверка DNS:
dig +short google.com

Вы получите IP-адреса (например, 142.250.150.142). Работает? Значит с DNS всё в порядке. Пустой вывод — проблема у провайдера или в настройках вашей системы.

💡Если нужно копнуть глубже
Узнайте, где теряются пакеты:
traceroute 8.8.8.8

Каждая строка — один маршрутизатор. Звёздочки на каком-то шаге? Там пакеты пропадают.

Самая частая причина
🌐 Файрвол на вашей машине или на сервере. Проверить просто:
sudo ufw status

Если выключен — ищите проблему в других местах. Если включён и блокирует — временно отключите (с осторожностью):
sudo ufw disable

Не забудьте потом включить обратно:
sudo ufw enable
👍5
Channel name was changed to «🐧Linux для админов и DevOps»
🛡 Настройка SSH-ключей: доступ по паролю забываем навсегда

👋Если Вы до сих пор вводите пароль при каждом подключении к серверу — пора это менять. SSH-ключи быстрее, удобнее и безопаснее паролей. Разберём за 5 минут.
🔑 Шаг 1. Генерируем ключ на Вашей локальной машине
Откройте терминал (Linux / macOS / WSL) и выполните:
ssh-keygen -t ed25519 -C "Ваш_email@example.com"

Нажмите Enter для стандартного пути ~/.ssh/id_ed25519. Можно задать пароль (passphrase) — это дополнительный пин-код для ключа.
🧠 Почему ed25519?
Он быстрее RSA и даёт такой же уровень безопасности при меньшей длине.

📤 Шаг 2. Копируем Ваш публичный ключ на сервер
Вариант 1 — универсальная команда:
ssh-copy-id user@ip_сервера

Вариант 2 — вручную, если ssh-copy-id нет:
cat ~/.ssh/id_ed25519.pub | ssh user@ip_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

После этого пароль больше не потребуется — заходите сразу.
🔧 Шаг 3. Отключаем вход по паролю (рекомендуем)
Зайдите на сервер и отредактируйте конфиг:
sudo nano /etc/ssh/sshd_config

Найдите строки и сделайте так:
PasswordAuthentication no
PermitRootLogin prohibit-password # или no

После этого перезапустите SSH:
sudo systemctl restart sshd   # или ssh, в зависимости от системы

⚠️ Важно: перед этим убедитесь, что у Вас есть доступ по ключу (новая сессия должна открываться без пароля). Иначе Вы заблокируете сами себя.

🔥 Был ли пост полезен? Поставьте реакцию 👍
👍3🔥3
🔍 Порт занят? Узнайте, какой процесс его держит
Бывает: запускаете Nginx, а он говорит «Address already in use». Знакомая ситуация? Давайте разберёмся, как найти процесс, который занял порт, и как его корректно завершить.
🧰 Команда ss (современный netstat)
Утилита ss быстрее и удобнее старого netstat. Она есть почти везде.
Посмотреть все слушающие порты:
sudo ss -tulpn

Что означает:
-t – TCP
-u – UDP
-l – только слушающие
-p – показать PID и имя процесса
-n – не преобразовывать адреса в имена
Пример вывода:
State   Recv-Q  Send-Q   Local Address:Port   Process
LISTEN 0 128 0.0.0.0:80 users:(("nginx",pid=1234))

Теперь загляните в столбец Process — там и пид, и имя.
Если нужно найти только конкретный порт
Добавьте фильтр по порту (например, порт 8080):
sudo ss -tulpn | grep :8080

Или используйте:
sudo lsof -i :8080

lsof показывает все процессы, использующие сеть.
🚫 Как освободить порт
Если процесс вам не нужен, убейте его:
sudo kill -9 <PID>

Важно: kill -9 принудительно завершает процесс. Если это сервер (Nginx, PostgreSQL), сначала лучше попробовать systemctl stop <service>.

🔥 Полезный материал? Поставьте реакцию 👍
👍5🔥2
🔍 /proc: папка, которой не существует (но она работает)

Вы наверняка заглядывали в /proc — там куча папок с цифрами и файлы вроде cpuinfomeminfo. Выглядит как обычная директория? А вот и нет.

🎯Факт: внутри /proc нет ни одного реального файла. Все данные генерируются ядром на лету, прямо в момент обращения. Это «псевдо-файловая система» — интерфейс для общения с ядром Linux.

⚙️ Как это работает?
Когда Вы выполняете:
cat /proc/cpuinfo

Ядро перехватывает запрос, собирает актуальную информацию о процессорах (прямо из своих структур), форматирует в текст и отдаёт Вам. Через секунду этого «файла» в памяти уже нет. Следующий cat — ядро снова собирает данные заново.

🧰 Что полезного лежит в /proc?
Вот несколько примеров, которые пригодятся в работе:
/proc/cpuinfo        — Модель, ядра, флаги процессора              → cat /proc/cpuinfo
/proc/meminfo — Оперативная память (total, free, buffers) → cat /proc/meminfo
/proc/uptime — Время работы системы и время idle → cat /proc/uptime
/proc/version — Версия ядра и компилятор → cat /proc/version
/proc/loadavg — Средняя нагрузка за 1/5/15 минут → cat /proc/loadavg
/proc/net/tcp — Список TCP-соединений (сырой) → cat /proc/net/tcp
/proc/self/status — Информация о текущем процессе → cat /proc/self/status


⚠️ Итог
/proc — это не папка с файлами, а интерфейс для взаимодействия с ядром. Работа с ним — основа диагностики и тонкой настройки Linux-систем.
Стало понятнее? Поставьте реакцию 👍
👍62
Всем привет!

🔎Если вы когда-нибудь тратили время на поиск рабочей версии nginx.conf или плодили файлы вида script_final_2_True.sh — этот курс для вас.

Представляю мой новый, практический курс без лишней теории — Git для Linux-админа: управление конфигами и скриптами.
Только то, что нужно админу в работе: хранение конфигов, откаты, деплой, работа с GitHub.

📚Чему вы научитесь:
— Хранить все конфиги и bash-скрипты под контролем Git.
— Откатывать изменения одной командой.
— Настраивать автоматическую проверку скриптов (pre-commit hook).
— Пушить, пуллить и тегировать как настоящий админ.

💻Всё в терминале Linux (Ubuntu). Текстовые лекции, скриншоты, домашки и моя поддержка по ходу его прохождения.

💥 Сейчас курс можно купить со скидкой: Полная цена — 1990 ₽
По ссылке ниже всего за 1000 ₽ (экономия 990 ₽)
https://stepik.org/a/286102/pay?promo=c5e03ee91366864e

📛Если скидка не пройдет, напишите мне в личные сообщения
👍3🔥2
🐧Linux для админов и DevOps pinned «Всем привет! 🔎Если вы когда-нибудь тратили время на поиск рабочей версии nginx.conf или плодили файлы вида script_final_2_True.sh — этот курс для вас. Представляю мой новый, практический курс без лишней теории — Git для Linux-админа: управление конфигами…»
📋 journalctl: читаем логи systemd как профессионал

Если Ваша система использует systemd (а это почти все современные дистрибутивы), то все логи собирает journalctl. Забудьте про less /var/log/syslog — разберёмся с этим инструментом.

🔍 Базовая команда
Показать все логи (начиная с самых старых):
journalctl

Выход — нажать q.

⏱️ Логи только за сегодня
journalctl --since today

Или за последний час:
journalctl --since "1 hour ago"


📌 Логи конкретного сервиса
Например, показываем логи Nginx:
journalctl -u nginx

Можно добавить -f — следить в реальном времени (как tail -f):
journalctl -u nginx -f


⚠️ Только ошибки
Показать записи с приоритетом error и выше:
journalctl -p err

Уровни: emergalertcriterrwarningnoticeinfodebug.

🧰 Полезный однострочник
Логи за последние 10 минут, только ошибки, для сервиса SSH:
journalctl -u ssh --since "10 minutes ago" -p err


🔥 Было полезно? Поставьте реакцию 👍
👍92🔥1
🔍 grep: ищем всё что угодно за секунду
grep — одна из тех команд, которую Вы будете использовать каждый день. Она ищет текст внутри файлов и вывода других команд. Разберём самые полезные варианты.
📄 Поиск в одном файле
grep "error" /var/log/nginx/access.log

Найдёт все строки, содержащие слово error.

🔁 Поиск во всех файлах папки (рекурсивно)
grep -r "listen" /etc/nginx/

Флаг -r заставляет grep заходить во вложенные папки.

📍Показать номер строки и контекст
Чтобы видеть не только саму строку, но и то, что вокруг неё:
grep -n -C 3 "error" /var/log/syslog

-n — номер строки
-C 3 — показать 3 строки до и после совпадения

🎯Инвертировать поиск (всё, кроме)
grep -v "debug" /var/log/app.log

Покажет все строки, где нет слова debug. Удобно фильтровать шум.

🧮Посчитать количество совпадений
grep -c "failure" /var/log/auth.log

Просто выведет число — сколько раз встречается failure.

🔗 Использовать grep с другими командами
Это самое частое применение. Например, ищем процесс по имени:
ps aux | grep nginx

Или смотрим, какие порты слушает система:
ss -tulpn | grep :80


🔥 Пост полезный? Поставьте реакцию 👍
👍92🔥2
🩺 Команда «Здоровье сервера» — быстрый осмотр
Каждый раз вручную запускать topfreeuptimedf — долго. Этот скрипт собирает всё на одном экране за секунду. Вы сразу видите, перегружен ли сервер, хватает ли памяти и не забиты ли диски.
Установка:
sudo nano /usr/local/bin/health.sh

Вставьте код ниже. Затем:
sudo chmod +x /usr/local/bin/health.sh
echo "alias health='sudo /usr/local/bin/health.sh'" >> ~/.bashrc
source ~/.bashrc

Теперь просто вводите health.
Код:
#!/bin/bash
echo "=== CPU ==="
top -bn1 | grep "Cpu(s)" | awk '{print "CPU: "$2+$4"%"}'
echo "=== RAM ==="
free -h | awk '/Mem/{print "Доступно / Всего: "$7" / "$2}'
echo "=== Load Average ==="
uptime | awk -F'load average:' '{print $2}'
echo "=== Disks ==="
df -h | grep -E '^/dev/(sd|xvd|nvme|vd)' | awk '{print $1, $2, $3, $4, $5, $6}'

CPU > 80% — нагрузка.
Load > ядер CPU — перегрузка.
Available < 10% RAM — не хватает памяти.
Disks Use% > 90% — срочно чистить.

▶️Видео на Youtube: https://www.youtube.com/watch?v=rWkvZg1gAtA
👍4🔥42
Если вам интересен Linux или вы только хотите с ним познакомиться, рекомендую заглянуть в этот канал:

👉 Linux из коробки

Автор ведет его как хобби и собирает полезные материалы для новичков: простые команды Linux, разбор базовых инструментов, технические термины на английском и небольшие шпаргалки, к которым удобно возвращаться. Вместо того чтобы искать нужную команду по заметкам или вкладкам браузера, можно быстро найти её в канале или переслать себе в «Избранное».

Также у автора есть YouTube-канал «Linux из коробки», где он рассказывает о Linux простым языком — без лишнего технического жаргона и сложной магии командной строки.

Если тема вам близка, думаю, канал может оказаться полезным.
🔥31👍1🐳1
🔎 Три простые команды: как проверить состояние сервера за 60 секунд
Когда нужен быстрый статус сервера — достаточно трёх команд. Они помогут понять, что происходит прямо сейчас, без углубленного разбора.
Время работы и нагрузка
uptime

Покажет время работы, нагрузку CPU за последние 1/5/15 минут и количество запущенных пользователей.

Кто сейчас вошёл в систему
who -u

Покажет список вошедших пользователей и их активность.

Топ по потреблению ресурсов
top -b -n1 | head -n 5

Покажет верхние процессы по загрузке CPU/памяти (однократный снимок, без интерактива).

💡 Быстрый вывод: если команды показывают высокую загрузку или неизвестные процессы — это повод детальнее проверить логи и запланировать план действий.
🔥 Если пост полезен — поставьте реакцию 👍
🔥5👍42
🏆 Создайте swap за 1 минуту одним скриптом
Если вы устали каждый раз вводить fallocatemkswapswapon и править fstab?
Я написал простой скрипт, который делает всё это одной командой.

 Что скрипт делает:
— принимает размер (2G, 512M, …)
— создаёт swap-файл с правильными правами
— создает и включает swap
— добавляет авто-подключение в /etc/fstab (без дублей!)

📥 Как использовать:
nano create-swap.sh         # создать файл с кодом
chmod +x create-swap.sh # сделать исполняемым
sudo ./create-swap.sh 2G # запустить
swapon --show # проверить

📌 Важно: скрипт проверяет права root, спрашивает подтверждение, если файл уже есть, и пишет в fstab только при отсутствии записи.

⬇️ Код (копируйте и вставляйте):
#!/bin/bash
if [ -z "$1" ]; then
echo "Ошибка: укажите размер (например 2G)"
exit 1
fi
if [ "$EUID" -ne 0 ]; then
echo "Запустите с sudo"
exit 1
fi
SIZE="$1"
SWAPFILE="/swapfile"
if [ -f "$SWAPFILE" ]; then
echo "⚠️ Файл уже существует."
read -p "Пересоздать? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
swapoff "$SWAPFILE" 2>/dev/null
rm -f "$SWAPFILE"
fi
echo "[+] Создание swap-файла $SIZE..."
fallocate -l "$SIZE" "$SWAPFILE"
chmod 600 "$SWAPFILE"
mkswap "$SWAPFILE" > /dev/null
swapon "$SWAPFILE"
if ! grep -q "$SWAPFILE" /etc/fstab; then
echo "$SWAPFILE none swap sw 0 0" >> /etc/fstab
fi
echo " Swap-файл $SIZE активен."

👍 Сохраните себе, чтобы не потерять.

▶️Смотреть: Видео на YouTube
#linux #swap #администрирование #devops #bashscript
🔥41
Всех приветствую!

Рад сообщить, что я запустил новую программу «Bash, Git, Docker: три столпа современного Админа», которая состоит сразу из трех курсов. Эта программа — практический инструмент, который научит Вас автоматизировать рутину, наводить порядок в конфигах и упаковывать приложения в контейнеры.

📚Чему Вы научитесь:
— писать скрипты для бэкапов, мониторинга и деплоя (циклы, условия, sed/awk, cron);
— работать с Git: коммиты, ветки, слияния, откаты, .gitignore и hooks;
— собирать Docker-образы, управлять контейнерами, томами, сетями и писать Docker Compose.
📍Всё это — три столпа, без которых сейчас никуда.

💵Цена 4500р
По ссылке ниже вы можете получить ее всего за 2 500 ₽ (Экономия 44%!). Так что если собирались изучать данные инструменты, то сейчас самое время.

▶️Ссылка на курс: https://stepik.org/a/292575/pay?promo=03ff096d08bece34
👍5
🐧Linux для админов и DevOps pinned «Всех приветствую! Рад сообщить, что я запустил новую программу «Bash, Git, Docker: три столпа современного Админа», которая состоит сразу из трех курсов. Эта программа — практический инструмент, который научит Вас автоматизировать рутину, наводить порядок…»