Linux Skill - Освой Linux c нуля до DevOps – Telegram
Linux Skill - Освой Linux c нуля до DevOps
11.2K subscribers
58 photos
103 videos
486 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
Какой символ используется для обозначения начала комментария в Bash-скрипте (кроме первой строки shebang)?
Anonymous Quiz
11%
//
4%
;
82%
#
2%
--
👍14
Какая конструкция позволяет использовать значение по умолчанию, если переменная не установлена или пуста?
Anonymous Quiz
37%
${parameter*=default}
13%
${parameter??default}
26%
${parameter$$default}
24%
${parameter:-default}
🔧 Multipass: Запусти Ubuntu VM 3 командами (CLI-гайд)

Привет, мастер командной строки!

Тебе нужна быстрая песочница Ubuntu для тестов?
Multipass позволяет тебе запустить VM с предустановленным Docker за минуту.

1. Запуск виртуалки с Docker

Используй образ docker и задай имя (например, node1).

# Создаем и запускаем VM с Docker pre-installed
multipass launch docker --name node1


2. Проверка и подключение

Убедись, что она запущена, и подключись.

# Проверить статус, имя и IP-адрес VM
multipass ls

# Подключиться к виртуальной машине (ты войдёшь в неё)
multipass shell node1

# Выход из сеанса оболочки (без выключения машины)
exit


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

#Утилиты #CLI #Виртуализация #Multipass
🔥 Открытый урок «Принцип DRY в GitLab CI: как избавиться от дублирования и навести порядок в пайплайнах».

🗓 18 декабря в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab».

На вебинаре разберем:
✔️Что такое DRY в контексте CI/CD и зачем его применять.
✔️Организация пайплайнов: как структурировать .gitlab-ci.yml, чтобы не утонуть в дублировании.
✔️Include и extends — мощные механизмы переиспользования кода.
✔️ Как создать единые шаблоны пайплайнов для нескольких проектов.
✔️Антипаттерны: что ломает читаемость и поддерживаемость CI-конфигураций.

После вебинара вы сможете:
- Навести порядок в .gitlab-ci.yml и убрать дублирование шагов.
- Создавать гибкие, масштабируемые пайплайны для разных проектов.
- Стандартизировать CI/CD-процессы в команде без потери гибкости.

🔗 Ссылка на регистрацию: https://otus.pw/J0v8/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯 CLI-гайд: 6 команд, которые делают "грязную" работу за тебя

Привет, гуру Linux-оболочки!

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

1. ⚙️ stat: Вся информация о файле

stat выдает подробную и многословную статистику о заданном файле, каталоге или устройстве. Сюда входит тип файла, права доступа, inode, размер и время.

# Получить детальные метаданные о файле
stat /etc/passwd

# Извлечь конкретные данные (например, inode и тип файла)
# -c%i - inode number, -c%F - file type
stat -c%i,%F /etc/passwd

stat используется, чтобы быстро получить всю информацию, включая время последнего доступа (atime), модификации (mtime) или изменения статуса (ctime).

2. 🚀 xargs: Параллельное выполнение команд

Используй xargs для передачи аргументов команде из потока ввода (stdin), что особенно полезно, когда список аргументов слишком длинный для обычной подстановки.

# Найти все файлы *.log и удалить их, даже если их миллион
find /var/log/ -name "*.log" -print0 | xargs -0 rm -f

# Найти все .mp3-файлы и вывести их размер (с использованием xargs)
find ~/ -name "*.mp3" -print0 | xargs -0 du -h

xargs разбивает поток данных на достаточно маленькие блоки для обработки, что позволяет тебе ускорить операции с большим количеством файлов.

3. 💾 mktemp: Создание безопасного временного файла

Всегда создавай временные файлы с помощью mktemp для обеспечения "уникального" имени файла. Это предотвращает атаки, связанные с гонкой (race condition).

# Создать временный файл в /tmp с уникальным именем
TMP_FILE=$(mktemp)
echo "Рабочие данные" > $TMP_FILE

