fa
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

رفتن به کانال در Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

نمایش بیشتر

📈 تحلیل کانال تلگرام Bash Days | Linux | DevOps

کانال Bash Days | Linux | DevOps (@bashdays) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 23 814 مشترک است و جایگاه 5 718 را در دسته فناوری و برنامه‌ها و رتبه 28 110 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 23 814 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 14 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -182 و در ۲۴ ساعت گذشته برابر 1 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 23.05% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 11.52% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 5 492 بازدید دریافت می‌کند. در اولین روز معمولاً 2 744 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 25 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند bashdays, linux, bash, docker, скрипт تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 15 ژوئن, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

23 814
مشترکین
+124 ساعت
-387 روز
-18230 روز
آرشیو پست ها
Надоели шаблонные решения на ИТ-соревнованиях? На МТС True Tech Hack 2026 ценят нестандартные подходы. Инженер данных, разраб
Надоели шаблонные решения на ИТ-соревнованиях? На МТС True Tech Hack 2026 ценят нестандартные подходы. Инженер данных, разработчик или системный аналитик — это про тебя? Тогда подключайся: победители разделят 1 500 000 рублей за разработку демоверсии ИИ-продукта. На хакатоне будут три задачи на выбор — каждая с уникальной технической фишкой. Справишься лучше всех — сможешь пройти в финал в Москве и получить приглашение на стажировку. Регистрация до 9 апреля здесь

Ну вот и всё, приплыли тапочки к дивану… TL:DR: Всё хорошо, НЕ расходимся. Ладно, томить не буду. Блокировки это всегда неприятно, но раз ты это читаешь, значит ты уже достаточно подкованный в определенных технических вопросах и умеешь приспосабливаться к реалиям. Это ценно! Могу только пожать тебе руку и снять шляпу. Большинство на панике массово мигрируют в «то самое», но наш с тобой ледокол уверенно пробирается сквозь льдины. Так что, я не планирую никуда лукаться отсюда и буду продолжать свою деятельность именно здесь. Ну а кто всё же поддался и не подстелил соломку, весь контент который я тут пилю для тебя — дублируется в «то самое». Все нужные ссылки есть в подписи к каждому посту. Старые материалы потихоньку перетащу в блог, ничего не потеряется.
Да, Linux Factory продолжает работать, заходи если чё, замажем пати. Если нужен промик со скидкой 1000р на новых вход не стесняйся — пиши сюда.
Как говорится: Кто хочет — ищет возможности, кто не хочет — ищет причины. Всех обнял, хорошего тебе дня и увидимся! 🛠 #рабочиебудни 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Какие инструменты ускоряют запуск продуктов и упрощают разработку ↗️ Узнайте на GoCloud 2026 9 апреля команда Cloud.ru провод
Какие инструменты ускоряют запуск продуктов и упрощают разработку ↗️ Узнайте на GoCloud 2026 9 апреля команда Cloud.ru проводит большую ИТ-конференцию про облака и ИИ. В этот раз отдельный трек посвящен разработке и инструментам, которые снижают нагрузку на команду:
▶️автоматизация в эпоху ИИ ▶️DevOps-инструменты в облаке ▶️эффективные среды для разработки, CI/CD и обучения ▶️DevOps- и SRE-агенты ▶️защита cloud native приложений ▶️и другие доклады
Также будут отдельные треки про ИИ, облачную инфраструктуру и работу с данными. И самое крутое – практические воркшопы: берите ноутбук и решайте прикладные задачи под руководством экспертов Cloud.ru. Где и когда: 9 апреля в Москве и онлайн 👉Не пропустите👈

