DevOps Ready | IT
6.33K subscribers
670 photos
52 videos
302 links
Авторский канал по DevOps разработке.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/devops_ready
Download Telegram
Разрежённые файлы (sparse files) и экономия диска!

В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.

Создание файла большого размера без записи данных:
truncate -s 10G bigfile.img


Файл имеет логический размер 10G, но почти не занимает место на диске.

Проверка:
ls -lh bigfile.img
du -h bigfile.img


ls показывает логический размер файла, du — реально занятое дисковое пространство.

Создание sparse-файла через dd:
dd if=/dev/zero of=bigfile.img bs=1 count=0 seek=10G


Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.

Частичная запись данных:
printf 'DATA' | dd of=bigfile.img bs=1 seek=1G conv=notrunc


Физически будет занят только небольшой участок около 1G, остальное останется дырами.

Просмотр расположения данных:
filefrag -v bigfile.img


Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).

Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
fallocate -d bigfile.img


Точечное выбивание физических блоков с сохранением логического размера:
fallocate --punch-hole --offset 1G --length 500M --keep-size bigfile.img


Корректное копирование sparse-файлов:
cp --sparse=always src.img dst.img


Для архивов:
tar --sparse -cf backup.tar bigfile.img


Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).

🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥6🤝1
🖼️ 7 команд для работы с переменными окружения в CI/CD. Полезно для отладки пайплайнов, настройки секретов и управления конфигурациями!

В этом посте собраны методы управления Environment Variables: от простого вывода списка до маскирования данных и передачи значений между этапами сборки. Работают в GitLab CI, GitHub Actions и локальных Docker-контейнерах.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥7👍5🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Вводишь любую команду в терминале, и он по частям объясняет, что делает каждая часть. Не просто man-ка, а понятный синтакс-анализ.

Особенно кайф для тех, кто работает в Linux/DevOps/CI среде и хочет разбираться, а не наугад копипастить из StackOverflow.

📌 Оставляю ссылочку: explainshell.com

➡️ DevOps Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥14🤝9
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Awesome Linux Software — список лучших приложений, утилит и инструментов!

Здесь собран большой русскоязычный список полезного софта: консольные утилиты, системные инструменты, графические приложения, окружения рабочего стола, а также ссылки на форумы и полезные ресурсы по Linux.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤝97🔥1
Как убрать зависший процесс, дав ему шанс завершиться нормально?

Иногда процесс нужно убрать, но SIGKILL сразу не всегда правильно, можно потерять буферы, получить битые временные файлы.

Сначала отправь корректный сигнал завершения:
kill -TERM 1234


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

Подожди пару секунд (значение условное, часто этого достаточно):
sleep 2


Если не вышел, завершаем принудительно:
kill -KILL 1234 2>/dev/null || true


SIGKILL нельзя перехватить: ядро завершит процесс (за исключением редких случаев D-state из-за I/O).

🔥 SIGTERM - позволяет процессу корректно освободить ресурсы и закрыть файловые дескрипторы; SIGKILL используй только как fallback, когда процесс игнорирует сигналы и завис.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤝10🔥8
19👍15🔥11😁1
Почему grep выводит данные с задержкой в пайпах?

Бывало tail -f app.log | grep ERROR - лог пишется, а grep молчит и выводит всё сразу через секунды?

Это не баг. Большинство CLI-утилит буферизуют stdout, когда работают не в TTY, а в пайпе. Отключаем буферизацию:
stdbuf -oL grep "ERROR" app.log


-oL — построчный вывод (line-buffered).

Классический сценарий мониторинга логов без задержек:
tail -f app.log | stdbuf -oL grep "ERROR"


Альтернатива специально для grep:
tail -f app.log | grep --line-buffered "ERROR"


Работает и с другими командами:
journalctl -f | stdbuf -oL grep nginx


🔥 Если команда в пайпе не отвечает, почти всегда виновата буферизация. stdbuf -oL (или grep --line-buffered) возвращает вывод без переписывания пайпа.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥6🤝4
📂 Напоминалка для работы с tar!

Например, tar czf создаёт архив с сжатием, а tar xzf позволяет быстро распаковать .tar.gz.

На картинке — команды tar, которые стоит держать под рукой: создание архивов, распаковка, просмотр содержимого и работа с gzip / bzip2 / xz.

Сохрани, чтобы не забыть!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥7👍5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ LYM — интерактивный учебник с реальными примерами!

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

📌 Оставляю ссылочку: lym.readthedocs.io

➡️ DevOps Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍94🤝4
🖼️ Разбираем 7 приёмов работы с probes и health-check в Kubernetes!

В этом посте собраны ключевые параметры и типы проверок (Liveness, Readiness, Startup), которые помогут кластеру понять, когда ваш контейнер готов принимать трафик, а когда его пора перезагрузить.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥10👍5🤝1
📂 Напоминалка по NAT (Network Address Translation)!

NAT позволяет устройствам из приватной сети выходить в интернет через один публичный IP, подменяя IP и порты на роутере.

На картинке — как меняется пакет до и после NAT, как работает NAT-таблица и почему несколько устройств могут использовать один public IP.

Сохрани, чтобы не забыть!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥10🤝71
Работа с символическими и жёсткими ссылками!

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

Создание жёсткой ссылки:
ln original.txt hardlink.txt


Жёсткая ссылка указывает на тот же inode, что и исходный файл. Удаление одного имени не удаляет данные, пока существует хотя бы одна ссылка.

Ограничения жёстких ссылок: они практически всегда применимы только к файлам; на каталоги, как правило, запрещены на уровне файловой системы.

Создание символической ссылки:
ln -s /path/to/original symlink


Симлинк — это отдельный файл, содержащий путь к целевому объекту (файлу или каталогу).

Просмотр ссылок и inode:
ls -li


Одинаковый inode — жёсткие ссылки на один файл. Симлинк имеет собственный inode.

Проверка, куда указывает символическая ссылка:
readlink symlink
readlink -f symlink


-f разворачивает цепочку ссылок до реального пути.

Перезапись существующей символической ссылки:
ln -sfn /new/path symlink


-s — symbolic
-f — удаляет существующий путь назначения перед созданием
-n — не разыменовывать симлинк на каталог

Удаление ссылки:
rm symlink
rm hardlink.txt


Для жёсткой ссылки это удаление имени, а не данных.

🔥 Симлинки зависят от пути и могут «сломаться»; жёсткие ссылки устойчивы, но ограничены одной файловой системой и практически не применяются для каталогов.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍8🔥7
📂 Напоминалка по HTTP и сетевым протоколам!

Например, HTTP/1.1 использует постоянные соединения, HTTP/2 умеет мультиплексировать запросы в одном TCP-канале, а HTTP/3 работает поверх QUIC и UDP.

На картинке — наглядная эволюция HTTP от первых версий до современных стандартов.

Сохрани, чтобы не забыть!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6🤝63