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

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

РКН https://vk.cc/cMUwm4
Download Telegram
Администратор ищет файлы, которые были изменены менее 10 минут назад в каталоге /etc. Какая команда find с правильной опцией будет использована?
Anonymous Quiz
44%
find /etc -mtime -10
20%
find /etc -mmin -10
21%
find /etc -atime -10
15%
find /etc -cmin -10
👍6🔥2
🚀 Встречайте новый формат в @Gradeliftbot — Спринт!

Хотите проверить свои знания по Linux быстро и эффективно? Теперь в нашем боте доступен режим "Спринт" — 20 случайных вопросов из базы в 1500+ тестов!

👉 Попробовать @Gradeliftbot
👎2
Как правильно присвоить значение переменной в Bash?
Anonymous Quiz
25%
var = value
40%
var=value
8%
var := value
27%
set var value
💾 Bash-антигайд: Удаляй tmp-файлы даже после kill -9

Хей, защитник хоста!

Если твой скрипт аварийно завершается, временные файлы (/tmp) остаются.
Чтобы гарантировать удаление, используй ловушку EXIT.

#!/bin/bash
# Создай уникальное имя для временного файла
TMP_FILE=$(mktemp)

# 1. Ловушка EXIT (сигнал 0) сработает при ЛЮБОМ выходе
trap "rm -f $TMP_FILE" EXIT

# 2. Здесь идет твой основной код
echo "Лог пишется в $TMP_FILE" >> $TMP_FILE

# 3. Дополнительно можно перехватить SIGINT (2) и SIGTERM (15)
trap "rm -f $TMP_FILE; exit 1" INT TERM


Вывод: trap...EXIT обеспечивает, что функция очистки выполнится всегда, даже при ошибке.

#Bash #Автоматизация #Скрипты #trap #CLI
🔥3
🔥 Открытый урок «Terraform: как работать с ним через GitLab».

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

На вебинаре разберем:
✔️ Как использовать Terraform для управления инфраструктурой как кодом (IaC).
✔️ Настройку CI/CD-процессов в GitLab для работы с Terraform.
✔️ Лучшие практики разграничения окружения и управления конфигурацией.

Кому будет полезно:
- DevOps-лидам, управляющим инфраструктурой и CI/CD.
- Архитекторам, разрабатывающим стратегии инфраструктурной автоматизации.
- Инженерам, внедряющим Terraform в рабочие процессы.

Что вы получите:
- Понимание, Terraform-модули для работы через GitLab.
- Понимание, настройка и оптимизация пайплайнов CI/CD .
- Практические советы по безопасному и эффективному управлению инфраструктурой .

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 Секреты Pro-Docker: 4 хака, которые сделают твои образы в 5 раз меньше

Привет, контейнерный гуру!

Твои Docker-образы слишком большие и могут нести угрозу безопасности?.
Я собрал 4 критически важных приёма для hardening-а и оптимизации, которые должен знать каждый, кто работает с Docker в продакшене.

1. ⚙️ Оптимизация слоёв: Уменьши размер в 71%

Каждая инструкция RUN в Dockerfile создает новый уровень (слой), что раздувает конечный размер образа. Чтобы избежать этого, используй оператор && для объединения команд в одну инструкцию RUN.