Как спрятать IP сервера? В древние времена, когда еще на территории РФ работал cloudflare, таких вопросов не возникало. Натыкал мышкой и живешь в малине. Даже на бесплатном тарифе. Но всё это от лукавого, мир изменился, а альтернатив особо и не предложил. Всё что есть на рынке, пиздец дорогое, бесплатно прятать и защищать твой айпишник никто не будет. У меня есть пару достойных вариантов для тебя, бесплатных. Первый, это поднять дохленькую випиэску, объединить всё в одну общую netbird сеть и проксировать трафик с випиэски на твои поделки, хоть в интернетах, хоть на 1000 NATами. Сейчас у меня так и организовано, в интернетах торчит випиэска, на ней тоннель и nginx разруливает уже по доменам, причем трафик завязан в мой домашний периметр на проксмокс. И даже микротик не пищит, что у него порты закрыты. Всё работает из коробки. Второй вариант та же внешняя випиэска, но с поднятым Safeline. Это морда с обвесами, новогодняя ёлка на все случаи жизни. Про неё уже упоминали в гейте, это ничего не меняет.
Оно ставится перед твоими веб-приложением и фильтрует трафик, защищая приложение от самых распространенных атак (SQL injection, XSS, Command injection, Path traversal, File inclusion, Webshell, RCE, боты-хуёты).
Короче говоря заебачий такой WAF. Много крутилок, много перделок. В бесплатной версии хватает с головой (да, есть и платная). Получается ты не только анализируешь трафик, но и прячешь айпишник своих приложений и серверов. Пиздато? Пиздато! Композ бывалый:
version: "3"

services:
  safeline-mgt:
    image: chaitin/safeline-mgt:latest
    container_name: safeline-mgt
    restart: always
    ports:
      - "9443:9443"
    volumes:
      - ./data:/data
    environment:
      - TZ=UTC

  safeline-gateway:
    image: chaitin/safeline-gateway:latest
    container_name: safeline-gateway
    restart: always
    depends_on:
      - safeline-mgt
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./gateway:/gateway
    environment:
      - MGT_HOST=safeline-mgt
Два базовых контейнера: панель управления, API, хранилище правил, reverse proxy. А вообще в офф доке есть одна команда, которая скачает нужный композ, создать вольюмы и всё запустит:
bash <(curl -sSL https://waf.chaitin.com/release/latest/setup.sh)
Да, поделка Китайская, но опять же это ничего не значит. В Китае пиздатые специалисты. Рекомендую потыкать, особенно если ищешь вменяемые и бесплатные альтернативы сдохшему клаудфларе. 🛠 #security #services 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Нашли митап, мимо которого мы не смогли пройти! 27 марта AvitoTech зовёт к себе в гости поговорить про базы данных, масштабир
Нашли митап, мимо которого мы не смогли пройти! 27 марта AvitoTech зовёт к себе в гости поговорить про базы данных, масштабирование, безопасность. Тема — огонь, спикеры — свои ребята, так что скучно не будет. Коротко о программе: — Никита Жига выйдет с чек-листом по защите чувствительных данных на DBaaS. Говорят, там будет не просто теория, а реальные кейсы, как это работает внутри Авито. — Роман Ананьев устроит сравнение FoundationDB и Cassandra 5. Не на слайдах, а вживую — с примерами, кодом и, видимо, неожиданными выводами. — Игорь Конев расскажет про масштабирование S3. Должно быть интересно, особенно тем, кто с объектными хранилищами работает. В общем, если вы в Москве — приходите в офлайн. Если нет — подключайтесь к онлайн-трансляции. Регистрация по ссылке, места там обычно быстро разбирают До встречи.

15 функций Bash, которые стоит добавить в .bashrc Со временем понимаешь, что половину времени в терминале ты пишешь одно и тоже. Пара небольших функций в .bashrc экономит часы. У каждого эти функции обычно индивидуальны, но возможно этот список раскроет тебе глаза на что-то новое. Создать директорию и сразу в неё перейти
mkcd() {
  mkdir -p "$1" && cd "$1"
}
Подняться на несколько уровней вверх
up() {
  local d=""
  for ((i=1;i<=$1;i++)); do
    d+="../"
  done
  cd "$d"
}
Быстро найти файл
ff() {
  find . -type f -iname "*$1*"
}
Найти директорию
fd() {
  find . -type d -iname "*$1*"
}
Найти процесс
psg() {
  ps aux | grep -i "$1" | grep -v grep
}
Посмотреть последние команды
h() {
  history | tail -n "$1"
}
Поиск по истории
hg() {
  history | grep "$1"
}
Узнать размер директории
dirsize() {
  du -sh "$1"
}
Универсальная распаковка архивов
extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.bz2) tar xjf "$1" ;;
      *.tar.gz) tar xzf "$1" ;;
      *.bz2) bunzip2 "$1" ;;
      *.rar) unrar x "$1" ;;
      *.gz) gunzip "$1" ;;
      *.tar) tar xf "$1" ;;
      *.tbz2) tar xjf "$1" ;;
      *.tgz) tar xzf "$1" ;;
      *.zip) unzip "$1" ;;
      *.7z) 7z x "$1" ;;
      *) echo "unknown archive" ;;
    esac
  fi
}
Быстрый HTTP-сервер из текущей папки
serve() {
  python3 -m http.server "${1:-8000}"
}
Узнать свой внешний IP
myip() {
  curl -s ifconfig.me
}
Узнать IP домена
ipinfo() {
  dig +short "$1"
}
Показать открытые порты
ports() {
  ss -tuln
}
Полная очистка терминала
cls() {
  clear && printf '\e[3J'
}
Безопасный rm
rm() {
  ls -FCsd -- "$@"
  read -p 'Delete? [y/N] ' ans
  if [ "$ans" = "y" ]; then
    command rm -rf -- "$@"
  fi
}
С удалением еще можно сделать аналог корзины, добавив простое копирование в какой-нибудь временный каталог, который автоматически зачищается спустя какое-то время, например в /tmp. The end. Кидай в комменты, какие функции используешь ты, будет полезно. 🛠 #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Как стать DevOps-инженером и какие знания действительно нужны на старте? 25 марта пройдет День открытых дверей онлайн-магистр
Как стать DevOps-инженером и какие знания действительно нужны на старте? 25 марта пройдет День открытых дверей онлайн-магистратуры ИТМО «DevOps-инженер облачных сервисов» в партнёрстве с Яндекс Практикумом.
На встрече обсудим: 🔵 что ждут работодатели от DevOps-инженеров в 2026 году 🔵 какая главная сложность входа в профессию DevOps 🔵 как устроено обучение и вступительные экзамены Расскажем, как проходит обучение, какие навыки получают студенты магистратуры и как совмещать учёбу с работой. А ещё сможете задать вопросы команде программы.
Ждём вас 25 марта в 19:00 мск. → Зарегистрироваться на ДОД

