Знали, что «битый» YAML-файл может уронить весь CI/CD пайплайн еще до того, как начнется деплой?
Лишний пробел или неверный отступ в манифестах
Самый быстрый способ проверить файл без установки лишнего софта — встроенные возможности
Если файл валиден, команда ничего не выведет, если есть ошибка, то ты получишь точную строку и номер символа.
Для продвинутой проверки с учетом лучших практик используй специализированный линтер:
Это подсветит не только ошибки синтаксиса, но и нарушение стилистики (слишком длинные строки, лишние пробелы в конце).
Добавь проверку в pre-commit хук своего репозитория, чтобы ошибки вообще не попадали в Git:
🔥 Маленькая проверка на входе экономит десятки минут ожидания «красного» пайплайна в
🚪 Linux Ready | #совет
Лишний пробел или неверный отступ в манифестах
Kubernetes или Ansible это классическая причина падений. Чтобы не тратить время на запуск тяжелых пайплайнов ради проверки синтаксиса, стоит использовать легковесные утилиты для локальной валидации.Самый быстрый способ проверить файл без установки лишнего софта — встроенные возможности
Python:python3 -c 'import yaml, sys; yaml.safe_load(sys.stdin)' < deployment.yaml
Если файл валиден, команда ничего не выведет, если есть ошибка, то ты получишь точную строку и номер символа.
Для продвинутой проверки с учетом лучших практик используй специализированный линтер:
yamllint -d relaxed config.yaml
Это подсветит не только ошибки синтаксиса, но и нарушение стилистики (слишком длинные строки, лишние пробелы в конце).
Добавь проверку в pre-commit хук своего репозитория, чтобы ошибки вообще не попадали в Git:
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.33.0
hooks:
- id: yamllint
GitLab или GitHub.Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥9👍7
Как мгновенно откатить ошибочную команду в shell!
Запустил команду и сомневаешься, что она делает? Повтори последнюю команду без выполнения, просто выведи её:
Хочешь, чтобы при повторе команда сначала появлялась в терминале для проверки, а не исполнялась сразу?
Теперь при вводе:
🔥 Команда вставится в строку, но не выполнится, пока не нажмёшь Enter. Если увидел, что это не то — просто редактируй или отменяй.
🚪 Linux Ready | #совет
Запустил команду и сомневаешься, что она делает? Повтори последнюю команду без выполнения, просто выведи её:
!!:p
!! — последняя команда из истории, :p — print only.Хочешь, чтобы при повторе команда сначала появлялась в терминале для проверки, а не исполнялась сразу?
shopt -s histverify
Теперь при вводе:
!!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8🔥8
День рождения Линуса Торвальдса: создателю Linux и Git исполнилось 56 лет!
Сегодня, 28 декабря, мир IT отмечает день рождения Линуса Бенедикта Торвальдса. Он родился в 1969 году в Хельсинки и начал программировать в 11 лет на Commodore VIC-20.
В 1991 году Линус выпустил ядро Linux, ставшее основой серверов, Android и тысяч embedded-систем. В 2005 году создал Git, который появился как быстрый инструмент для разработки самого Linux и за считанные годы стал стандартом индустрии.
@linux_ready
Сегодня, 28 декабря, мир IT отмечает день рождения Линуса Бенедикта Торвальдса. Он родился в 1969 году в Хельсинки и начал программировать в 11 лет на Commodore VIC-20.
В 1991 году Линус выпустил ядро Linux, ставшее основой серверов, Android и тысяч embedded-систем. В 2005 году создал Git, который появился как быстрый инструмент для разработки самого Linux и за считанные годы стал стандартом индустрии.
@linux_ready
2🔥53❤24👍16👎2
Например, когда домен вводится в браузере, он сначала проверяет кеш, если IP не найден — запускается цепочка DNS-запросов: Root - TLD - Authoritative сервер. В итоге браузер получает IP и только после этого отправляет HTTP-запрос на сервер.
На картинке — наглядная схема того, как именно работает DNS-резолв шаг за шагом.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍10🔥9
Как быстро спрятать содержимое каталога без удаления файлов!
Иногда нужно быстро убрать содержимое каталога из системы, проверить поведение приложения, спрятать данные, не трогая их физически.
В Linux есть способ
Каталог
Процессы с уже открытыми файлами (FD) продолжат работать с ними, а новые обращения увидят пустой каталог.
Чтобы вернуть всё обратно:
Если
🔥
🚪 Linux Ready | #совет
Иногда нужно быстро убрать содержимое каталога из системы, проверить поведение приложения, спрятать данные, не трогая их физически.
В Linux есть способ
bind-mount:sudo mount --bind /tmp/empty /var/www/html
Каталог
/var/www/html становится пустым, но файлы остаются на диске, просто скрыты другим бинд-моунтом.Процессы с уже открытыми файлами (FD) продолжат работать с ними, а новые обращения увидят пустой каталог.
Чтобы вернуть всё обратно:
sudo umount /var/www/html
Если
umount блокируется процессами в пути, используйте umount -l (lazy) или предварительно проверьте, что держит каталог.mount --bind - быстрый переключатель состояния для тестов, A/B конфигураций и временных экспериментов в проде с минимальным риском для данных на диске.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍12🔥9
Например, DNS переводит домены в IP-адреса, HTTPS отвечает за безопасное соединение с сайтами и API, а SSH позволяет безопасно подключаться к серверам.
На картинке — сетевые сервисы, их протоколы и стандартные порты, которые постоянно встречаются в backend, DevOps и инфраструктурной работе.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥10🤝6❤5👎2
Этому каналу всего полгода, спасибо каждому за поддержку. Цель на новый год: набрать более 25 тысяч подписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤45👍22🔥14🤝2
Открываем ISO-образы в Linux без распаковки!
ISO монтируются как обычные каталоги через loop-устройство, что позволяет просматривать структуру диска и копировать файлы без изменения самого образа.
Монтирование в режиме только для чтения:
Проверка монтирования и просмотр содержимого:
Копирование файлов с сохранением доступных в образе атрибутов:
Сохранение прав, симлинков и расширенных атрибутов зависит от наличия поддержки Rock Ridge/Joliet в самом ISO. Ключ
Размонтирование:
Shell-функция для частого использования с автоматической очисткой:
Вызов:
🔥 Образ подключается в
🚪 Linux Ready | #практика
ISO монтируются как обычные каталоги через loop-устройство, что позволяет просматривать структуру диска и копировать файлы без изменения самого образа.
Монтирование в режиме только для чтения:
sudo mkdir -p /mnt/iso
sudo mount -o loop,ro image.iso /mnt/iso
Проверка монтирования и просмотр содержимого:
findmnt /mnt/iso
ls /mnt/iso
Копирование файлов с сохранением доступных в образе атрибутов:
cp -a /mnt/iso ~/iso-copy/
Сохранение прав, симлинков и расширенных атрибутов зависит от наличия поддержки Rock Ridge/Joliet в самом ISO. Ключ
-a копирует только те метаданные, которые реально присутствуют и доступны.Размонтирование:
cd ~
sudo umount /mnt/iso
Shell-функция для частого использования с автоматической очисткой:
mountiso() {
local dir
dir=$(sudo mktemp -d /tmp/iso-XXXXXX)
sudo mount -o loop,ro "$1" "$dir" && cd "$dir"
echo "Для размонтирования выполните: sudo umount $dir && sudo rmdir $dir"
}Вызов:
mountiso ./ubuntu-24.04.iso
ro и остаётся неизменным. В контейнерах нужны CAP_SYS_ADMIN и доступ к /dev/loop* или запуск с --privileged.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤15🤝7
Как узнать, какие shared-библиотеки фактически использует процесс?
Хочешь понять, какие .so библиотеки реально загружены в память процесса, без ldd, lsof и сторонних утилит?
Нужно убедиться, что приложение использует именно нужную версию библиотеки?
Можно быстро увидеть, не была ли библиотека подменена или загружена через окружение:
🔥 maps отражает что уже загружено в память в момент проверки. Если либы нет — она ещё не загружена или может подгрузиться позже через
🚪 Linux Ready | #совет
Хочешь понять, какие .so библиотеки реально загружены в память процесса, без ldd, lsof и сторонних утилит?
sudo grep "\.so" /proc/1234/maps
/proc/<PID>/maps показывает фактические file-backed mmap’ы, включая ELF shared objects.Нужно убедиться, что приложение использует именно нужную версию библиотеки?
grep "/lib/x86_64-linux-gnu/libssl.so" /proc/1234/maps
Можно быстро увидеть, не была ли библиотека подменена или загружена через окружение:
grep "LD_PRELOAD=" /proc/1234/environ
dlopen().Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥11👍10
Например,
ssh -L открывает локальный порт и направляет трафик через SSH на удалённый сервис, а подключение через bastion даёт безопасный доступ к сервисам в приватной сети без public IP.На картинке — варианты port forwarding, плюс схема, как трафик идёт от SSH-клиента к внутреннему веб-серверу.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥12👍9
Проверим, что именно подставит shell в *.log!
Включаем режим, чтобы при отсутствии совпадений маска не оставалась строкой
Печатаем точный список аргументов, которые реально подставятся (включая пробелы и спецсимволы):
Возвращаем настройку обратно, чтобы не менять поведение интерактивной сессии:
🔥 Так проверяем ровно то, что передастся в команду, без
🚪 Linux Ready | #совет
Включаем режим, чтобы при отсутствии совпадений маска не оставалась строкой
*.log:shopt -s nullglob
Печатаем точный список аргументов, которые реально подставятся (включая пробелы и спецсимволы):
printf '%q\n' -- *.log
%q выводит имя так, как его безопасно повторить в shell.Возвращаем настройку обратно, чтобы не менять поведение интерактивной сессии:
shopt -u nullglob
ls (который форматирует вывод) и без пайпов, которые ломаются на пробелах/переводах строк.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥8👍7🤝2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Этот репозиторий включает лучшие практики и команды для Linux/macOS терминала. Здесь собраны приемы, комбинации CLI-утилит, практики, которые помогают работать быстрее, искать ошибки, обрабатывать данные и автоматизировать рутинные задачи. Отличный ресурс, чтобы повысить эффективность работы.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥7
Как быстро поднять HTTP-шаринг директории одной командой!
В Linux можно за секунду превратить любую папку в HTTP-файлообменник, встроенным модулем Python. Помогает, когда нужно быстро передать файлы в сети или проверить статику фронта.
Нужен список файлов в браузере с автоматической навигацией? Он уже там:
Если хотите, чтобы сервер слушал только
Нужно запустить и получить
Хотите скачать всю директорию одной командой на другой машине?
🔥 Рекурсивно, без выхода за пределы папки и без лишних путей.
🚪 Linux Ready | #совет
В Linux можно за секунду превратить любую папку в HTTP-файлообменник, встроенным модулем Python. Помогает, когда нужно быстро передать файлы в сети или проверить статику фронта.
Нужен список файлов в браузере с автоматической навигацией? Он уже там:
cd /path/to/share
python3 -m http.server 8080
Если хотите, чтобы сервер слушал только
localhost (без риска открыть доступ в сеть):python3 -m http.server 8080 --bind 127.0.0.1
Нужно запустить и получить
PID одной строкой?python3 -m http.server 8080 & echo $!
Хотите скачать всю директорию одной командой на другой машине?
wget -r -np -nH --cut-dirs=1 http://HOST:8080/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥12❤7
Например,
BIOS/UEFI запускает проверку железа (POST) и ищет устройства, GRUB загружает ядро, а systemd поднимает сервисы и готовит систему к логину.На картинке — 8 этапов boot-процесса, которые стоит держать под рукой, чтобы быстро понимать, где искать проблему при отладке или настройке сервера.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤10🔥8
Генерация SSH-ключей в Linux!
SSH-ключи применяются для аутентификации на серверах, в Git, CI/CD и автоматизации.
Создание Ed25519 (предпочтительный алгоритм):
Создание RSA 4096 (для совместимости со средами без поддержки Ed25519):
Просмотр файлов и проверка отпечатка публичного ключа:
Отпечаток публичного ключа можно использовать для сверки при добавлении ключа в удалённые системы.
Копирование публичного ключа на сервер (рекомендуемый способ):
Ручное добавление ключа на сервере (если
Важно:
Проверка входа по ключу:
Запуск SSH-агента в текущей сессии и добавление приватного ключа:
Агент, запущенный через
Корректные права доступа:
🔥 Рабочие ключи следует создавать с
🚪 Linux Ready | #практика
SSH-ключи применяются для аутентификации на серверах, в Git, CI/CD и автоматизации.
Создание Ed25519 (предпочтительный алгоритм):
ssh-keygen -t ed25519 -a 64 -C "dev@host" -f ~/.ssh/id_ed25519
Создание RSA 4096 (для совместимости со средами без поддержки Ed25519):
ssh-keygen -t rsa -b 4096 -C "dev@host" -f ~/.ssh/id_rsa
Просмотр файлов и проверка отпечатка публичного ключа:
ls -l ~/.ssh/
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
Отпечаток публичного ключа можно использовать для сверки при добавлении ключа в удалённые системы.
Копирование публичного ключа на сервер (рекомендуемый способ):
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
Ручное добавление ключа на сервере (если
ssh-copy-id недоступен):install -m 700 -d ~user/.ssh
printf '%s\n' "ВАШ_PUBLIC_KEY" >> ~user/.ssh/authorized_keys
chmod 600 ~user/.ssh/authorized_keys
chown -R user:user ~user/.ssh
Важно:
authorized_keys должен находиться в ~user/.ssh/ на сервере, содержать один ключ на строку, а также иметь корректные права и владельца.Проверка входа по ключу:
ssh -i ~/.ssh/id_ed25519 user@server
Запуск SSH-агента в текущей сессии и добавление приватного ключа:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Агент, запущенный через
eval, действует временно для текущего шелла.Корректные права доступа:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
passphrase (приватный ключ хранится на диске в зашифрованном виде) и загружать в SSH-агент или системный keyring, чтобы не вводить passphrase при каждом подключении.Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍11🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь найдете примеры команд, работу с файлами и процессами, ввод/вывод, перенаправления и многое другое, что реально используется в повседневной работе. Материал написан простым языком и подходит как для новичков, так и для тех, кто хочет перейти от теории к осознанному владению терминалом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8🤝7
Запись и воспроизведение терминальной сессии!
Иногда нужно показать, как ты что-то делал в терминале: отладку, деплой, последовательность команд.
Linux умеет записывать терминал как сессию, включая тайминги:
После этого делаем все что нужно.
Завершаем запись обычным выходом:
Теперь можно проиграть сессию с теми же паузами:
🔥 Помогает, когда нужно зафиксировать ручной деплой, приложить воспроизводимую сессию к баг-репорту или восстановить ход действий.
🚪 Linux Ready | #совет
Иногда нужно показать, как ты что-то делал в терминале: отладку, деплой, последовательность команд.
Linux умеет записывать терминал как сессию, включая тайминги:
script -t 2> timing.log session.log
После этого делаем все что нужно.
Завершаем запись обычным выходом:
exit
Теперь можно проиграть сессию с теми же паузами:
scriptreplay timing.log session.log
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🤝8❤7
В этой статье:
• Изучите отличия между Linux для PC и Linux для встраиваемых систем;
• Настроите окружение и соберёте собственное минимальное ядро Linux без Buildroot и Yocto;
• Научитесь кросс-компилировать ядро и собирать образ SD-карты для Raspberry Pi 3 и 4;
• Поймёте, как создаётся полноценная система;🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9❤7
Как быстро передавать файлы между серверами через tar-поток по SSH!
Перенос каталогов без создания архива на диске. Поток идёт напрямую, распаковка выполняется сразу на целевой стороне.
Push каталога на удалённый сервер:
Метод потоковый — файлы не копятся в RAM целиком, запись сразу в указанную директорию.
Сжатие в момент передачи:
Сжатие экономит трафик и может ускорить перенос, но на слабом или загруженном CPU иногда замедляет.
Мониторинг прогресса (не меняет поток):
Удобно для забора бэкапов, артефактов сборки и выгрузки данных со служебных серверов.
Флаги для миграций, где важны права, владельцы,
Владельцы и расширенные атрибуты применятся только при достаточных правах у пользователя.
🔥 Нет промежуточных архивов на диске; Для инкрементальных копий лучше
🚪 Linux Ready | #практика
Перенос каталогов без создания архива на диске. Поток идёт напрямую, распаковка выполняется сразу на целевой стороне.
Push каталога на удалённый сервер:
tar -cf - ./my-folder | ssh user@server "tar -C /home/user -xf -"
Метод потоковый — файлы не копятся в RAM целиком, запись сразу в указанную директорию.
Сжатие в момент передачи:
tar -czf - ./my-folder | ssh user@server "tar -C /home/user -xzf -"
Сжатие экономит трафик и может ускорить перенос, но на слабом или загруженном CPU иногда замедляет.
Мониторинг прогресса (не меняет поток):
tar -cf - ./big-data | pv | ssh user@server "tar -C /data -xf -"
pv просто показывает скорость, объём и ETA. Без него всё работает так же, но без визуального прогресса.Pull каталога к себе:ssh user@server "tar -C /data -cf - ./remote-folder" | tar -C ./target -xf -
Удобно для забора бэкапов, артефактов сборки и выгрузки данных со служебных серверов.
Флаги для миграций, где важны права, владельцы,
ACL и xattrs (обычно под root):-p --same-owner --numeric-owner --acls --xattrs
Владельцы и расширенные атрибуты применятся только при достаточных правах у пользователя.
rsync; Для изоляции раздела можно добавить --one-file-systemPlease open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🤝6🔥3