# ПЛОХО: Создаст 3 слоя
RUN apt-get update
RUN apt-get install -y nodejs
RUN rm -rf /var/lib/apt/lists/*

# ХОРОШО: Создаст 1 слой и уменьшит размер образа
FROM alpine:3.12.0
RUN apk update && \
apk add --no-cache nodejs npm && \
rm -rf /var/cache/apk/*
# Используй --no-cache, чтобы не хранить временные файлы

За счет перехода на минимальные базовые образы (например, Alpine) и объединения команд ты можешь уменьшить размер образа на 71%.

2. 🛡 Безопасность: Запуск без root и CAP_DROP

Никогда не запускай контейнер с флагом --privileged, так как это равносильно получению прав root на хосте, позволяя, например, смонтировать его корневую ФС. Всегда переключайся на непривилегированного пользователя внутри контейнера.

# Создаем непривилегированного пользователя 'app'
# Используй инструкцию USER, чтобы избежать root
RUN groupadd -r app_grp && useradd -r -g app_grp app
USER app

# Если нужны только специфические права (например, bind к порту < 1024):
# Сбрось ВСЕ права (--cap-drop all) и добавь только необходимые
docker run --cap-drop ALL --cap-add CAP_NET_BIND_SERVICE alpine sh

Ограничение возможностей (Capabilities) — ключевой принцип безопасности, так как root в Linux — это коллекция возможностей, и Docker позволяет тебе их выборочно отключить.

3. 💾 Очистка: Удали висячий мусор

Если ты не удаляешь остановленные контейнеры или висячие образы (dangling images), они будут накапливаться и занимать дисковое пространство.

# Удаление всех остановленных контейнеров
# docker rm $(docker ps -aq -f status=exited)
docker rm $(docker ps -aq) -f

# Удаление всех висячих (без тегов) образов
docker rmi $(docker images -q -f dangling=true)

# Очистка всего Docker-мусора (образов, сетей, контейнеров)
# Используй с осторожностью, это удалит ВСЁ, что не используется
docker system prune -a

Используй docker system prune -a для быстрой очистки, но помни, что тома (volumes) не удаляются автоматически и требуют отдельной очистки, если они не используются.

4. 🧠 Ограничение ресурсов: Защита от DoS-атак

Ограничивай использование ресурсов с помощью cgroups, чтобы взломанный контейнер не смог вызвать отказ в обслуживании (DoS), исчерпав память или CPU хоста.

# Ограничение памяти (128 МБ)
# -m 128m задает жесткий лимит, предотвращая OOM на хосте
docker run -it --rm -m 128m my_app

# Ограничение использования CPU (на 2 CPU или 50% CPU-времени)
docker run -it --rm --cpus="2" my_app
# или, используя доли CFS:
docker run -d --name load_high -c 512 amouat/stress


Вывод: Применение этих практик (минимальные образы, непривилегированные пользователи и ограничения ресурсов) — это не просто оптимизация, это создание надёжной архитектуры, которую ты можешь смело развертывать в production.

#Docker #DevOps #Security #Hardening #Optimization #CLI #Сборник
👍1
systemctl – 5 команд, которые должен знать каждый DevOps-инженер

Привет, инженер автоматизации!

Если ты переходишь с SysVinit на systemd, тебе нужен надёжный командник для быстрого траблшутинга и управления сервисами.
Команда systemctl — это твой универсальный диспетчер. Вот 5 ключевых функций, которые ты будешь использовать каждый день.

1. 🔍 Полный статус сервиса

Эта команда показывает, активен ли сервис, его PID, потребление ресурсов (CGroup, Memory, CPU) и последние строки логов.

# Получить детальную информацию о веб-сервере Nginx
systemctl status nginx.service
# PID, CGroup, Memory, CPU - важные данные для траблшутинга


2. 🚀 Включение и активация (autostart)

systemctl enable создаёт символическую ссылку, чтобы сервис запускался при загрузке системы. Флаг --now сразу запускает его.

# Включить автозапуск SSHD при загрузке и немедленно запустить
sudo systemctl enable --now sshd.service

# Проверить, включен ли сервис для автозапуска
systemctl is-enabled sshd.service


3. 💾 Применение новой конфигурации без перезапуска

Если ты изменил конфигурационный файл (например, /etc/ssh/sshd_config), тебе нужно, чтобы демон перечитал его, не прерывая работу.

# Перезагрузка конфигурации systemd, чтобы обнаружить изменения в юнит-файлах
sudo systemctl daemon-reload
# Перезагрузить конфигурацию самого сервиса (без полного restart)
sudo systemctl reload sshd.service


4. 📈 Анализ скорости загрузки (Boot Performance)

Если система загружается медленно, эта команда покажет тебе, какие юниты (сервисы) потребляют больше всего времени.

# Вывести список процессов, отсортированных по времени запуска
systemd-analyze blame

# Посмотреть общее время, потраченное на загрузку ядра и userspace
systemd-analyze time


5. 📜 Просмотр всех файлов юнитов

Для DevOps критически важно знать, какие сервисы вообще установлены в системе и в каком они состоянии (включен/выключен).

# Вывести список всех установленных файлов модулей типа service и их состояние (enabled/disabled/static/masked)
systemctl list-unit-files --type=service


💡 Вывод

Команда systemctl — это центральный инструмент для твоей работы в Linux. Используя status для детальной проверки, reload для безопасных обновлений и systemd-analyze blame для диагностики, ты можешь эффективно управлять production-средой.

#DevOps #systemd #systemctl #CLI #Автоматизация
👍16
⚠️ Антигайд: Как ntpdate убивает твой Dovecot и что делать

Привет, инженер автоматизации!

Ты знал, что NTP-синхронизация может мгновенно "убить" Dovecot? Резкий перевод часов назад приводит к его аварийному завершению.
Используй плавную синхронизацию (ntpd/chrony) или перезапускай сервис.

# 1. Если ты используешь ntpdate, Dovecot рухнет (особенно при переводе часов назад)
# Пример опасной команды:
# ntpdate -u pool.ntp.org

# 2. Правильное действие: останавливаем, синхронизируем, запускаем
sudo systemctl stop dovecot.service
sudo ntpdate pool.ntp.org
sudo systemctl restart dovecot.service


Вывод: Перед выполнением ntpdate рекомендуется завершать Dovecot и запускать заново.

#Антигайд #Dovecot #NTP #Безопасность #systemd
🔥5
Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»!

Вы хотите развернуть приложение в Kubernetes без тонны ручных команд и нервов? Мечтаете о системе, где код сам «доставляется» в прод по принципу «закоммитил — заработало»?

Приглашаем вас на открытый урок в рамках курса «Инфраструктурная платформа на основе Kubernetes, где разберём»:
- как перестать вручную деплоить приложения;
- как добиться стабильного состояния кластера;
- как сделать процессы прозрачными и контролируемыми.

🗓 Когда: 23.12, в 20-00
Для кого: DevOps‑инженеры, разработчики, администраторы Kubernetes, все, кто хочет автоматизировать деплой.

На уроке вы узнаете:
💚 Что такое GitOps и почему это новый стандарт работы с Kubernetes.
💚 Как Flux автоматизирует синхронизацию кластера с Git‑репозиторием.
💚Практические примеры настройки Flux для реальных сценариев.
💚Как избежать типичных ошибок при внедрении GitOps.
💚Какие преимущества даёт подход «конфигурация как код».

После урока вы сможете:
- настроить базовый пайплайн GitOps с Flux;
- понять, как интегрировать Flux в существующую инфраструктуру;
- оценить, подходит ли GitOps для вашего проекта.

➡️ Регистрирация: https://otus.pw/u7Na/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🔥 Load Average: Когда «цифра» значит «Срочно чини!»

Привет, системный траблшутер!

Как понять, когда Load Average (LA) реально опасен?.
Критическая нагрузка — это число ядер твоего ЦПУ. Если LA > NCPU, то пора чинить!

# 1. Узнай свой лимит: Количество логических процессоров (ядер)
# Информация берется из системного псевдофайла
NCPU=$(grep -c '^processor' /proc/cpuinfo)
echo "Твой лимит (NCPU): $NCPU"

# 2. Проверь текущую среднюю загрузку (за 1, 5, 15 минут)
uptime
# Load Average включает процессы, ожидающие ЦПУ ИЛИ Disk I/O

# 3. Пример сравнения: если LA за 1 мин выше лимита NCPU
CURRENT_LOAD=$(cat /proc/loadavg | cut -d ' ' -f1)
if (( $(echo "$CURRENT_LOAD > $NCPU" | bc -l) )); then
echo "🚨 СЕРВЕР ПЕРЕГРУЖЕН: $CURRENT_LOAD > $NCPU"
fi

Вывод: Если LA стабильно выше числа ядер, система насыщена.

#Мониторинг #CLI #LoadAverage #Кейс
👍9
Какой символ используется для обозначения начала комментария в Bash-скрипте (кроме первой строки shebang)?
Anonymous Quiz
11%
//
4%
;
82%
#
2%
--
👍14
Какая конструкция позволяет использовать значение по умолчанию, если переменная не установлена или пуста?
Anonymous Quiz
36%
${parameter*=default}
13%
${parameter??default}
26%
${parameter$$default}
25%
${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 #Скрипт #Утилиты
🔥4