Как кубер и докер дебажить??? Ладно, выдеру кусок из будущего сезона LF, s4e18 пусть побудет публичным, ради тебя ничего не жалко.
Чуть раньше я уже писал подобный пост для докера «основные методы отладки», но там освещены не все моменты.
Зачастую используются «тулбоксы», это такие специальные docker контейнеры, которые содержат в себе все самые необходимые утилиты для этого самого дебага. Такие «тулбоксы» можно делать самостоятельно, а можно воспользоваться готовыми. Один из самых популярных, это netshoot, в него включено свыше 50ти консольных утилит на все случаи жизни. Основной упор сделан на диагностику сетевой хуйни. Например:
kubectl run netshoot --rm -it --image=nicolaka/netshoot
Теперь можно выполнить:
dig service.bashdays.svc.cluster.local  
curl http://service:8080
Или зайти в network namespace pod:
kubectl debug pod/myapp -it --image=nicolaka/netshoot
Короче если какой-то сервис не работает, запускается netshoot делается DNS проверка dig service, проверка TCP nc service 5432, смотрим пакеты tcpdump -i any port 5432 и т.п. Довольная удобная штука, ничего выдумывать не нужно. Аналогично создаются другие «тулбоксы» со своим содержимым и утилитами. У каждого уважающего себя девопс-инженера, должен быть такой image под рукой, рано или поздно он обязательно пригодится и сослужит службу.
Самое важное здесь, разместить этот образ на РФ серверах, чтобы рядышком был и никакие блокировки бы его не касались. Да и тот же `netshoot` желательно к себе утащить в норку.
Чем еще подебажить: - k8s-toolbox - Busybox - dnsutils - Network Multitool А в новых версиях куба активно используют Ephemeral containers, как раз тот самый kubectl debug. Можно внедрить debug container прямо в pod. Кстати «тулбоксы» можно использовать не только в кубере, они отлично ложатся на обычный докер, опять-же сеть потыкать, покурлить и помяукать. Так что если у тебя нет куба, похуй, пригодится и для обычного докера. Ну а теперь давай создадим искусственную проблему и попытаемся её диагностировать с помощью этих самых «тулбоксов». …. На этом всё, изучай! 🛠 #devops #debug #docker #k8s 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Встройте LLM в разработку правильно ↗️ ИИ позволяет генерировать код быстрее. Но его бесконтрольное использование часто приво
Встройте LLM в разработку правильно ↗️ ИИ позволяет генерировать код быстрее. Но его бесконтрольное использование часто приводит к багам, уязвимостям и росту технического долга. Как этого избежать и сделать процесс безопасным — расскажет эксперт Cloud.ru на вебинаре 17 марта. Вы узнаете:
➡️как быстро запустить и контролировать генерацию кода с LLM в VS Code ➡️как выстроить правила, ограничения и стандарты при работе с LLM ➡️как настроить ранний контроль качества и безопасности через SonarQube ➡️как использовать MCP-серверы для качественного кода
Не забудьте зарегистрироваться 🌐

