Всех приветствую!
🌟Я рад анонсировать запуск своего нового курса, посвященного ключевой технологии современной разработки и администрирования.
📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь:
— Устанавливать и настраивать Docker на Linux Ubuntu
— Освоите ключевые понятия Docker: образы, контейнеры, слои, хранилища.
— Создавать Docker-образы и контейнеры с использованием Dockerfile.
— Управлять контейнерами: запуск, остановка, удаление, мониторинг.
— Применять Docker Compose для быстрого развёртывания многосервисных приложений.
— Использовать best practices для построения эффективных образов и снижения размеров контейнеров.
— Автоматизировать сборку и деплой приложений с Docker Hub.
🎁Стоимость курса 1990 рублей, по ссылке вы можете получить скидку 990 рублей.
Docker: первые шаги в контейнеризацию: https://stepik.org/a/252861/pay?promo=a2c1d919d74f6dad
💰Если скидка не пройдет, напишите мне в личные сообщения.
🌟Я рад анонсировать запуск своего нового курса, посвященного ключевой технологии современной разработки и администрирования.
📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь:
— Устанавливать и настраивать 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 «Всех приветствую! 🌟Я рад анонсировать запуск своего нового курса, посвященного ключевой технологии современной разработки и администрирования. 📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь: — Устанавливать…»
🔥 Процесс жрет 100% CPU — как найти за секунду?
Сервер тормозит,
Вот одна команда, которая вычислит виновника:
Результат:
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'— будете пользоваться каждый день.
Сервер тормозит,
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
Создаёте файл
Всё. Дальше заходите одной короткой командой:
🚀Работа с серверами превращается из "боли и гугления" в "пара секунд". Экономия времени — колоссальная, рекомендую всем, кто работает с удалёнными машинами.
Что это вообще такое?
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
Где:
Если увидите
▶️Bash (без установки утилит)
Где:
✏️Запомните: пинг — это вежливость, порты — это реальность.
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 отвалился, а команда не доделалась — больше никаких потерь
Знакомая боль: запустил
Вот что нужно делать перед любой долгой командой:
Всё. Процесс теперь живёт своей жизнью — независимо от вашего соединения. Закройте ноутбук, идите спать, возвращайтесь когда хотите.
🏆Что здесь происходит: —
💡Вернулся — проверил:
Работает с чем угодно: деплои, компиляция, бэкапы, скрипты на несколько часов.
#linux #bash #devops #tips
Знакомая боль: запустил
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
👍4❤1
🔥 Docker захламил сервер — чистим множество ГБ за 10 секунд
Со временем Docker копит мусор: остановленные контейнеры, висящие образы, кэш сборок.
Одна команда — полная уборка:
😳Мой результат только что был вот такой:
Удалится всё, что не запущено прямо сейчас.
Со временем Docker копит мусор: остановленные контейнеры, висящие образы, кэш сборок.
Одна команда — полная уборка:
docker system prune -af
😳Мой результат только что был вот такой:
Total reclaimed space: 2.957GB
Удалится всё, что не запущено прямо сейчас.
💡 Осторожно: если в контейнерах были важные данные (БД, файлы) — сначала сохрани их. Эта команда не щадит никого.
👍5❤1
🔥 SSH не подключается? Хватит гадать — включите отладку
Вы сидите, смотрите в чёрный терминал и не понимаете: почему
Руки тянутся проверить настройки сервера, порты, файрвол… Стоп. Есть более быстрый путь — включить отладку.
Команда-спасение
Вывод покажет каждый шаг подключения. Смотрите внимательно:
✅
✅
❌
Если хотите совсем детально (увидеть даже отвергнутые ключи) — добавьте ещё два
Самая частая причина
🔐 Права доступа. 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.
Быстрая проверка доступности:
✏️Что вы увидите в ответе:
🎯Проверка DNS:
Вы получите IP-адреса (например,
💡Если нужно копнуть глубже
Узнайте, где теряются пакеты:
Каждая строка — один маршрутизатор. Звёздочки на каком-то шаге? Там пакеты пропадают.
Самая частая причина
🌐 Файрвол на вашей машине или на сервере. Проверить просто:
Если выключен — ищите проблему в других местах. Если включён и блокирует — временно отключите (с осторожностью):
Не забудьте потом включить обратно:
Вы сидите, браузер грузит, а результата нет. «Упал сервер», «провайдер виноват», «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
🛡 Настройка SSH-ключей: доступ по паролю забываем навсегда
👋Если Вы до сих пор вводите пароль при каждом подключении к серверу — пора это менять. SSH-ключи быстрее, удобнее и безопаснее паролей. Разберём за 5 минут.
🔑 Шаг 1. Генерируем ключ на Вашей локальной машине
Откройте терминал (Linux / macOS / WSL) и выполните:
Нажмите Enter для стандартного пути
📤 Шаг 2. Копируем Ваш публичный ключ на сервер
Вариант 1 — универсальная команда:
Вариант 2 — вручную, если
После этого пароль больше не потребуется — заходите сразу.
🔧 Шаг 3. Отключаем вход по паролю (рекомендуем)
Зайдите на сервер и отредактируйте конфиг:
Найдите строки и сделайте так:
После этого перезапустите 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». Знакомая ситуация? Давайте разберёмся, как найти процесс, который занял порт, и как его корректно завершить.
🧰 Команда
Утилита
Посмотреть все слушающие порты:
Что означает:
Пример вывода:
Теперь загляните в столбец
❓ Если нужно найти только конкретный порт
Добавьте фильтр по порту (например, порт 8080):
Или используйте:
🚫 Как освободить порт
Если процесс вам не нужен, убейте его:
Важно:
🔥 Полезный материал? Поставьте реакцию 👍
Бывает: запускаете 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?
Вот несколько примеров, которые пригодятся в работе:
⚠️ Итог
Стало понятнее? Поставьте реакцию 👍
Вы наверняка заглядывали в
/proc — там куча папок с цифрами и файлы вроде cpuinfo, meminfo. Выглядит как обычная директория? А вот и нет.🎯Факт: внутри
/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-систем.Стало понятнее? Поставьте реакцию 👍
👍6❤2
Всем привет!
🔎Если вы когда-нибудь тратили время на поиск рабочей версии
Представляю мой новый, практический курс без лишней теории — Git для Linux-админа: управление конфигами и скриптами.
Только то, что нужно админу в работе: хранение конфигов, откаты, деплой, работа с GitHub.
📚Чему вы научитесь:
— Хранить все конфиги и bash-скрипты под контролем Git.
— Откатывать изменения одной командой.
— Настраивать автоматическую проверку скриптов (pre-commit hook).
— Пушить, пуллить и тегировать как настоящий админ.
💻Всё в терминале Linux (Ubuntu). Текстовые лекции, скриншоты, домашки и моя поддержка по ходу его прохождения.
💥 Сейчас курс можно купить со скидкой: Полная цена — 1990 ₽
По ссылке ниже всего за 1000 ₽ (экономия 990 ₽)
https://stepik.org/a/286102/pay?promo=c5e03ee91366864e
📛Если скидка не пройдет, напишите мне в личные сообщения
🔎Если вы когда-нибудь тратили время на поиск рабочей версии
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 (а это почти все современные дистрибутивы), то все логи собирает
🔍 Базовая команда
Показать все логи (начиная с самых старых):
Выход — нажать
⏱️ Логи только за сегодня
Или за последний час:
📌 Логи конкретного сервиса
Например, показываем логи Nginx:
Можно добавить
⚠️ Только ошибки
Показать записи с приоритетом error и выше:
Уровни:
🧰 Полезный однострочник
Логи за последние 10 минут, только ошибки, для сервиса SSH:
🔥 Было полезно? Поставьте реакцию 👍
Если Ваша система использует 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
Уровни:
emerg, alert, crit, err, warning, notice, info, debug.🧰 Полезный однострочник
Логи за последние 10 минут, только ошибки, для сервиса SSH:
journalctl -u ssh --since "10 minutes ago" -p err
🔥 Было полезно? Поставьте реакцию 👍
👍9❤2🔥1
🔍 grep: ищем всё что угодно за секунду
📄 Поиск в одном файле
Найдёт все строки, содержащие слово
🔁 Поиск во всех файлах папки (рекурсивно)
Флаг
📍Показать номер строки и контекст
Чтобы видеть не только саму строку, но и то, что вокруг неё:
🎯Инвертировать поиск (всё, кроме)
Покажет все строки, где нет слова
🧮Посчитать количество совпадений
Просто выведет число — сколько раз встречается
🔗 Использовать 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
🔥 Пост полезный? Поставьте реакцию 👍
👍9❤2🔥2
