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 803 подписчиков, занимая 5 708 место в категории Технологии и приложения и 28 124 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 23 803 подписчиков.
Согласно последним данным от 16 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -201, а за последние 24 часа — -10, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 20.40%. В первые 24 часа после публикации контент обычно набирает 11.53% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 4 855 просмотров. В течение первых суток публикация набирает 2 744 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 17.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как bashdays, linux, bash, docker, скрипт.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Благодаря высокой частоте обновлений (последние данные получены 17 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
/etc/sudoers. В котором можно все это сделать.
Добавляем строчку:
username ALL=NOPASSWD:/usr/sbin/service postgresql*,/usr/sbin/service srv1cv83*,/usr/sbin/reboot
И все. Пользователь username может управлять указанными службами и даже перезапустить сервак.
Делается это так:
sudo service postgresql restart
или
sudo service srv1cv83_1541 status
Но пароль при этом не запрашивается. Еще один плюс в том, что sudo -i система выполнить не даст.
srv1cv83* Указана так, потому что на сервере может быть несколько служб 1c. Если указать /usr/sbin/service postgresql st*, то можно будет запустить, остановить и посмотреть статус. И всё!
😞 В процессе отладки на виртуалке словил жесткий fail.
В sudoers прописал service без пути. После этого команда sudo начала ругаться на ошибки в sudoers и перестала работать.
У меня debian. Пароль root заблокирован, sudo не работает. Я даже в recovery загрузиться не смог.
Пришлось на хосте монтировать файл виртуалки qcow2 и восстанавливать, все, как было.
👆 Поэтому прежде чем править файл, убедитесь, что пароль root установлен.
В случае проблем — сэкономите кучу времени и нервов.
su root и будет счастье.
🛠 #рабочиебудни #linux
—
✅ @bashdays / @linuxfactory / @blogПроброс устройств подразумевает — устройства которые подключены к материнской плате на хостовой машине. Например, видюха, модемы и т.п. То есть виртуальные машины смогут их использовать.Если устройство проброшено в виртуальную машину, то ни хостовая машина ни другие виртуальные машины использовать это устройство не смогут. Короче устройство будет изолировано.
У меня таким боком прокинут рутокен в виндовую виртуалку, чтобы в ЭДО доки подписывать с любого устройства и из любой жопы мира.Открываем на редактирование файл:
/etc/default/grub
И правим GRUB_CMDLINE_LINUX_DEFAULT, должно получиться так:
Если у тебя Intel:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pt=on"
Если у тебя AMD
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pt=on"
iommu=on — включает IOMMU (Input-Output Memory Management Unit) для процессоров. Этот механизм позволяет изолировать устройства ввода-вывода, повышая безопасность и управление памятью.
pt=on — включает поддержку PCI passthrough для виртуализации, позволяя передавать устройства (например, видеокарты или другие PCI-устройства) непосредственно в виртуальные машины.Сохраняем изменения и обновляем загрузчик:
update-grub
reboot
По-хорошему proxmox нужно отправить в перезагрузку, но это не точно. В любом случае для чистоты эксперимента я все же ребучу.
Загружаем модули:
Открываем на редактирование: /etc/modules
И прописываем:
vfio
vfio_iommu_type1
vfio_pci
С версии ядра 6.2 модуль vfio_virqfd больше нахуй не нужен.
Сохраняем и запускаем:
update-initramfs -u -k all
reboot
Здесь обязательно нужен ребут, без ребута нихуя НЕ заработает!
Проверяем:
dmesg | grep -e DMAR -e IOMMU or dmesg | grep -e DMAR -e IOMMU
И ищем строчку: Interrupt remapping enable
Если нашел, то поздравляю, у тебя всё получилось! Если же нет, то еще раз внимательно выполни все шаги и не забудь про ребут.
На закуску
Чтобы изолировать GPU карточку от хостовой системы, нужно еще с бубном побегать.
lspci -nn
Узнаём ID карточки, а дальше подставляем этот ID в эту команду:
echo "options vfio-pci ids=10de:____,10de:____ disable_vga=1" > /etc/modprobe.d/vfio.conf
И пиздярим блеклисты:
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia_drm" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf
Ну и само собой отправляем proxmox в ребут.
Проброс HDD
ls -n /dev/disk/by-id/
Узнаём ID диска и выполняем команду:
/sbin/qm set [VM-ID] -virtio2 /dev/disk/by-id/[DISK-ID]
Вот и вся наука. Всё лично протестировано и работает как часы, включая проброс видюхи.
Если есть чего добавить, велком в комменты.
🛠 #proxmox #devops
—
✅ @bashdays / @linuxfactory / @blogКак вариант сразу накатить эту штуку Proxmox VE Post Install, но процесс не прозрачный.Наш путь — это всё сделать ручками, чтобы было понимание и контроль над процессом. Для начала пиздуем сюда:
/etc/apt/sources.list
И добавляем дополнительные репозитории:
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
deb http://security.debian.org/debian-security bookworm-security main contrib
Затем отключаем интерпрайзный репозиторий в файле:
/etc/apt/sources.list.d/pve-enterprise.list
В нем комментируем одну строчку:
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
Следом отключаем платный ceph, идем в файл:
/etc/apt/sources.list.d/ceph.list
Комментируем и добавляем халявную репу:
# deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription
После этого выполняем:
apt update && apt upgrade
reboot
Всё раздуплится и обновится из бесплатных репозиториев. После этого перезагружаем сервер, потому что прилетело достаточно много важного и серьезного.
Дальше выполняем в терминале proxmox:
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
Эта команда отключит No valid subsciption, сообщение о том, что у нас отсутствует подписка на интерпрайз. Довольно нозящая и заёбистая тема.
Чтобы изменения вступили в силу, скинь кэш в браузере. Всё, больше это информационное окошко тебя не побеспокоит.На этом можно и закончить, но есть еще момент с прокидываем физических устройств в виртуальные машины. Этот момент рассмотрим во второй части (завтра в 14:13 МСК залетит, пост в отложке), там похитрее всё. 🛠 #proxmox #devops — ✅ @bashdays / @linuxfactory / @blog
bashdays8 получите скидку в 500р🥳echo уже не возбуждает, ничего не поделаешь. Да и всякие Gum тоже ставить не хочется.
Хуяк-хуяк и получился очередной ебальник-убивальник.
#!/bin/bash
bashdays_box() {
local headertext="$1"
local message="$2"
local white=$'\e[38;5;007m'
local reset=$'\e[0m'
local color
case "$headertext" in
INFO) color=$'\e[38;5;39m' ;;
OK) color=$'\e[38;5;34m' ;;
DONE) color=$'\e[38;5;34m' ;;
WARN) color=$'\e[38;5;214m' ;;
ERROR) color=$'\e[38;5;196m' ;;
DEBUG) color=$'\e[38;5;244m' ;;
TASK) color=$'\e[38;5;141m' ;;
NOTE) color=$'\e[38;5;45m' ;;
*) color=$'\e[38;5;244m' ;;
esac
local headerpadding=$(( ${#message} - ${#headertext} ))
local header=${message:0:headerpadding}
echo -e "\n${color}╭ ${headertext} ${header//?/─}────╮" \
"\n│ ${message//?/ } │" \
"\n│ ${white}${message}${color} │" \
"\n│ ${message//?/ } │" \
"\n╰──${message//?/─}────╯${reset}"
}
bashdays_box "INFO" "Hello from https://t.me/bashdays"
bashdays_box "ERROR" "Swap is enabled — this may affect performance"
bashdays_box "WARN" "Certificate expires in 5 days"
bashdays_box "DEBUG" "Using config file: /etc/myapp/config.yml"
bashdays_box "DONE" "All services started"
Всё просто! Передаем тип алерта и сообщение которое нужно выводить в рамке.
А чё, красиво получилось! Забирай себе, глядишь когда-нибудь пригодится.
➡️ Box-drawing characters
tags: #bash
—
🔔 @bashdays➡️ @gitgateА решил я эту проблему увеличением памяти до 1024 МБ. Причем методом тыка это натыкал, без дебага.Попробовал с debian иии… это помогло. То есть в какой-то момент всё пошло по пизде и 512 МБ нам теперь мало. Пошел, почитал требования к debian bookworm и действительно, требуется 1024 МБ. Ну ёб вашу мать! Ок, будем знать и брать с запасом. На ровном месте какая-то хуйня вечно лезет. Писало быть хоть — долбаёб, у тебя памяти не хватает! tags: #рабочиебудни — 🔔 @bashdays➡️ @gitgate
if [ bar = "$foo" ]; проверяет, равны ли два значения.
Тут самое важно это — пробелы, про кавычки повторять не буду, ты это уже и так знаешь. Все уши тебе прожужал.
Неправильно:
[bar="$foo"]
[ bar="$foo" ]
[[bar="$foo"]]
1. Нельзя слеплять всё вместе. Это хуёва даже в плане кодстайла.
2. Нет пробела вокруг знака «=».
3. Аналогично, всё слеплено.
Правильный синтаксис:
if [ bar = "$foo" ]; then
или
if [[ bar = "$foo" ]]; then
Почему?
Потому что [, =, ] это отдельные символы, первая скобка вообще команда test. А если ты все слепляешь, Bash посчитает тебя долбаёбом и отправит в пешее эротическое.
Главное правило — всегда ставь пробелы между каждым элементом в условии.
tags: #bash #badpractices #bestpractices
—
🔔 @bashdays➡️ @gitgateTENV Ёпта!
Если кратко, TENV это консольный менеджер для управления версиями Terraform, Terragrunt, OpenTofu, Atmos.
ㅤ
TENV написан на гошке, не требует дополнительных зависимостей и может быть запущен под любой операционкой. Удобно чё.
Ты скажешь — блядь, да есть же например tfenv и asdf, зачем очередной велосипед?
Во-первых, автора TENV зовут Александр, а не «Аннадурай Сатьямурти Чидамбарампиллаи». А это уже о чем-то говорит!
Ну и, во-вторых, все эти утилиты не поддерживают OpenTofu, Terragrunt и т.п. К тому же, требуют много консольных костылей/зависимостей и хуёва работают НЕ на Linux.
asdf не поддерживает автоматическое переключение версий на базе спецификации версии Terraform / OpenTofu внутри проекта с помощью HCL файлов. В целом, asdf скорее переключалка по запросу, а tenv более заточен под OpenTofu/Terraform проекты.Установка:
LATEST_VERSION=$(curl --silent https://api.github.com/repos/tofuutils/tenv/releases/latest | jq -r .tag_name)
curl -O -L "https://github.com/tofuutils/tenv/releases/latest/download/tenv_${LATEST_VERSION}_amd64.deb"
sudo dpkg -i "tenv_${LATEST_VERSION}_amd64.deb"
Сейчас лично потыкал, всё работает как часики. После установки запускаем tenv, выбираем из списка (стрелочками и на пробел) что установить и жмем ENTER.
НО, так как хашикорпы — письки (This content is not currently available in your region), в РФ надо трафик прогнать через одно место, чтобы вытащить бинари терраформа.
Вот тут я бы пожелал автору добавить киллер-фичу, сделать чтобы tenv обращался к таким заблокированным серверам не самостоятельно, а например через какую-то прокладку. Тогда сука цены бы не было! Александр, добавь для нас такую возможность, буду прям лично твоей штукой пользоваться, достаточно удобно!В общем рекомендую потыкать и поддержать проект звездами. Годнота! ➡️ Страница проекта и документация tags: #utilites #devops — 🔔 @bashdays➡️ @gitgate
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Нет, не от злых черно-шляпных, смысла в этом мало, блокировка тут не решает. Собаку съели.Дело было так. Лет 10 назад я открыл
putty, подключился к проду и пошел навалить себе кофеёв с печенькой. Навалил. Вернулся. На клавиатуре мило устроился кот.
Кота тревожить не стал, уважительная причина не ходить на работу. Взял ноут и получил в аську 100500 алертов в nagios.
Да, в те времена в тренде были nagios и заббиск. Но заббикс всем казался пиздец сложным, поэтому халявили и втыкали нагиос.
Ну дак вот. Суть.
Когда кот устраивался, он первой лапой нажал на стрелочку вверх, потом еще раз нажал пузаном и на фаталити ёбнул яйцами по Enter.
Ему то чё, он хуй за мясо не считает.А в хистори с профилактических выходных оставалась команда
shutdown -h now, до которой добрался кот и успешно её исполнил.
В те времена мелкий бизнес особо за аптайм не переживал и ретроспективы только зарождались, в жопы не ебали.Но опыт был получен.
Звучит как сказка, но такие сказки со мной постоянно приключаются, коллеги соврать не дадут.Вот после этого, я всегда жму
WIN + L или CMD + Q.
Даже если кот и сын спят, все равно прожимаю эту комбинацию.
Но опять же если открыта консолька с продом, то заранее её еще и сворачиваю, впизду.
Видимо детская травма.
А ты прожимаешь WIN + L / CMD + Q если отходишь от своей рабочей лошадки?
Камон в комменты делиться своими факапами.
tags: #рабочиебудни
—
🔔 @bashdays➡️ @gitgate
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