Вчера работало. Сегодня — Legacy. Переехать полноценно на linux я пока не смог, оказалось много завязок на винду, но яндекс.б
Вчера работало. Сегодня — Legacy. Переехать полноценно на linux я пока не смог, оказалось много завязок на винду, но яндекс.браузер был успешно заменен. Сначала мой выбор пал на ARC, но как оказалось разработчики забили на него хуй. Поэтому коллеги из mastodon посоветовали попробовать ZEN. Иии он полностью оправдал ожидания. Тем более оно на движке Firefox и отлично кастуется как визуально, так и функционально. А самое главное, в нем нет встроенных ИИ. Подкупило меня именно наличие WorkSpaces. У меня есть 4 категории вкладок:
1. Все подряд (побегать по сайтам) 2. Self-Hosted (домашние сервера и сервисы) 3. GPT (несколько нейронок) 4. Бухгалтерия (отчетность, диадоки-хуёки всякие)
Раньше я группировал их в «группа вкладок», но теперь навесил workspaces на горячие клавиши «ALT+1, ALT+2…», стало намного удобнее и быстрее переключаться, возникает меньше путаницы. Дополнительно к workspaces можно создавать папки под вкладки, например нашел что-то интересное, закрывать жалко, но и сейчас нет времени разбираться. Перенес вкладку в папку, она там висит и не тревожит моё внимание. Ну там всякий сплит окон типа терминального tmux. Из необычного, все вкладки располагаются слева, сначала непривычно, но потом проникаешься. Настроек хуева гора. Если не хватает, то можно впендюрить обвесы, опять же на их сайте это всё лежит, ну и на гитхабе энтузиасты стряпают регулярно. Что по глюкам? Да пока не наблюдаю, тормозов не ощущается, рутокен работает, нет ощущения, что пересел с лексуса на девятку, дальше уже посмотрим. Присмотрись, возможно зайдет и наконец организуешь свои 100500 открытых вкладок которые жалко закрывать. 🛠 #soft 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Выбирать хардовое обучение вслепую — так себе затея. Качественное обучение требует времени и сил, поэтому перед тем как вписы
Выбирать хардовое обучение вслепую — так себе затея. Качественное обучение требует времени и сил, поэтому перед тем как вписываться, важно заглянуть «под капот». В ИнженеркаТех открыты демо-доступы к флагманским инженерным программам. Вы можете зайти на платформу, оценить технический уровень материалов и получить знания с 1 урока. Выбирайте свое направление, тестируйте и делайте осознанный выбор: 1️⃣ DevOps инженер: интенсив по проектированию и автоматизации инфраструктуры 5 модулей плотной практики. Проходим путь от CI/CD (GitHub Actions) и IaC (Terraform, Terragrunt) до работы с YandexCloud и деплоя в Kubernetes. В финале — настройка мониторинга (Loki, Prometheus) и автомасштабирования (HPA). Каждая тема закрепляется домашкой с ревью. 👉 Забрать демо-доступ к курсу - https://inzhenerka.tech/devops 2️⃣ Разработка модулей ядра Linux (Linux Kernel developer) Глубокое погружение в системное программирование. Разбираем архитектуру ядра Linux, пишем простейшие модули, разрабатываем и регистрируем драйверы для символьных и блочных устройств. Отдельный фокус на управление памятью, работу с / proc и решение проблем конкуренции (семафоры, мьютексы). 👉 Забрать демо-доступ к курсу - https://inzhenerka.tech/linux_drivers 3️⃣ Разработка на C под Linux (Системный разработчик) Фундаментальная база по созданию системных приложений. Работаем с файловой системой, низкоуровневым вводом-выводом, статическими и динамическими библиотеками. Изучаем все виды IPC (очереди сообщений, shared memory, сигналы), учимся работать с сокетами, потоками и писать демонов. 👉 Забрать демо-доступ к курсу – https://inzhenerka.tech/linux_developer_c

