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 622 名订阅者,在 技术与应用 类别中位列第 5 619,并在 俄罗斯 地区排名第 27 773 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 23 622 名订阅者。
根据 28 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -10,过去 24 小时变化为 -1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 13.37%。内容发布后 24 小时内通常能获得 11.63% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 3 160 次浏览,首日通常累积 2 749 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 5。
- 主题关注点: 内容集中在 bashdays, linux, bash, docker, скрипт 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
凭借高频更新(最新数据采集于 29 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
Гипотеза — все эти разделения на джун-писюн, мидл-хуидл и т.п. грейды никак не коррелируются с зарплатными вилками. Всё зависит от компании и их жадности. Богаче, не значит — лояльнее к сотрудникам.Проводим пару внеурочных текстовых сеансов, набираемся мотивации, перелопачиваем вакансии (важно — ищем вакансии на Мидла), составляем продающее резюме, ходим по собеседованиям. Ииии…. через неделю получаем оффер, причем очень жирный оффер, почти x2.5 от текущий ЗП. При условии, что график полностью удалёнка (не гибрид), нет кубера, стек из 40-50 виртуальных серверов, докер, гитлаб, даже ансибла нет. Суть работы — сидеть на жопе ровно и саппортить текущую инфраструктуру. Да, есть нюансы, нужно с нуля систему мониторинга построить, но это прям детские игрушки. Вот и думай. Шаг назад прям хороший. Гипотеза доказана. Компании которые ворочают миллиардами, нанимают сотрудников на позицию Сеньоров за миску супа. А какие-то обычные Интернет магазины, готовы платить за Мидла 100500 мильонов в секунду. Так что, нет ничего стыдного в даунгрейде, ведь любая работа прежде всего делается ради денег. Отзыв этого человека как-нибудь размещу на сайте, а то там контекста много лишнего, надо отредачить. Если кратко, испытательный успешно пройден, в коллектив влился, инфраструктуру взял под контроль, мониторинг уже настроен, работа занимает теперь от силы 2-4 часа в день и то уже в процессе автоматизации. Вот такие пироги. Не ссы и двигайся вперед, а то так и просидишь до старости пропёрдывая кресло. 🛠 #workflow #рабочиебудни — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Termix — это платформа для управления серверами с открытым исходным кодом, полностью бесплатная. Она предоставляет единое кроссплатформенное решение для управления серверами и инфраструктурой через один удобный интерфейс. Termix является альтернативой Termius и доступен на всех популярных платформах.Termix предлагает: - доступ к терминалу по SSH; - управление удалённым рабочим столом (RDP, VNC, Telnet); - создание SSH-туннелей; - удалённое управление файлами; - и множество других инструментов. Короче эта штука позволяет подключаться по SSH и т.п. к серверам, прям из браузера. Довольно удобно собрать всё в кучу и забыть про ручную рутину. Хотя ручная рутина порой приятнее, чем все эти «новогодние ёлки» и клики мышкой. Читать продолжение: https://two.su/ckebu 🛠 #devops #selfhosted — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Люблю opensource, за то, что если есть закос на интерпрайз, то можно посмотреть исходники и реверснуть лицензию. С DocHand я пока особо глубоко не ковырялся, но чуть позже обязательно пропатчу, как собственно провернул это с mattermost, gitlab и т.п.Да, по функционалу DocHand ничем не уступает Portainer и даже превосходит его. Для меня важно, чтобы всё было очевидно и понятно, без - хуй чё найдешь. И тут с этим всё прекрасно. Ладно, чем бы дитя не тешилось. Вкорячиваем... Читать продолжение: https://two.su/2517q 🛠 #devops #selfhosted — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
if [[ ! -f "$file" || ! -r "$file" || ! -w "$file" ]];then
echo "Ошибка: Файл отсутствует или нет прав на чтение/запись"
# exit 1
fi
ㅤ
Расшифруем:
! -f "$file" - НЕ регулярный файл (возможно каталог, устройство, или вообще ничего).
! -r "$file" - у файла НЕт прав на чтение.
! -w "$file" - у файла НЕт прав на запись.
Условия объединены по ИЛИ, значит если выполнится какое-либо - будет ошибка.
С точки зрения логики - все правильно, но у меня лично в глазах рябит от количества палок.
👆На мой взгляд, отрицания сильно осложняют понимание.
Вспоминаем, что:
! A || ! B эквивалентно ! [ A && B ]
! A && ! B эквивалентно ! [ A || B ]
👆И помним, что пробелы в условиях bash критически важны.
Таким образом, конструкцию можно переписать, с сохранением функциональности:
if ! [[ -f "$file" && -r "$file" && -w "$file" ]];then
echo "Ошибка: Файл отсутствует или нет прав на чтение/запись"
# exit 1
fi
Расшифруем:
НЕ (файл регулярный И есть права на чтение И есть на запись). В этой конструкции тоже есть отрицание, но оно уже одно! Конструкцию можно привести к еще более человеческому виду:
if [[ -f "$file" && -r "$file" && -w "$file" ]];then
:
else
echo "Ошибка: Файл отсутствует или нет прав на чтение/запись"
# exit 1
fi
Здесь отрицание заменено переносом тела if в тело оператора else.
":" необходимо, потому что между if и else должен быть хотя бы один оператор (в данном случае ":" эквивалент оператора true или nop.
Можно записать и:
if [[ -f "$file" && -r "$file" && -w "$file" ]];then :
else
echo "Ошибка: Файл отсутствует или нет прав на чтение/запись"
# exit 1
fi
👆 Обратите внимание на ":" после then
Но на мой взгляд, в данном случае, читаемость несколько ухудшится.
Хотя первая конструкции и остальные конструкции эквивалентны, но отличие все же есть - скорость работы (Особенно, если в качестве операндов будут использованы функции) И зависит эта скорость будет от сценария работы.
Если при объединении по ИЛИ первый операнд ИСТИНА, то остальные даже проверяться не будут.
При объединении по И все наоборот: остальные проверяться не будут - если первый операнд ЛОЖЬ.
Всем работы без багов.
🛠 #bash #linux
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogДа, так и есть. Искали мы тут QA специалиста, за неделю скинули более 2000 резюме. Это пиздец. Как будто нейронка по вакансии прошлась и нагенерила нам вайтишников. С QA всё понятно, это самый простой вход в наш «цирк абсурда», но вот с другими вакансиями аналогичная ситуация. Причем кандидаты гнут пальцы и не хотят делать тестовые задания, даже за деньги. Разленились падлы, подавай им сразу оффер и оклад 100500 мильонов за нехуй делать с обязательной удаленкой. Да идите вы нахуй!Ладно, я немного про другое хотел тебе написать. Тема довольна избитая — стоит ли сейчас увольняться и прыгать на другую работу, если ты уже официально трудоустроен? Однозначно стоит, если предлагают x3-x4 к текущей ЗП. Но возникает парадокс. Казалось бы, сиди тихо, цени текущее место и не дергайся. Но всегда есть НО. ㅤ Зона комфорта vs Испытательный срок На текущем месте работы, ты знаешь как всё устроено, где что лежит, можешь с закрытыми глазами ориентироваться, в общем царь и бог. Работаешь от силы 2-3 часа в день в комфортном для себя режиме, ездишь по делам и пинаешь хуи. На новом месте работы — баланс придется выстраивать с нуля, неизвестность, снова DODы испытательного срока, новые технологии, коллеги-токсики. И опять же уровень компетенции. Если на предыдущем месте ты уверенный мидл-сеньор, то на новом месте, грейды оцениваются иначе.
Коллега сеньор-фронтендер сходил в яндекс на технический собес ииии, барабанная дробь — его скилы оценили как джуновские, соответственно предложили ЗП намного меньше чем он рассчитывал. А всё, потому, что технологии шагнули вперед, а он всё еще на втором ангуляре кнопочки двигает.Ежу понятно, что ключевой фактор это деньги. То есть здесь интересен не столько вопрос «правильно ли я поступаю», сколько вопрос «что именно я продаю и что покупаю». Если смотреть со стороны: Вместе с новой зарплатой получаем новый набор рисков: — испытательный срок — отсутствие привычной зоны комфорта — необходимость реально показывать результат — нагрузку, которая наверняка будет в разы выше Для кого-то лишние 200–300 тысяч рублей в месяц полностью стоят стресса и переработок. Для кого-то возможность спокойно жить, заниматься своими проектами, семьей или просто не выгорать ценнее любой прибавки к зарплате. Есть еще один интересный момент. Если человек годами работает в режиме «пару часов в день», он постепенно теряет понимание своей реальной рыночной стоимости. Внутри компании может казаться, что всё хорошо. Но настоящий уровень всегда показывает только рынок. Переходы позволяют проверить себя об этот рынок. И ты либо разъебёшься об камни реальности, либо выплывешь, всё будет зависеть от твоих скилов и компетенций. Поэтому иногда даже неудачный переход бывает полезнее десяти лет комфортного сидения на одном месте. Возможно, через три месяца ты поймешь, что ошибся. Возможно, через год будешь вспоминать прежнюю работу как слишком уютное болото. А может быть, окажется, что все эти разговоры про кризис в ИТ сильно преувеличены для тех, кто готов брать на себя ответственность и приносить бизнесу результат. Если это действительно x3, а не +20–30%, то я скорее понимаю такие решения. Зарплата в три раза выше способна за 1–2 года создать финансовую подушку, закрыть ипотеку, накопить капитал. Потерять комфорт неприятно, но комфорт — это тоже риск. Особенно в ИТ, где человек может годами находиться в тепличных условиях и не замечать, как рынок уходит вперед. Короче хуй знает. Пишите в комменты свои мысли. Ни к чему не призываю, так, трёп…
А ты бы согласились поменять спокойную работу на зарплату в 3-4 раза выше, если бы знал, что работать придется действительно дохуя, да еще и проходить испытательный?Моя стратегия сюда уже не влезла, опубликовал её в блоге 👇 Читать продолжение: https://two.su/nrzhw 🛠 #workflow — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ssh-ed25519 AAAAC3....8cJiPqx0VAOmEI+yy user@host
Я редактировал прямо в vim.3. После этоого вставляем ключ в authorized_keys на серваке. 4. Запускаем winscp.exe и в настройках → хранилище меняем реестр на ini файл. Это нужно сделать, чтобы скрипт работал и от другого пользователя. 5. В WinSCP.exe создать подключение например «servername» указав ключ. В подключении можно и начальный каталог указать сразу. 6. Обязательно протестировать соединение приняв fingerprint. 7. Создать скрипт обмена script.sftp типа:
open servername
put filename
get filename1
bye
8. Запуск скрипта обмена:
C:\prog\WinSCP\winscp.com /ini=C:\prog\WinSCP\WinSCP.ini /logsize=2*100K /script=C:\prog\WinSCP\script.sftp /log="C:\prog\WinSCP\script.sftp.log" /console
9. Иногда, Скрипт, при запуске из какой-нибудь программы типа 1c не срабатывает. Тогда строку пункта 8 проще записать в какой-нибудь servername.bat и выполнять его из программы через cmd:
c:\windows\...\cmd.exe /c C:\prog\WinSCP\servername.bat
Вот тебе и винда, такая простая задача, и столько гемора при реализации. Да, кстати, на десятке тоже работает. Проверил.
Всем работы без багов.
🛠 #devops #windows
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog▶️GLM-5.1 — мощная модель для Agentic AI: умеет автономно выполнять задачи до 8 часов и поддерживает сложные сценарии. ▶️Kimi K2.6 делает ставку на мультимодальность и Agent Swarm-подход, позволяя оркестрировать до 300 субагентов. ▶️DeepSeek V4 Pro выделяется контекстом до 1 млн токенов и гибридной архитектурой внимания для эффективной работы с длительным контекстом.Как внедрить в проекты: 📍 Все модели доступны в каталоге Evolution Foundation Models от Cloud.ru.
В сервисе уже 45+ популярных LLM. Модели готовы к использованию — не нужно развертывать инференс и писать код, достаточно подключиться через API.👉Протестируйте новые модели в личном кабинете👈
▶️GLM-5.1 — мощная модель для Agentic AI: умеет автономно выполнять задачи до 8 часов и поддерживает сложные сценарии. ▶️Kimi K2.6 делает ставку на мультимодальность и Agent Swarm-подход, позволяя оркестрировать до 300 субагентов. ▶️DeepSeek V4 выделяется контекстом до 1 млн токенов и гибридной архитектурой внимания для эффективной работы с длительным контекстом.Как внедрить в проекты: 📍 Все модели доступны в каталоге Evolution Foundation Models от Cloud.ru.
В сервисе уже 45+ популярных LLM. Модели готовы к использованию — не нужно развертывать инференс и писать код, достаточно подключиться через API.👉Протестируйте новые модели👈
loop нужен вот прям всегда и везде. Но это не так.
ㅤ
Многие пишут:
- name: install packages
ansible.builtin.apt:
name: "{{ item }}"
state: present
update_cache: yes
loop: "{{ packages }}"
А переменная packages содержит список пакетов на установку.
И вроде тут всё ок, НО apt вызывается для каждого пакета отдельно, а update_cache может дёргаться несколько раз. Это избыточно и ломает заложенные паттерны.
Поэтому правильнее будет сделать так:
- name: install packages
ansible.builtin.apt:
name: "{{ packages }}"
state: present
update_cache: yes
Здесь apt получает сразу список пакетов, кеш обновляется один раз, установка идёт одной транзакцией. Получается меньше оверхеда, всё происходит быстрее и логичнее.
В первом случае это «хак», ты делаешь loop из одного элемента, внутри которого уже лежит список.
Главная мысль тут — если модуль умеет принимать список — loop нахуй не нужен.
Loop нужен там, где логика на каждый элемент отдельная:
- разные параметры
- условия
- шаблоны
- создание пользователей
- файлы
- сложные таски
Короче не заLOOPайся и будет тебе счастье.
Ну а если хочешь стать гуру, я всегда жду тебя здесь.🛠 #devops #linuxfactory #ansible — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
FROM node:22
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
CMD ["node", "dist/index.js"]
Тебе пезда! Всё будет пересобираться каждый раз с нуля, никаким кешированием тут и не пахнет. Так делают многие, ведь оно работает и пофигу что долго.
В примере выше, команда COPY копирует весь проект. Представь, что ты изменил одну букву в конфиге и приехали. Кеш инвалидировался, сборка пошла по новой и RUN npm install доставит много удовольствия.
Ключевой момент тут исходники, которые меняются.
Получаем:
- заново устанавливает npm зависимости
- заново качает пакеты
- заново rebuild native modules
- тратит минуты в CI
Хотя зависимости вообще не менялись. Мрак! Фиксим:
FROM node:22
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["node", "dist/index.js"]
Теперь если что-то изменить в коде проекта, пересобирается только:
COPY . .
RUN npm run build
А RUN npm ci возьмется из кеша. Аналогично и в питончике и гошке:
COPY . .
RUN pip install -r requirements.txt
COPY . .
RUN go mod download
Бест-практика простая: От самого стабильного → к самому изменяемому.
- base image
- системные пакеты
- lock-файлы зависимостей
- install dependencies
- исходники
- build
- startup
Короче думай паттерном, а не жопой — «Какие файлы меняются редко?» и выносить их максимально вверх Dockerfile.
Каждый RUN, COPY, ADD это новый слой. Docker пытается переиспользовать уже существующие слои из кеша. Если инструкция и все предыдущие слои не изменились — слой не пересобирается. Docker сбрасывает кеш начиная с измененного слоя.
Вот и вся наука.
🛠 #devops #docker
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog