Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
显示更多📈 Telegram 频道 Bash Days | Linux | DevOps 的分析概览
频道 Bash Days | Linux | DevOps (@bashdays) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 23 810 名订阅者,在 技术与应用 类别中位列第 5 710,并在 俄罗斯 地区排名第 28 118 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 23 810 名订阅者。
根据 15 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -195,过去 24 小时变化为 -10,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 23.79%。内容发布后 24 小时内通常能获得 11.52% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 5 664 次浏览,首日通常累积 2 744 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 25。
- 主题关注点: 内容集中在 bashdays, linux, bash, docker, скрипт 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
凭借高频更新(最新数据采集于 16 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
OCI это способ запускать контейнеры из Docker-образов. То есть proxmox теперь умеет скачивать Docker-образы (OCI-images) и превращать их в LXC-контейнеры.А нахуя? Чтобы проще запускать приложения, которые уже существуют в виде Docker-образов. Теперь в LXC не нужно поднимать отдельно докер демон, все работает из коробки. Ладно, отвлеклись. Про OCI отдельно распишу. Сегодня обновляем всю эту трихомудию до нужной версии. Бекапить я ничего не буду, бекапы для слабаков. Но ты меня не слушай, делай правильно и подстилай соломку.
Даже если у меня всё пойдет по пиздец, это отличный кейс, чтобы отдебажить проблему и решить её.По классике сюда всё не влезло, поэтому гоу в блог читать продолжение 👇 🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️ ➡️ https://two.su/4ui2c 🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️ 🛠 #proxmox #devops #selfhosting — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576pvetui такое можно провернуть в два счета.
Ты скажешь — дак сделай алиасы для айпишников и цепляйся к нужным виртуалкам. Справедливо, но мне лень. Тем более виртуалки у меня постоянно создаются, удаляеются и я ебал каждый раз алиасы делать.Установка и запуск:
go install github.com/devnullvoid/pvetui/cmd/pvetui@latest
/home/user/go/bin/pvetui
Под другие ОС:
yay -S pvetui-bin
yay -S pvetui-git
brew install --cask devnullvoid/pvetui/pvetui
scoop bucket add pvetui https://github.com/devnullvoid/scoop-pvetui
scoop install pvetui
# либо из исходников
git clone https://github.com/devnullvoid/pvetui.git
cd pvetui
make install
При первом запуске утилита попросит сконфигурировать её. Жмем пару раз Enter, открывается редактор конфига, заполняем необходимые поля.
Я заполнил URL, логин и пароль от панели Proxmox. Чтобы оно не орало, нужно стереть данные в полях API, тогда оно даст сохранить конфигурационный файл.
Но опять же если у тебя API ключ, делаешь под своё конфигурацию.Инициализация, закончена, видим сообщение:
✅ Configuration is ready!
🔄 Please re-run 'pvetui' to start the application with your new configuration.
🚪 Exiting.
Запускаем морду и смотрим что получилось.
/home/user/go/bin/pvetui
Эту штуку можно повесить на alias либо прописать в PATH, чтобы полные пути до бинарника каждый раз не писать.
А получилось у нас прям заебись. Теперь я нажимаю ALT+2 и попадаю в список всех своих виртуальных машин. Стрелочками выбираю нужную мне машину и нажимаю букву «m», открывается менюшка.
В менюшке можно сразу провалиться в машину по SSH, что мне и нужно. Но это еще не всё, там и ребуты и миграции, даже VNC есть (нужен xdg). Короче базовый минимум поадминить присутствует.
Да, если нажать «ESC» то откроется еще одна глобальная менюшка для конфигурации самой утилиты, выбор профилей, управление плагинами и т.п.
Короче явки-ссылки я тебе дал, дальше сам смотри, всё там гибко конфигурируется и настраивается. И тем более TUI интерфейсы сейчас прям в трендах.
Хорошей тебе рабочей недели! Не болей!
🛠 #selfhosting #linux #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogЕсли запамятовал, то Karpenter это штука, разработанная AWS, которая позволяет масштабировать инфраструктуру и снижать затраты.Работает это так — сервис обладает информацией о доступных ресурсах и ценах, а далее автоматически подбирает конфиги в зависимости от твоих хотелок. Киллер-фича — создание оптимальных узлов под фактическую нагрузку, а не предварительное масштабирование определенных node groups. По итогу автоскейлинг становится быстрее, дешевле и умнее. Karpenter создает идеальные ноды под конкретные поды «на лету», а не выбирает из заранее заданных node groups. Мир меняется, технологии меняются. Установи Karpenter в Managed Kubernetes и оптимизируй расходы на инфраструктуру → https://slc.tl/hr1d3
Если Karpenter молчит — это не значит, что он завис. Это значит, что он думает, как сделать ещё дешевле. 🥳Реклама, АО «Селектел», erid: 2VtzqvvWPbP
Дело пахнет писюнами…Короче, это — Multipass от Canonical. И да, полностью бесплатная и с мордой. ㅤ Выдумать ничего не буду, лови нативку с сайта:
ПолучитеРаботает под Linux, Wiundows, Mac Что же это за зверь? Multipass использует доступный гипервизор в зависимости от платформы: - Linux — KVM - macOS — HyperKit или QEMU - Windows — Hyper-V или VirtualBox (в новых версиях QEMU) Можно управлять как через морду, так и через командную строку. Это развязывает руки. Например, можно накодить себе bash скрипт и через него поднимать виртуалки под лабы. Чё прикольно, для него есть Terraform провайдер, ну прям не инструмент, а золото.по ебалумгновенную виртуальную машину Ubuntu с помощью одной команды. Multipass может запускать виртуальные машины и настраивать их с помощью cloud-init, как в общедоступном облаке. Прототип вашего облака запускается локально и бесплатно.
terraform {
required_providers {
multipass = {
source = "larstobi/multipass"
version = "~> 1.4.2"
}
}
}
Работает элементарно, если через морду — выбираешь дистрибутив, накручиваешь ползунки и жмешь Launch, через 40 секунд у тебя готовая виртуалка.
Ну либо headless (через командную):
Основные команды:
multipass launch --name foo
multipass exec foo -- lsb_release -a
multipass list
multipass stop foo bar
multipass start foo
multipass delete bar
multipass purge
multipass find
multipass launch -n bar --cloud-init cloud-config.yaml
multipass help
Из дистрибутивов только Ubuntu, но этого достаточно чтобы что-то протестировать либо погонять. Ребята в LF активно этим инструментом пользуются и создают тестовые кубер-кластера, ну и ансибл оттачивают.
Настроек там жопой ешь, так что можно и статические айпишники мутить, выбирать сетевые режимы и многое другое.
В общем рекомендую, инструмент зачетный, никакой ёбли как VBox и VMWare.
🛠 #devops #vm #linux
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blogstages:
- deploy
variables:
ENVIRONMENT:
description: "Deployment environment"
value: "N/A"
options:
- "N/A"
- "STAGE"
- "PRODUCTION"
deploy:
stage: deploy
script:
- echo "Выбрано окружение:" "${ENVIRONMENT}"
rules:
- when: manual
Это кусок НО — этот список перестал появляться. Причем избрано, у кого-то есть, у кого-то хуй с маслом.Ошибок синтаксиса в ямликах нет, каких-то разумных сообщений и наводок от гитлаба тоже нет. Чё делать? ➡️ Решение Идем:
Settings → CI/CD → Variables и кликаем в радио-батон — Developer.
Всё! Теперь выпадающие списки вновь начинают работать.
А еще людей смущает новая штука inputs, которая совсем недавно появилась. Работает она с 17й версии.
spec:
inputs:
environment:
description: "Куда деплоим?"
type: string
default: "N/A"
options:
- "N/A"
- "STAGE"
- "PRODUCTION"
---
stages:
- deploy
deploy:
stage: deploy
rules:
- when: manual
script:
- echo "Выбрано окружение: $[[ inputs.environment ]]"
Оно будет пиздеть во внутреннем редакторе - Incorrect type. Expected "string | array".yaml-schema, но будет работать если запустить пайплайн.
Ошибка возникает, потому, что Pipeline Editor использует старый YAML-валидатор. Так что, не обращай внимание на этот пиздёж.А зачем нам этот input ведь с options и так всё работает? Ну хотя бы из-за типизированных параметров:
type: string | number | boolean | array
То есть:
- можно сделать чекбокс (boolean)
- можно сделать список (array)
- можно сделать ограничение по диапазону (number)
- можно сделать строгие варианты (options)
- можно сделать regex-валидацию
А обычный variables такого не умеют.
GitLab постепенно превращает CI в настоящий «Pipeline as Functions».
Например, в проекте А:
spec:
inputs:
env:
type: string
options: [stage, prod]
---
deploy-job:
script: deploy_to $[[ inputs.env ]]
И проекте B можно вызвать:
deploy:
trigger:
project: A
inputs:
env: prod
Это как вызов функции с аргументом.
Что еще:
- Inputs работают даже при trigger-пайплайнах
- Inputs могут быть required
- Inputs отображаются отдельно и аккуратно в UI
- Inputs часть нового стандарта GitLab CI Components
Короче одни плюсы. Но есть большое НООООО!
Это пиздец усложняет процесс разработки и отладку пайплайна.
Да, стало удобнее и гибче, но всё это превращается в безумное ООП, где без базы и документации к проекту — ты хуй разберешься.
Пока тебе хватает обычных options используй их. Не лезь в это ООП, оно пока рано и избыточно, особенно если ты новичок.
Изучай!
Как говорится — и не такие метели в ебало летели!
🛠 #devops #cicd #linuxfactory
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog⚪ Последнее время активно занимается мониторингом, особенно Zabbix, хотя может и в пром с графаной
⚪Помогал мне тестировать и писать шаблоны для PVE/PBS и эта штука с небольшими видоизменениями с 6го заббикса стала официальной
⚪Отлично разбирается в Linux, с закрытыми глазами разберет и соберет ядро с учетом нюансов железа и ПО
⚪Кубер не уважает, к ансиблистам относится очень настороженно
⚪Владеет светлой магией Bash, тёмной магией Perl, и немного PythonКонтакт: @egoza73 🛠 #кандидаты #кадры — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Вредный совет: Если тебя спрашивают — где разместить инфраструктуру, предложи случайный и непроверенный хостинг из гугла, пусть страдают!А если серьёзно — никакой магии. Советуй надёжного провайдера с 17-летним опытом, шестью ЦОДами и инфраструктурой под любые нужды — и получай до 15% на баланс.
На эти 15% арендуешь сервачок и бесплатно хостишь на нём свой личный блог про девопс-потуги и разработку. Ну или гоняешь пайплайны в личном гитлабе.В партнерской программе Selectel всё честно, прозрачно и самое главное — надежно! Проверял сам. Год назад я ради интереса залетел в программу, и знаешь, зашло! Так что потыкай, за спрос не ударят в нос: Зарегистрироваться: https://slc.tl/mtgzq 😇🙂🙃😉😌😍🥰😘 😗😙😚😋😛😝😜🤪 🤨🧐🤓😎🤩🥳😏😒 😞😔😟😕🙁☹️😣😖 😫😩🥺😢😭😤😠😡 Серверы крутятся — проценты мутятся! в ссылке моей рефки нет, так что не ссы — навариваться на тебе я не стану… Реклама, АО «Селектел», erid: 2VtzqxCY6hn
0.30 1.20 0.80
1. За последнюю 1 минуту средняя очередь = 0.30
2. за 5 минут = 1.20
3. за 15 минут = 0.80
Сразу куча вопросов, а что такое «очередь»?
«очередь» == количество задач, которые хотят работать прямо сейчас, но процессоров не хватает, чтобы заняться всеми сразу.
➡️ Главное правило
Сравниваем Load Average с количеством ядер.
- У тебя 4 ядра → нормальная нагрузка = до 4.0
- У тебя 1 ядро → нормальная нагрузка = до 1.0
- У тебя 8 ядер → нормальная нагрузка = до 8.0
🟢 Всё в порядке: - LA ≤ количество ядер → CPU успевает всё делать, очередей нет. 🟡 Чёт уже не то, подгрузилось: - LA ≈ количество ядер × 1–2 → процессы начинают стоять в очереди, но система пока еще жива. 🔴 Жопа: - LA сильно > количества ядер → процессы стоят в очереди, всё тормозит.➡️ Теперь на котиках Ты стоишь в магазине: - 1 касса, 1 человек в очереди → заебись - 1 касса, 10 человек в очереди → жопа - 4 кассы, 6 человек → пока норм CPU = кассы, Load Average == очередь. LA это не про загрузку CPU в процентах — это просто «очередь». ➡️ Как задебажить Берем top, htop или подобное и смотрим столбец %CPU, если один процесс жрёт 100% на однопроцессорной системе — он пидарас и забил ядро. Если процесс жрёт 300% на 4-ядерной — он занял 3 ядра. Смотрим самых прожорливых пидарасов:
ps aux --sort=-%cpu | head
Если ничего не нашел, то смотрим в сторону:
- I/O wait — медленный диск / много дисковых операций
- много процессов, но каждый почти ничего не ест (fork storm)
- сеть или блокировки
Капля в море, но это базовый чеклист на ситуацию, когда сервер ушел в «полку».
А ты добавляй в комменты, что еще можно вынести в дебаг, будет полезно.🛠 #linix #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
angie, на этот раз посмотрим на Status Page, которая отображает всю статистику по веб-серверу. Выглядит прям хорошо.
ㅤ
Устанавливаем пакет:
sudo apt install angie-console-light
В папке /usr/share/angie-console-light/html появляется статика.
Добавляем локейшен:
location /console/ {
auto_redirect on;
alias /usr/share/angie-console-light/html/;
index index.html;
location /console/api/ {
api /status/;
}
}
Теперь открываем в браузере и видим красивую мордочку. Демо мордочки можешь посмотреть здесь.
Да, не забываем включить Basic Auth чтобы хитрожопые не подглядывали.
У меня на паре пет проектов эта морда включена (графана избыточна), чисто посмотреть статусы раз в сутки, которые возвращают 500ку. Если оно горит красным, значит что-то где-то пошло по пизде.Подробнее читай в официальной документации. 🛠 #angie #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Решено было накидать Bash скрипт, который каждый месяц будет заказывать на WB радость для моей жопы.Открытой API у WB нет, но реверс-инженерию никто не отменял. Открываем в браузере режим разработчика, натыкиваем нужные действия на сайте и потом смотрим вкладку Network. Выбираем нужные запросы и рожаем скрипт. Концепт скрипта: 1. Авторизация. С ней я не стал заморачиваться, авторизовался на сайте, выгрузил кукисы в файл. Полюбому можно и это автоматизировать через
curl, но чёт пока лень.
2. Скрипт принимает единственный параметр $1, это ссылка на товар WB, мало ли бумага моя закончится и придется другого поставщика искать.
3. Дальше curl подгружает кукисы из файла, и делает несколько запросов к сайту, добавляет бумагу в корзину и оформляет заказ.
Пример добавления в корзину:
RESPONSE=$(curl -s "https://cart-storage-api.wildberries.ru/api/basket/sync?ts=$TS&device_id=$DEVICE_ID" \
-X POST \
-H 'content-type: application/json' \
-H 'origin: https://www.wildberries.ru' \
-b "$COOKIES_FILE" \
--data-raw "$JSON_PAYLOAD"
)
Все параметры прилетают из $JSON_PAYLOAD, параметр автоматически заполняются нужными данными на основе переданного урла в $1, да, активно используется jq.
Говнокод конечно лютый получился, но работает. А это главное в нашем деле!
4. Ну и всё, в телегу мне приходит уведомление, что заказ оформлен, бабло спишут по факту. Ну и пишут примерное число доставки.
5. Как только товар пришел в пункт выдачи, получаю уведомление в телегу. Аналогично curl запросом проверяется статус в личном кабинете.
6. Закидываем скрипт в крон и забываем про эту рутину.
59 23 25 * * /usr/local/sbin/shit_paper.sh https://wb.ru/296/detail.aspx
Вот и вся наука. Теперь когда я возвращаюсь из гаража, захожу по пути в пункт выдачи и забираю свои 32 рулона. Удобно? Да охуенно!
Думал мож еще курьера прикрутить, но сроки доставки могут увеличиться, да и этот бедолага начнет мне звонить, согласовывать все, тут бы AI прикрутить, да ну его. И так большое дело сделано, жопка рада.Еще бы научить чтобы чайник сам в себя воду наливал, было бы вообще ништяк. Давай, увидимся! Хороших тебе предстоящих выходных и береги себя! 🛠 #bash #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576platform=$(uname -m)
docker run --platform linux/arm64
Я бы хотел, чтобы параметр --platform linux/arm64 подставлял в том случае, если архитектура платформы == arm64, в других случаях этот параметр подставлять не нужно.
Делаю так, но получается какая-то хуйня:
platform=$(uname -m)
docker run ${platform/arm64/--platform linux/arm64}
Короче смотри. Задачку можно решить несколькими способами.
Способ 1. Заточен под Bash:
platform=$(uname -m)
docker run $([[ $platform = arm64 ]] && echo "--platform linux/arm64")
Этот способ не сработает, если код запустится в /bin/sh, потому что оно не POSIX. Тут уже смотри под чем все это будет запускаться.
Тут можешь почитать чем отличаются [[ ]] от [] А тут что такое POSIXСпособ 2. Универсальный:
platform=$(uname -m)
docker run $( [ "$platform" = "arm64" ] && echo "--platform linux/arm64" )
На 100 % POSIX-совместим. По функционалу эти способы идентичны.
Ну и по итогу имеем:
[[ ... ]] — это расширенная bash-версия, безопаснее и гибче (поддержка pattern, безопасность кавычек при пробелах и пустых строках, поддежка логики с &&)
[ ... ] — POSIX-совместимая, более строгая и требующая аккуратности с кавычками.
Ну и твои варианты приветствуются, поделись в комментах, глядишь что-то маст-хевное у тебя в загашнике есть.
🛠 #bash #pipeline
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