Если человеку отрубить ногу, это не значит что он стал пиратом. ㅤ Ай да вкуснятинку я тебе принёс. Пошел хайп на MP3 плееры и
Если человеку отрубить ногу, это не значит что он стал пиратом. Ай да вкуснятинку я тебе принёс. Пошел хайп на MP3 плееры и музыку в первоначальном виде, то есть без цензуры. Кто не знает, с 1 марта снова закрутили гайки и артистов обременили зацензурить все свои произведения. Теперь большинство песенок либо «запикано», либо смысл полностью изменен. Поговорка «Из песни слов не выкинешь» заиграла новыми красками. Ладно, к делу. Soulseek — кросплатформенная софтина для peer-to-peer (P2P) обмена файлами, в первую очередь — музыкой. Она позволяет пользователям напрямую обмениваться файлами между своими компьютерами через пока еще доступный интернет. Помимо музыки, можно найти массу всего интересного, включая софт.
Помню в начале 2000х было нечто подобное, вроде как «осёл» назывался (eDonkey, eMule).
Суть soulseek — расшарить на компе папку и поделиться со всеми, как в старые добрые. Можно ничего не шарить и только потреблять. Что прикольно, музло можно сразу качать дискографиями, а не отдельными песнями. И это музло НЕ будет «зацензурено». Удобно? Да охуенно! Пойду поищу свой старенький digma mp3 плеер, да погружусь в вайб. А какой у тебя был MP3 плеер? Поделись в комментах если еще помнишь. Хорошей тебе рабочей недели. Не болей! 🛠 #soft #services #music 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Всем привет. Здесь я уже останавливался на sftp. Немного заострю внимание на особенностях применения в скриптах. 🔤🔤🔤🔤🔤🔤🔤 Вы все люди взрослые, но на всякий случай напомню, что использовать sftp с паролем категорически противопоказано. И это важно не клиенту. Это важно серверу. Нужно обязательно использовать ключ. Да, сам ключ может быть без пароля, что фактически превращает ключ в тот же самый пароль, в случае хищения, но для сервера так безопасней. Обычно для обработки в скрипте используют heredoc, но есть и другой путь, через конвейер.
echo -e "ls\\ncd /tmp\\nget 123.txt\\nbye"|sftp -i keyfile user@host:/path/to/dir
Здесь \\n - это код перевода строки. Не красиво, но работает. Вот тут есть небольшая тонкость, которую хотелось бы пояснить. Весь пакет команд будет выполнен, вне зависимости от ошибок. Т.е. если был запрошен переход в каталог, которого не оказалось, а потом команда заливки файла - файл будет залит в текущий каталог, и никто об этом не узнает. Для решения проблемы есть специальный ключ -b (batch mode) который позволяет читать sftp-скрипт из файла. Чтобы (как в нашем случае) читать stdin, нужно указать -b- , или совсем конкретно -b "/dev/stdin". При использовании данного ключа, если команда не выполнена, sftp завершается с ошибкой, все дальнейшие команды игнорируются. А эту ситуацию можно обработать стандартными средствами bash. Но и здесь есть исключения. Если команду указать с префиксом "-", то она переходит в разряд опциональных, и в случае ошибки, sftp-скрипт будет продолжен. Например -get 123.txt. Кроме этого префикса есть еще префикс "@", который подавляет печать(вывод) команды при выполнении. Префиксы равнозначны, могут использоваться в любой последовательности. Знания почерпнуты из man, при попытке перевести обмен между 1c с ftp на sftp. Если тема интересна, могу привести рабочий скрипт обмена, и рассказать, почему я от него в итоге отказался.
man sftp
Всем кода без багов. 🛠 #linux #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Отдам котёночка в добрые руки 🙃 Пристрою в хорошую команду DevOps-инженера. Ласковый, к инфраструктуре приучен, в продакшене не гадит. С отличием окончил Linux Factory и имеет все необходимые навыки. Что умеет: — автоматизировать Linux-сервера через Ansible (roles, порядок, идемпотентность — всё как надо) — строить CI/CD в GitLab и деплоить конфигурации без шаманства — Docker, GitLab Runner, Bash/Python для автоматизации — мониторинг Prometheus + Grafana — vulnerability management, базовый pentest и security-мышление Работал с инфраструктурой 35k+ серверов, сокращал подготовку серверов с часов до минут, избавлялся от ручной рутины и наводил порядок в конфигурациях. Из плюсов: — думает про безопасность, а не только «чтобы работало» — автоматизирует всё, что можно автоматизировать — спокойно относится к продакшену Котёночек самостоятельный, аккуратный, любит инфраструктуру и CI/CD. Отдаётся в команду, где есть сервера, пайплайны и желание жить без рукоблудия. Писать сюда: @hydragoozze 🛠 #биржатруда 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Вчера в чатике интересный комментарий пролетел:
Если открыть файл в vim, то lsof покажет этот файл открытым. А вот если открыть файл в nano, то lsof не факт, что покажет этот файл открытым. Ну видимо nano не постоянно держит открытым файл.
Давай покопаем глубже и посмотрим что происходит. Расчехляем лабу! В первом терминале запускаем:
echo "secret data" > test.txt
nano test.txt
Во втором запускаем глазища:
sudo strace -e open,openat,write,close -p $(pgrep nano)
Пока пусто. Теперь в первом терминале нажимаем CTRL+O и смотрим выхлоп во втором терминале:
openat(AT_FDCWD, "test.txt", O_WRONLY|O_TRUNC) = 3  
write(3, "secret data\n", 5) = 5  
close(3) = 0
Получается nano запихивает весь файл в RAM и только после манипуляций с ним производит запись на диск, то есть не держит его постоянно открытым. По этой причине lsof ничего и не показывает. Теперь идем в vim и повторяем предыдущие команды:
vim test.txt
Но во втором терминале запускаем:
watch -n 0.01 "lsof | grep test.txt"
И сразу же видим что lsof показывает открытые файлы:
vim 6423 user 5u REG 8,48 12288 11148 /tmp/.test.txt.swp
vim 6423 6424 vim user 5u REG 8,48 12288  11148 /tmp/.test.txt.swp
Но это не сам файл test.txt, это его swap версия, то есть создается еще один файл. Если открыть такой файл, то в нем будет мусор:
0000000 3062 4956 204d 2e39 0031 0000 1000 0000
0000010 bfdc 69a7 b9a1 0000 1917 0000 7375 7265
0000020 0000 0000 0000 0000 0000 0000 0000 0000
Этот файл, vim использует для crash recovery, undo history, file already open, incremental writes и т.п. Получается что vim постоянно держит открытый swap, а не исходный файл. Если выполнить:
lsof -p 6423
То увидим всю подноготную этого процесса включая дескрипторы. Ну и финт ушами. В первом терминале выполняем:
vim test.txt
Во втором:
mv test.txt test.old
И видим что vim грязно выругался: E211: File "test.txt" no longer available. А если все то же самое проделать с nano то он даже не пискнет, потому что файл загружен в память и ему похеру что мы физически снесли файл с диска. Можно снова нажать CTRL+O и он даже предложит нам его сохранить со старым именем. Вот тут уже можно почесать репу, получается nano работает быстрее чем vim? Неа, vim тоже загружает файл в память (buffer ram). А swap файл это всего лишь журнал изменений либо undo-файлы. Swap не заменяет память, он выступает в роле дополнительного инструмента. Схема для vim такая:
disk file → RAM buffer (vim)
                ↓
            swap file (.swp)