# После использования, не забудь удалить
rm $TMP_FILE

Когда mktemp вызывается без аргументов, он создает файл нулевой длины в /tmp.

4. 🔗 lsof: Найди, что держит ресурс

Если ты не можешь размонтировать файловую систему (umount fails), lsof показывает все открытые файлы и связанные с ними процессы.

# Узнать, какие процессы используют директорию /mnt/data
lsof /mnt/data

# Показать, какие процессы открыли файл /usr/bin/vim
fuser -u /usr/bin/vim

lsof помогает тебе определить, какие файлы все еще открыты, чтобы ты мог безопасно убить соответствующие процессы.

5. 🔑 which, whereis, whatis: Быстрый поиск документации

Эти три команды помогают тебе быстро найти исполняемый файл или узнать его назначение, что критически важно при работе в новой системе:

# Показать полный путь к исполняемому файлу (только bin)
which rm
# Вывод: /usr/bin/rm

# Показать путь к bin, исходникам И man-странице
whereis rm
# Вывод: rm: /bin/rm /usr/share/man/man1/rm.1.bz2

# Получить краткое описание команды из базы данных whatis
whatis whatis
# Вывод: whatis (1) - search the whatis database for complete words


6. 📊 Комбинирование: cut, sort, uniq

Используй эти три фильтра вместе для анализа структурированных текстовых файлов или вывода команд (например, /etc/passwd).

# Найти 5 самых популярных оболочек в системе
cut -d':' -f7 /etc/passwd | sort | uniq -c | sort -rn | head -5
# cut -d':' -f7: извлекает поле 7 (оболочку).
# sort: сортирует, чтобы uniq работал.
# uniq -c: подсчитывает последовательные дубликаты.
# sort -rn: сортирует в обратном порядке по числам (самые популярные сверху).


💡 Вывод

Эти хаки и утилиты — настоящий золотой фонд командной строки. Используя xargs, stat и связку фильтров (cut, sort, uniq), ты сможешь превратить рутинные задачи в быстрые однострочники.

#Шпаргалка #Хаки #CLI #Bash #Скрипт #Утилиты
🔥9👍3👎1
Linux Skill - Освой Linux c нуля до DevOps pinned «🚨 Взломали сервер? 10 команд для поиска следов хакера Привет, кибер-детектив! Подозреваешь, что сервер скомпрометирован? Держи шпаргалку из топового выступления по Linux Forensics. Это реальные команды, которые используют профи при расследовании инцидентов.…»
🔑 Секрет Satisfy: IP-доступ без пароля для админов

Эй, Bash-архитектор!

Тебе нужна гибкая аутентификация (IP ИЛИ пароль)?
Директива Satisfy any позволяет тебе обходить Basic Auth для внутренних IP, не требуя пароля.

# Конфигурация Nginx/Angie (Location Block)
# Внимание: Basic Auth небезопасна без HTTPS
location /admin/ {
# 1. Настройка аутентификации
auth_basic "Restricted Zone";
auth_basic_user_file /etc/nginx/.htpasswd;

# 2. Правила доступа по IP
allow 192.168.1.10; # Разрешить админу
deny all;

# 3. Ключевой хак: достаточно одного условия
satisfy any;
}


Вывод: Если IP совпадает, сервер не спросит пароль.

#Nginx #Хаки #Security #CLI #МиниГайд
👍4
Контейнеры разрастаются, а инфраструктура уже не поддаётся контролю?

😬 Каждое развертывание — как мини-квест. Отказоустойчивость под вопросом, DevOps-циклы затянуты, а масштабирование напоминает ручную магию. Kubernetes вроде бы должен всё решать, но на практике сложностей только больше.

👩‍💻 Онлайн-курс «Инфраструктурная платформа на основе Kubernetes» поможет вам:
- Автоматизировать управление контейнерами и масштабирование
- Освоить DevOps-подход «инфраструктура как код»
- Подготовиться к сертификации CNCF (CKA и CKAD)

