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

По всем вопросам: @Kostyan_00
Download Telegram
Всех приветствую!

🌟Я рад анонсировать запуск своего нового курса, посвященного ключевой технологии современной разработки и администрирования.

📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь:
— Устанавливать и настраивать Docker на Linux Ubuntu
— Освоите ключевые понятия Docker: образы, контейнеры, слои, хранилища.
— Создавать Docker-образы и контейнеры с использованием Dockerfile.
— Управлять контейнерами: запуск, остановка, удаление, мониторинг.
— Применять Docker Compose для быстрого развёртывания многосервисных приложений.
— Использовать best practices для построения эффективных образов и снижения размеров контейнеров.
— Автоматизировать сборку и деплой приложений с Docker Hub.

🎁Стоимость курса 1990 рублей, по ссылке вы можете получить скидку 990 рублей.
Docker: первые шаги в контейнеризацию: https://stepik.org/a/252861/pay?promo=a2c1d919d74f6dad
💰Если скидка не пройдет, напишите мне в личные сообщения.
👍8
🐧Linux для админов и DevOps pinned «Всех приветствую! 🌟Я рад анонсировать запуск своего нового курса, посвященного ключевой технологии современной разработки и администрирования. 📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь: — Устанавливать…»
Channel name was changed to «Linux для админов и DevOps»
🔥 Процесс жрет 100% CPU — как найти за секунду?

Сервер тормозит, SSH еле отвечает, а top показывает просто python3. Что за процесс? Неизвестно.
Вот одна команда, которая вычислит виновника:
ps aux --sort=-%cpu | head -5

Результат:
USER PID %CPU COMMAND
root 31337 99.7 python3 /opt/miner/xmrig
root 12001 2.3 nginx
Всё — нашел. Майнер или сломавшийся скрипт.

💡 Добавьте в .bashrc алиас: alias topp='ps aux --sort=-%cpu | head -5'— будете пользоваться каждый день.
👍5🔥2
🔥 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