Схема для nano попроще:
disk file → RAM buffer
В nano нет ни рекавери, не другой подобной хуйни-муйни. Ну а по скорости, разницы практически нет (если файлы небольшие), файлы читаются один раз, оба редактора работают в памяти, ну а linux page cache делает чтение еще быстрее. Если файлы большие, vim все же предпочтительнее, у него более продвинутый механизм по работе с буферами. Так и живем! 🛠 #debug #strace 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

В мире observability стало на один инструмент больше — Yandex B2B Tech запустила платформу Monium. Решение уже доступно в Yan
В мире observability стало на один инструмент больше — Yandex B2B Tech запустила платформу Monium. Решение уже доступно в Yandex Cloud, при этом это не новый эксперимент, а инструмент, который создавался командой Yandex Infrastructure для критически важных сервисов внутри Яндекса. Monium собирает метрики, логи и трейсы в одном интерфейсе, помогает быстро находить инциденты и их первопричины, настраивать алертинг и сценарии эскалации. Поддерживаются Prometheus и OpenTelemetry — что позволит не иметь жесткой привязки к вендору. По масштабу всё серьёзно: до 3 млрд семплов метрик в секунду и тысячи внутренних пользователей. Среди первых внешних тестирующих компаний — ОТП Банк и крупная FMСG-компания. На фоне прогнозов Gartner о росте рынка observability запуск выглядит как логичный шаг для enterprise. Подробнее — в материале СМИ.

