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

По всем вопросам: @Kostyan_00
Download Telegram
🛠 Что такое Bash и зачем он нужен в Linux?

Оболочка (shell) в Linux работает подобно официанту в ресторане: принимает ваш заказ (команды), передаёт его повару (ядру системы) и возвращает готовое блюдо (результат). Одна из самых популярных оболочек — Bash. Это стандарт большинства дистрибутивов Linux, обеспечивающий простой доступ к файлам и программам.

🌟 Основные плюсы Bash:

Легко изучать благодаря простым и знакомым командам (cd, pwd, mkdir);
Автодополнение команд сокращает набор длинных названий путём нажатия Tab;
История команд позволяет повторно вызывать прошлые действия клавишами стрелок вверх-вниз.

🎯 Почему именно Bash популярен?

Традиции: большинство пользователей знакомы с Bash;
Совместимость: одинаковая работа на разных версиях Linux;
Широкая поддержка сообщества разработчиков и документации.

🤝 Альтернатива Bash — Zsh и Fish, но Bash остаётся лидером благодаря простоте и гибкости настроек.

Используйте Bash правильно — и ваша работа в Linux станет проще и эффективнее!
👍6
📌 Как происходит загрузка Linux:
Когда вы включаете компьютер с установленной системой Linux, запускается целый каскад событий, завершающийся полным функционалом рабочей среды. Рассмотрим подробно, что происходит на каждом этапе загрузки.

📌 1. BIOS или UEFI
Сразу после нажатия кнопки питания компьютер начинает работу с базовой системы ввода-вывода (BIOS) или UEFI. Ее задачи:
- провести проверку оборудования (POST);
- найти загрузочные устройства (жёсткий диск, SSD, USB-накопители);
- передать управление загрузчику GRUB.

📌 2. GRUB (загрузчик)
GRUB (GNU GRUB boot loader) — это менеджер загрузки, который отображает меню выбора системы и запускает выбранную ОС. GRUB считывает конфигурацию из файла /boot/grub/grub.cfg, загружает ядро Linux и передает ему управление.

📌 3. Загрузка ядра Linux
Когда GRUB передал управление, начинается загрузка ядра. На этом этапе ядро:
- инициализирует драйвера устройств;
- проверяет и монтирует начальную файловую систему (initramfs);
- проводит подготовку для старта системы.

📌 4. Initramfs
Initramfs — временная файловая система, созданная в оперативной памяти. Она содержит модульные драйверы и необходимые инструменты для начальной загрузки системы. В ней ядро находит модули для работы с жёстким диском и другими устройствами.

📌 5. Systemd (инициализация системы)
После готовности ядра стартует systemd — демон, ответственный за запуск и контроль системных сервисов. Он:
- монтирует основную файловую систему;
- запускает необходимые сервисы и демоны;
- разворачивает сеть и периферийные устройства.

📌 6. Графический интерфейс (Display Manager)
Последний этап загрузки — это запуск графического интерфейса (Xorg или Wayland) и открытие окна входа в систему. Менеджер дисплея (например, GDM, LightDM или SDDM) позволяет войти в рабочий стол и начать работу.

📌 Заключение
Каждый этап плавно сменяет предыдущий, обеспечивая бесперебойную работу операционной системы.

#linux #it
👍7
Какая команда выводит список всех существующих пользователей на сервере?
Anonymous Quiz
19%
cat users
21%
listusers
48%
cat /etc/passwd
12%
users
3
🔥 APT-команды Linux: расширяем возможности системы!

⚙️ APT (Advanced Package Tool) — мощный инструмент управления пакетами в дистрибутивах Debian-based (Ubuntu, Mint и др.). Он прост в освоении и чрезвычайно функционален!

Основные команды APT:

🌐 sudo apt update — обновляет список доступных репозиториев и пакетов.
sudo apt install <package> — устанавливает нужный пакет.
✂️ sudo apt remove <package> — удаляет установленный пакет.
📌 sudo apt autoremove — очищает систему от неиспользуемых зависимостей.
🗃 apt search <keyword> — ищет пакеты по ключевому слову.
💡apt show <package> — выводит подробную информацию о пакете.
🔄 sudo apt upgrade — обновляет установленные пакеты до последних версий.
🤝sudo apt full-upgrade — аналогично upgrade, но может удалять конфликтующие пакеты.

🥳 Преимущества APT:
— Простое управление пакетами.
— Удобство обновления системы одним действием.
—Возможность устанавливать сразу группы пакетов.
— Автоматическая очистка мусора.
— Надежность и стабильность благодаря интеграции с репозиториями Ubuntu.

#Linux #APT #КоманднаяСтрока #Debian #Ubuntu
👍6
Всех приветствую!

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

📚В этом курсе я собрал всё необходимое, чтобы вы могли уверенно работать с контейнеризацией. Вы научитесь:
— Устанавливать и настраивать 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