Практикующие эксперты, актуальная программа, разбор нюансов эксплуатации K8s и бонус: подготовительный курс по Linux.

➡️ Пройдите короткое вступительное тестирование и присоединяйтесь к группе: https://otus.pw/bmFr/

🎄 Учитесь в новом году по старым ценам!
Максимальная скидка 30% на обучение до 21.12.2025:
1 курс — тающая скидка 15% до 21.12
2 курса −25%, 3 курса −30%
Учиться системно — выгоднее!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
🔥 3 метрики в SSH-баннере: Скрипт для Production

Привет, повелитель терминала!
Тратить время на ввод uptime и free при каждом SSH-входе, чтобы оценить состояние сервера.
Добавь этот динамический скрипт в свой ~/.bashrc (или /etc/profile), и ты получишь мгновенную оценку Load Average, RAM и IP-адреса, используя встроенный документ (here document).

⚙️ Скрипт: Динамический MOTD (Message of the Day)

Скрипт использует подстановку команд $(...) (предпочтительная нотация вместо обратных кавычек ` ``) для сбора метрик и форматированный встроенный документ для их вывода.

#!/bin/bash
# -------------------------------------------------------------
# 1. Сбор системных метрик
# -------------------------------------------------------------

# Получаем локальный IP-адрес сервера (первый в списке)
SERVER_IP=$(hostname -I | awk '{print $1}')

# Получаем Load Average за 1 минуту.
# Средняя загрузка (Load Average) — это количество процессов,
# ожидающих ЦПУ или дискового ввода/вывода.
# Мы считываем метрики из псевдофайла /proc/loadavg,
# извлекая первое поле (1-минутное значение).
LOAD_AVG=$(cut -d " " -f1 /proc/loadavg)

# Получаем использованную/общую RAM в "человекочитаемом" виде.
# Используем команду `free` для статистики виртуальной памяти.
# AWK используется для извлечения 3-го и 2-го столбцов строки "Mem:"
RAM_USED_TOTAL=$(free -h | awk '/Mem:/ {print $3 "/" $2}')

# -------------------------------------------------------------
# 2. Вывод баннера с помощью Встроенного Документа (Here Document)
# -------------------------------------------------------------

# Конструкция 'cat << EOF' создает встроенный документ.
# Встроенные документы поддерживают подстановку параметров, если
# ограничитель (EOF) не экранирован.

cat << EOF

=============================================
🛡️ SYSTEM HEALTH CHECK | USER: $(whoami)
=============================================
🚀 Локальный IP: $SERVER_IP
⏱️ Load Average 1m: $LOAD_AVG
💾 RAM (Used/Total): $RAM_USED_TOTAL
---------------------------------------------

EOF


Вывод:

Вставь этот код в конец своего файла ~/.bashrc. Таким образом, ты увидишь здоровье сервера сразу после подключения, не используя команды вроде top или vmstat. Помни, что stat также может давать подробную информацию о файле или каталоге, включая размер, права доступа, и временные метки (доступ, модификация, изменение статуса).

#Bash #Скрипты #SSH #CLI #Мониторинг
🔥8👍5
💡 select + dialog: Создаём админ-меню прямо в консоли

Хей, гуру Linux-оболочки!

Ты тратишь время на медленный Web-GUI для рутинных задач (например, перезапуск служб)?
Используй команду select для создания интерактивного TUI-меню.

# 1. Задаем приглашение к вводу (PS3)
PS3='Выберите действие: '

# 2. Создаем TUI-меню с помощью select
select ACTION in 'Restart Proxy' 'Check Load' 'Exit'
do
# Выполняем команду, соответствующую выбору
case $ACTION in
'Restart Proxy')
# Перезапускаем службу proxy
systemctl restart proxy.service ;;
'Check Load')
# Проверяем загрузку системы (Load Average)
uptime ;;
'Exit')
# Выход из цикла
break ;;
esac
done


Вывод: select позволяет тебе быстро выбрать и выполнить команду прямо в консоли.

#TUI #CLI #Bash #Утилиты
Какая переменная хранит код возврата (exit status) последней выполненной команды?
Anonymous Quiz
25%
$$
26%
$!
17%
$#
32%
$?
Как получить длину строковой переменной ${string}?
Anonymous Quiz
21%
${string.length}
43%
length($string)
18%
${string:-len}
👍3
🔥 DevOps-стек: Запусти 3 контейнера одной командой (YAML)

Привет, цифровой архитектор!

Тратить время на ручное развертывание тестовых сервисов.
Docker Compose позволяет тебе развернуть весь DevOps-стек (приложение, БД, мониторинг) одной командой.

# docker-compose.yml (версия 3.8)
version: '3.8'
services:
app:
# Пример: веб-приложение Flask
image: custom/app:1.0
ports: ["8080:8080"]
# Переменные среды для подключения к БД (The Twelve-Factor App)
environment:
DB_HOST: db
db:
# Официальный образ БД
image: postgres:15
# Сохраняем данные на томе (volume)
volumes:
- db_data:/var/lib/postgresql/data
monitor:
# Пример дашборда
image: grafana/grafana:latest
ports: ["3000:3000"]
volumes:
db_data: # Объявление тома


Вывод: Запусти стек командой docker-compose up -d.

#Docker #DevOps #Мониторинг #YAML
👎1
🎥 Вебинар по Linux: Пользователи и права в Linux: первые шаги администратора
Разберёмся, как устроена система пользователей в Linux и зачем нужны root, sudo и su.

На вебинаре вы узнаете:
- Какие бывают типы пользователей в Linux и чем они отличаются.
- Где хранится информация о локальных пользователях и как её читать.
- Как безопасно переключаться между пользователями с помощью su и sudo.
- Какие ошибки часто совершают новички при работе с правами.

В результате вебинара вы:
- Узнаете, как Linux идентифицирует пользователей и их права.
- Сможете легко переключаться между пользователями.
- Научитесь читать системные файлы /etc/passwd и /etc/shadow.
- Поймёте, как использовать sudo без ошибок и повысить безопасность своей системы.

🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Basic"

👉 Для участия зарегистрируйтесь: https://otus.pw/xwoC/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚠️ Никогда не используй [ ] в Bash, пока не прочитаешь это

Привет, инженер! 👋

Сколько раз ты ловил binary operator expected или забывал экранировать > в условии? В Bash скобки — это не просто стиль, это разные инструменты с разной логикой.

Давай разложим всё по полочкам, чтобы твои скрипты работали предсказуемо.

📌 1. Одинарные квадратные [ ... ] — Классика (test)
Это синоним команды test. Она старая, POSIX-совместимая, но капризная.

Нюанс: Переменные нужно брать в кавычки "$var", иначе при пустом значении скрипт упадет.
Минус: Знаки > и < нужно экранировать (\>), иначе Bash решит, что это перенаправление ввода/вывода.

if [ "$a" = "root" ]; then echo "Hi root"; fi


📌 2. Двойные квадратные [[ ... ]] — Расширенная проверка
Это ключевое слово самого Bash. Оно мощнее и безопаснее.

Плюс: Не нужно экранировать > и <.
Поддерживает логические && и || прямо внутри скобок.
Киллер-фича: Поддерживает регулярные выражения через оператор =~.

# Проверка регуляркой (без кавычек!)
if [[ "$ver" =~ ^3\. ]]; then echo "Version 3.x"; fi


📌 3. Одинарные круглые ( ... ) — Подоболочка (Subshell)
Команды внутри запускаются в отдельном процессе.

Суть: Переменные, измененные внутри (), не меняются в основном скрипте.
Пример: (cd /tmp; rm *.log) — вы перейдете в папку только внутри скобок, основной скрипт останется в текущей директории.

📌 4. Двойные круглые (( ... )) — Арифметика
Специальная конструкция для математики в стиле Си.

Плюс: Можно не писать $ перед переменными.
Поддерживает инкременты var++ и тернарные операторы.

(( a++ ))       # Увеличить a на 1
b=$(( a + 5 )) # Записать результат в b


💡 Итог:
Пишешь на Bash? Всегда используй [[ ]] для условий и (( )) для математики. Оставь [ ] для совместимости со старым sh.

#Linux #Bash #DevOps #Scripting #Shell
👍14
🏎️ Почему твой Linux грузится вечность? Находим и обезвреживаем

Эй, линуксоид! 👋

Знакома ситуация: отправил сервер в reboot, и можно идти варить кофе, потому что он поднимается мучительно долго? 😤 Часто виноват один-единственный «зависший» сервис, который тянет время всей системы.

В systemd есть встроенный инструмент-детектив, который покажет, кто именно крадет твои секунды.

📌 1. Оцениваем общий масштаб бедствия
Сначала посмотрим, сколько времени ушло на загрузку в целом (ядро + userspace).

$ systemd-analyze
Startup finished in 253ms (kernel) + 933ms (initrd) + 6.873s (userspace) = 8.060s

Это дает общее понимание: если userspace занимает слишком много времени, значит, проблема в службах.

📌 2. Ищем виновника (команда blame)
Эта команда выводит список всех запущенных юнитов, отсортированных по времени инициализации — от самых медленных к самым быстрым.

$ systemd-analyze blame
3.811s NetworkManager-wait-online.service
806ms tuned.service
680ms postfix.service
490ms lvm2-monitor.service
...

В данном примере видно, что NetworkManager-wait-online.service задерживает запуск почти на 4 секунды.

📌 3. Анализируем критический путь
Иногда сервис запускается долго, но не тормозит остальных. Чтобы увидеть дерево зависимостей и понять, какой процесс реально блокирует финиш загрузки, используйте:

$ systemd-analyze critical-chain
graphical.target @9.663s
└─multi-user.target @9.661s
└─snapd.seeded.service @9.062s +62ms
└─basic.target @6.336s
└─sockets.target @6.334s
└─snapd.socket @6.316s +16ms
└─sysinit.target @6.281s
└─cloud-init.service @5.361s +905ms
└─systemd-networkd-wait-online.service @3.498s +1.860s

Здесь видно, что systemd-networkd-wait-online.service является узким местом в цепочке,.

💡 Совет:
Если вы нашли «тормоза», которые вам не нужны (например, postfix на рабочей станции или ожидание сети там, где это не критично), их можно отключить (systemctl disable) или оптимизировать.

#Linux #Systemd #DevOps #SysAdmin #Performance
👍4🔥3
💥 Фениксы и снежинки: как строить инфраструктуру, которая не ломается

🔥 25 декабря в 20:00 мск — бесплатный вебинар в OTUS

Почему одни инфраструктуры падают от малейшего чиха и восстанавливаются только «волшебником Васей», а другие перезапускаются за минуты даже после полного апокалипсиса?

Разберём, как превратить хрупкую «снежинку» в инфраструктуру-феникс: полностью воспроизводимую, декларативную и самовосстанавливающуюся.

📌 Что будет:
— Как распознать «снежинку» и почему она смертельно опасна
— Принципы «феникса»: самовосстановление и предсказуемость
— Ключевые инструменты: Terraform, Ansible, GitOps — смерть ручным настройкам
— Процессы, которые спасают: код-ревью, тесты, автоматизация

🎯 После вебинара вы сможете:
— Мгновенно находить снежинки и уничтожать их
— Создавать окружения одной командой
— Сделать инфраструктуру независимой от людей
— Спать спокойно, даже если сгорит весь дата-центр

👉 Регистрация открыта: https://otus.pw/JloL/

Вебинар приурочен к старту курса «DevOps-инженер: практики и инструменты»: за 5 месяцев — полный боевой стек Docker → Kubernetes → Terraform → Ansible → CI/CD → мониторинг.

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