Фарш обратно не провернёшь Порой в Bash поделках требуется создать какой-нибудь секрет, для дальнейшей его передачи в CI/CD или куда-то еще. Ежу понятно, это можно сделать «в лоб», но мыж с тобой не волки позорные, поэтому давай сделаем это по всем правилам DevSecOps Best Practice. (* лучшие практики безопасной разработки). Задача: Создать безопасно секрет, чтобы его не спиздили (например из свапа при форензике).
Форензика — это направление информационной безопасности, связанное с анализом и восстановлением данных для расследования инцидентов
Кто-то извращается со shred и т.п. утилитами, но это избыточно, да и на SSD, Btrfs, ZFS и journal FS оно будет работать хуева и не гарантирует физическое уничтожение данных. Лучше на диск вообще ничего не писать. Наш вариант это — pipe через printf. Можно конечно усложнить и сделать через анонимный файловый дескриптор, но получаются те же грабли только сбоку, смысла усложнять нет.
#!/usr/bin/env bash

set -euo pipefail

SECRET="$(openssl rand -base64 32)"

printf '%s' "$SECRET" | \
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 200000 \
  -in input.txt \
  -out output.enc \
  -pass stdin

unset SECRET
Что тут происходит? Ничего необычного, генерим 32 случайных байта, кодируем в base64, получаем пароль высокой энтропии, затем через printf передаем пароль (без \n) через pipe в stdin. Ну и в конце скармливаем какой-нибудь утилите или в CI/CD, куда нужно передать секрет, в моем случае я передал его в openssl. По итогу секрет, не попадает в history, не лежит на диске и временно находится в памяти. Но важно понимать, что после unset SECRET переменная удаляется только из таблицы переменных, в памяти эта переменная может по-прежнему храниться и быть уязвима к форензике. Поэтому носи это в голове и по возможности перезатирай память например тем же stress. А еще оно может попасть в swap и это еще хуже, swap это прям как неочищенная «корзина» с удаленными файлами. На bash этот момент описать наверное не получится, поэтому покажу как сделать на Сиськах. Будем использовать mlock().
#include <sys/mman.h>
#include <string.h>
#include <stdio.h>

int main() {
    char secret[32] = "super_secret_password";

    if (mlock(secret, sizeof(secret)) != 0) {
        perror("mlock failed");
        return 1;
    }

    printf("Secret in locked memory\n");

    // Используем секрет...

    memset(secret, 0, sizeof(secret)); // затираем
    munlock(secret, sizeof(secret));

    return 0;
}
Когда этот код будет вызывать mlock(), указанный диапазон памяти закрепляется в RAM и ядро не имеет права выгружать его в swap. Получается что сначала mlock() блокирует участок памяти, затирает memset() её перед освобождением и с помощью munlock() снимает блокировку. Кстати mlock() используют GnuPG, OpenSSH, HashiVault, KeePassXX. Так что вариант надежный, можешь не сомневаться. А еще иногда используется mlockall():
mlockall(MCL_CURRENT | MCL_FUTURE);
Блокируется вся текущая и будущая память процесса, активно применяется демонами в HashiVault. Такие дела. Накидай еще своих вариантов в комменты, будет интересно ознакомиться. 🛠 #dev #security #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Как развернуть приватную большую языковую модель в Kubernetes Selectel приглашает на вебинар, где покажут полный процесс развертывания модели — от подготовки инфраструктуры до создания интерфейса и настройки мониторинга. 📅 12 марта, 12:00 📍 Онлайн 👥Для инженеров DevOps, специалистов по эксплуатации и архитекторов ИТ-инфраструктуры. 👉Смотрите полную программу и регистрируйтесь: https://slc.tl/53nbd Чтобы не пропустить вебинар и узнавать о других событиях и бесплатных курсах Selectel, подписывайтесь на @selectel_events Реклама, АО «Селектел», erid: 2VtzqwibA5J

