Даже опытные инженеры иногда путаются в отступах или не знают, как заставить Helm проверить наличие секрета в кластере перед деплоем. Эти функции сделают ваши чарты чище, безопаснее и гибче.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5👍5
Например,
pvcreate инициализирует диск или раздел под LVM, а vgcreate объединяет физические тома в volume group.На картинке — наглядная схема архитектуры LVM и самые часто используемые команды для управления physical volumes, volume groups и logical volumes.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥6🤝3
Как защитить скрипт от двойного запуска?
Бывает, что cron/CI/ручной запуск запускают один и тот же скрипт дважды.
Своеобразным замком может послужить
Здесь мы открыли файл-замок и привязали его к FD
Пробуем взять
Дальше можно выполнять работу, пока процесс жив,
Для проверки откроем второй терминал и запустим тот же блок, второй экземпляр завершится (или можешь заменить
🔥
➡️ DevOps Ready | #совет
Бывает, что cron/CI/ручной запуск запускают один и тот же скрипт дважды.
Своеобразным замком может послужить
flock, он берёт advisory lock на файл через дескриптор:exec 9>/tmp/myjob.lock
Здесь мы открыли файл-замок и привязали его к FD
9.Пробуем взять
lock без ожидания, если уже занято, сразу выходим:flock -n 9 || exit 0
Дальше можно выполнять работу, пока процесс жив,
lock удерживается ядром:echo "running: $$"
Для проверки откроем второй терминал и запустим тот же блок, второй экземпляр завершится (или можешь заменить
exit 0 на сообщение):sleep 10
flock - способ защитить скрипт от повторного запуска: блокировка привязана к процессу, автоматически снимается ядром и не требует ручной очистки файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍7🔥7
В этой статье:
• Разбирают эволюцию DevOps от «собака-деплоер» к платформенной инженерии;
• Показывают, какие скиллы востребованы;
• Объясняют карьерный трек: что отличает mid от senior/platform engineer и как перейти от «фикса серваков» к дизайну инфраструктуры.🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥4
Поиск открытых, но удалённых файлов!
Если файл удалён, но процесс продолжает удерживать его файловый дескриптор, место на диске не освобождается до закрытия этого дескриптора.
Поиск таких файлов:
Команда показывает файлы с
Фильтрация по пути:
Позволяет отфильтровать файлы, связанные с указанным путём (по имени/расположению файла).
Формат вывода зависит от версии
Освобождение места без перезапуска системы:
Работает только для демонов, которые корректно обрабатывают сигнал перезагрузки конфигурации и переоткрывают файловые дескрипторы.
Завершение процесса:
Отправляется
Проверка после очистки:
Важно убедиться, что удалённые файлы больше не удерживаются процессами.
🔥 Типичная ситуация при ручном удалении логов без
➡️ DevOps Ready | #практика
Если файл удалён, но процесс продолжает удерживать его файловый дескриптор, место на диске не освобождается до закрытия этого дескриптора.
Поиск таких файлов:
sudo lsof -nP +L1
Команда показывает файлы с
link count = 0 — то есть удалённые из файловой системы (unlinked), но всё ещё открытые процессами.Фильтрация по пути:
sudo lsof -nP +L1 /var
Позволяет отфильтровать файлы, связанные с указанным путём (по имени/расположению файла).
Формат вывода зависит от версии
lsof и ширины терминала, поэтому парсинг через awk возможен, но небезопасен — используйте вывод как ориентир.Освобождение места без перезапуска системы:
sudo kill -HUP PID
Работает только для демонов, которые корректно обрабатывают сигнал перезагрузки конфигурации и переоткрывают файловые дескрипторы.
Завершение процесса:
sudo kill PID
Отправляется
SIGTERM — процесс штатно завершается, закрывает файловые дескрипторы и освобождает место. SIGKILL (-9) — крайняя мера, если процесс не реагирует.Проверка после очистки:
df -h
sudo lsof -nP +L1
Важно убедиться, что удалённые файлы больше не удерживаются процессами.
logrotate или при аварийной ротации файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7🤝6❤2
Выдача бинарникам точечных привилегий через setcap!
Иногда программе нужен root только для одной операции (bind к 80 порту, raw socket, cap_sys_ptrace). Для этого в Linux есть capabilities — они управляются через
Проверка
Типичный вывод:
В современных дистрибутивах
Пример: разрешить бинарнику слушать порт
Теперь запуск возможен от обычного пользователя:
Проверка назначенных
Удаление
Несколько
Просмотр списка и описания всех
Важно: работает только на файловых системах с поддержкой extended attributes,
🔥
➡️ DevOps Ready | #практика
Иногда программе нужен root только для одной операции (bind к 80 порту, raw socket, cap_sys_ptrace). Для этого в Linux есть capabilities — они управляются через
setcap.Проверка
capabilities у исполняемого файла:getcap /usr/bin/ping
Типичный вывод:
/usr/bin/ping cap_net_raw=ep
В современных дистрибутивах
ping часто не setuid-root, а работает через capabilities, получая доступ к raw socket.Пример: разрешить бинарнику слушать порт
<1024 без root:sudo setcap cap_net_bind_service=ep ./server
Теперь запуск возможен от обычного пользователя:
./server
Bind к :80 будет работать без sudo.Проверка назначенных
capabilities:getcap ./server
Удаление
capabilities у бинарника, если нужно полностью убрать выданные ранее права и вернуть его в обычное состояние:sudo setcap -r ./server
Несколько
capabilities сразу, если бинарнику требуется больше одного привилегированного действия:sudo setcap cap_net_bind_service,cap_sys_time=ep ./tool
Просмотр списка и описания всех
capabilities:man 7 capabilities
Важно: работает только на файловых системах с поддержкой extended attributes,
cp по умолчанию сбрасывает xattr (используйте cp --preserve=xattr или -a), tar сохраняет capabilities только с --xattrsCapabilities — способ выдавать минимально необходимые права, вместо запуска всего от root.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5🤝5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Отличный репозиторий с реальными вопросами, которые проверяют знания Linux и DevOps. Здесь есть вопросы по командам, процессам, файловым системам, сетям, bash и другим темам, которые часто встречаются в задачах и на собеседованиях.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥10🤝7❤2
Скрипт с автозапуском: чтобы не забыть — автоматизируй!
Хочешь, чтобы скрипт сам запускался при включении Linux? Например, для логирования, запуска сервисов или отправки уведомлений. Сделать это можно через
Сначала создаём bash-скрипт, который будет выполняться при загрузке. Пусть он, например, записывает время старта в лог-файл:
Сохрани его как /usr/local/bin/boot-script,sh и сделай исполняемым:
Теперь создаём unit-файл systemd:
/etc/systemd/system/boot-script.service
Тип
А
Осталось активировать сервис:
Теперь скрипт будет выполняться каждый раз при загрузке системы. Убедиться в этом можно, посмотрев лог:
🔥 Удобно, если хочешь автоматизировать повседневные задачи — без crontab и лишних костылей.
➡️ DevOps Ready | #практика
Хочешь, чтобы скрипт сам запускался при включении Linux? Например, для логирования, запуска сервисов или отправки уведомлений. Сделать это можно через
systemd — просто, нативно и надёжно.Сначала создаём bash-скрипт, который будет выполняться при загрузке. Пусть он, например, записывает время старта в лог-файл:
#!/bin/bash
echo "Система запущена: $(date)" >> /var/log/boot-script.log
Сохрани его как /usr/local/bin/boot-script,sh и сделай исполняемым:
chmod +x /usr/local/bin/boot-script.sh
Теперь создаём unit-файл systemd:
/etc/systemd/system/boot-script.service
[Unit]
Description=Мой автозапускаемый скрипт
After=network.target
[Service]
ExecStart=/usr/local/bin/boot-script.sh
Type=oneshot
[Install]
WantedBy=multi-user.target
After=network.target означает, что скрипт выполнится только после запуска сети. Тип
oneshot говорит, что это однократное выполнение. А
WantedBy=multi-user.target позволяет запустить скрипт при входе в основную многопользовательскую среду (то есть обычная загрузка без GUI).Осталось активировать сервис:
sudo systemctl daemon-reexec
sudo systemctl enable boot-script.service
sudo systemctl start boot-script.service
Теперь скрипт будет выполняться каждый раз при загрузке системы. Убедиться в этом можно, посмотрев лог:
cat /var/log/boot-script.log
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤9🔥8
Например, Reflected XSS выполняется сразу после перехода по вредоносной ссылке, а Stored XSS сохраняется в базе и срабатывает у всех пользователей.
На картинке — 3 основных типа XSS, которые важно различать при разработке и ревью кода.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥6🤝6👍3
Разрежённые файлы (sparse files) и экономия диска!
В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.
Создание файла большого размера без записи данных:
Файл имеет логический размер 10G, но почти не занимает место на диске.
Проверка:
Создание sparse-файла через
Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.
Частичная запись данных:
Физически будет занят только небольшой участок около 1G, остальное останется дырами.
Просмотр расположения данных:
Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).
Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
Точечное выбивание физических блоков с сохранением логического размера:
Корректное копирование sparse-файлов:
Для архивов:
Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).
🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.
➡️ DevOps Ready | #практика
В 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 — поддерживают).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍7🔥6🤝1
В этом посте собраны методы управления Environment Variables: от простого вывода списка до маскирования данных и передачи значений между этапами сборки. Работают в GitLab CI, GitHub Actions и локальных Docker-контейнерах.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
Особенно кайф для тех, кто работает в Linux/DevOps/CI среде и хочет разбираться, а не наугад копипастить из StackOverflow.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥14🤝9
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собран большой русскоязычный список полезного софта: консольные утилиты, системные инструменты, графические приложения, окружения рабочего стола, а также ссылки на форумы и полезные ресурсы по Linux.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤝9❤7🔥1
Как убрать зависший процесс, дав ему шанс завершиться нормально?
Иногда процесс нужно убрать, но
Сначала отправь корректный сигнал завершения:
Подожди пару секунд (значение условное, часто этого достаточно):
Если не вышел, завершаем принудительно:
🔥
➡️ DevOps Ready | #совет
Иногда процесс нужно убрать, но
SIGKILL сразу не всегда правильно, можно потерять буферы, получить битые временные файлы.Сначала отправь корректный сигнал завершения:
kill -TERM 1234
SIGTERM даёт процессу шанс закрыть файлы, сохранить состояние и выйти.Подожди пару секунд (значение условное, часто этого достаточно):
sleep 2
Если не вышел, завершаем принудительно:
kill -KILL 1234 2>/dev/null || true
SIGKILL нельзя перехватить: ядро завершит процесс (за исключением редких случаев D-state из-за I/O).SIGTERM - позволяет процессу корректно освободить ресурсы и закрыть файловые дескрипторы; SIGKILL используй только как fallback, когда процесс игнорирует сигналы и завис.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤝10🔥8