🤖 Вебинар «Внедрение LLM в бизнес: от выбора модели до масштабирования компетенций» 26 февраля 2026 11:00 (МСК), онлайн ИИ у
🤖 Вебинар «Внедрение LLM в бизнес: от выбора модели до масштабирования компетенций» 26 февраля 2026 11:00 (МСК), онлайн ИИ уже меняет рынок. Вопрос не «если», а «когда» и «как»! Присоединяйтесь к совместному вебинару «Академии «Мобиус» и MWS — получите четкий план внедрения больших языковых моделей за месяцы, а не годы. Что будет на вебинаре: • Пошаговый алгоритм выбора LLM под конкретные задачи — разберем все 69 моделей • Рекомендации по развертыванию (Cloud, Hybrid, On‑premises): учтем бюджет и безопасность • Способы интеграции LLM с ERP/CRM — покажем на живых примерах • Методы для организации обучения сотрудников с практическим применением ИИ и мн. др. Кейсы вебинара: • ИИ‑агенты для крупного банка: интерактивное обучение на инфраструктуре клиента • Обучение на MWS GPT: сотрудники сами создают агентов через готовые компоненты • «Модель 4К»: оценка компетенций через мультиагентную систему Инструменты, которые вы получите на вебинаре для старта: • Набор агентов JSON для NO‑CODE конструктора MWS GPT • Матрица кейсов LLM/GenAI по отделам • Чек‑лист по обучению ИИ в компании • ТОП‑5 ИИ‑инструментов для корпоративного обучения • Спецпредложение: скидка на первый пилотный проект с «Академией «Мобиус» и MWS GPT (действует 2 недели после вебинара) Наш вебинар для: руководителей цифровой трансформации, ИТ‑специалистов, HR, T&D‑менеджеров и всех, кто внедряет ИИ в компании. 🚀 Регистрируйтесь сейчас — мест мало! Реклама. ООО «Мобиус Технологии», ИНН: 7723890541, erid: 2VtzqxMd7He

Контекстная конфигурация в git При работе с git репозиториями, частенько попадаешь в просак с таким:
git config --global user.name
git config --global user.email
Один раз забил свои явки-пароли и затем git при любом коммите или пуше будет подставлять эти данные. То есть в историю коммитов будет забиваться user.name и user.email. Это логично и понятно. Но если у тебя смешаны личные и рабочие репозитории, начинается цирк с конями. Я тысячу раз комитил в рабочую репу под личным user.name и user.email и получал за это по рукам. Получал конечно сам от себя.
Потому что смешивать личное и рабочее — фуфу!
Из этой ситуации можно выйти по-разному, кто-то изобретает безумные Bash скрипты или пишет хуки, кто-то постоянно правит конфиги перед пушем. Короче костыль на костыле. Но есть решение лучше и нативнее. Расчехляем хоумлабу! У нас будет 2 папки:
mkdir -p ~/projects/personal
mkdir -p ~/projects/work
Настраиваем основной конфиг:
vim ~/.gitconfig
[user]
    name = Roman Shubin
    email = shuba@bashdayz.com

[includeIf "gitdir:~/projects/work/"]
    path = ~/.gitconfig_work
Нюанс: / в конце work обязателен. Git интерпретирует gitdir: как префикс пути к каталогу .git. Создаем рабочий конфиг ~/.gitconfig_work
[user]  
  name = Linux Factory
  email = exe@linuxfactory.ru
На этом танцы с бубном закончились, проверяем:
mkdir -p ~/projects/personal/app  
cd ~/projects/personal/app  
git init

git config user.email
git config --show-origin user.email
Ага, видим что для личных проектов будет применяться shuba@bashdayz.com и берется он из ~/.gitconfig. Последние 2 команды, как раз выводят эту информацию в терминал. Хорошо, теперь:
mkdir -p ~/projects/work/app  
cd ~/projects/work/app  
git init

git config user.email
git config --show-origin user.email
Да твоюж мать! Видим Linux Factory и exe@linuxfactory.ru. Что и требовалось доказать, данные берутся из файла ~/.gitconfig_work. Всё, мы успешно разделили контекст между личными и рабочими проектами. Таких инклудов ты можешь насоздавать сколько угодно. Самое главное это работает без костылей и каких-то лишних обвесов вокруг git. Git скрывает очень много интересного и не всегда это очевидно. Такие дела, изучай! 🛠 #devops #linuxfacroty #dev 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog