Bash Days | Linux | DevOps
🚀 Хотите узнать больше о мире DevOps, Linux и Bash? Подписывайтесь на мой авторский канал Bash Days! 📺 Здесь вы найдёте актуальные новости, советы и лучшие практики в области DevOps. Я буду делиться своими знаниями и опытом, чтобы помочь вам стать успешным специалистом. 🔧 На канале также будут обзоры полезных инструментов, инструкции и примеры скриптов на Bash, которые сделают вашу работу проще и эффективнее. 🚀 Не упустите возможность присоединиться и стать частью сообщества DevOps! 💪
Публикации канала
Docker, apt, pip, Ansible или Nix: кто оказался быстрее? Инженеры HOSTKEY протестировали пять способов установки приложений на сервер и сравнили скорость запуска, потребление ресурсов, производительность и устойчивость к сбоям. Результаты оказались неожиданными: ⚡️ Быстрее всех приложение запустил Nix — за 27 секунд. Docker потребовалось 110 секунд, а Ansible — 111. Самым затратным по дисковому пространству оказался Docker — около 2 ГБ дополнительных данных против 266 МБ у apt. ⚠️ А хуже всего прерванную установку пережил pip: после сбоя систему пришлось восстанавливать вручную. Но есть нюанс: не всегда инструмент, который выглядит быстрее в бенчмарке, действительно быстрее сам по себе. На результаты влияют подготовленное окружение, версии библиотек и характеристики серверов. Все цифры, подробности эксперимента и выводы — в статье HOSTKEY. 👉 Читать исследование А как считаете, какие инструменты или сценарии стоило бы протестировать следующими? Реклама. ООО "АЙТИБ", ИНН 9719026854
Запросов становится больше, ответы приходят медленнее. Какие настройки помогут веб-серверу справляться с нагрузкой, а какие изменения не дадут заметного результата? Чтобы разобраться, нужны и понимание конфигурации, и измерения. 2 ноября в 19:00 на открытом уроке курса «Инфраструктура высоконагруженных систем» разберёте оптимизацию Nginx и Angie под высокие нагрузки. Рассмотрите системные параметры, влияющие на производительность, и настройку TLS для сокращения накладных расходов на шифрование. Узнаете, какие возможности кэширования есть у Nginx и Angie и как использовать их для снижения нагрузки. Отдельно обсудите измерение и анализ производительности на стороне клиента и сервера. Разберёте, как оценивать эффект от изменений и находить узкие места, чтобы подбирать настройки под конкретный сценарий, а не копировать чужую конфигурацию. После урока вы будете лучше понимать, какие параметры проверять в первую очередь, как подходить к оптимизации TLS и кэширования и чем подтверждать результат настройки. Вебинар подойдёт системным администраторам Linux, DevOps-инженерам и разработчикам, которые отвечают за устойчивую работу веб-серверов под нагрузкой. Урок проведёт Николай Лавлинский. Зарегистрироваться: https://vk.cc/d3khWud Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Ну вот и началось… это прекрасно! 🛠 #рабочиебудни — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
🧡 Группа Rubytech участвует в рейтинге работодателей России от hh.ru! Мы создаем программно-аппаратные комплексы под брендом Скала^р, проектируем уникальные инфраструктуры и сервисы для высоконагруженных систем и формируем профессиональную среду для тех, кто развивает цифровую инфраструктуру страны. ❗️В прошлом году Группа Rubytech заняла 14-е место среди 31 ИТ-компании с численностью от 1 000 до 5 000 сотрудников. В этом году хотим подняться ещё выше! До 14 ноября проходит голосование соискателей, и нам очень пригодится ваша поддержка. Чтобы проголосовать, нужно: 1️⃣ Перейти по ссылке и авторизоваться на hh.ru. 2️⃣ Найти Группу Rubytech через поиск или в категории «Технологии и цифровые решения» → «ИТ-компании». 3️⃣ Нажать на сердечко рядом с названием компании. Готово! Спасибо за поддержку 🧡 А если вы хотите узнать больше о наших технологиях и подходах, заглядывайте в блог Группы Rubytech на Хабре. Реклама. ООО «Рубитех», ИНН 7702404085, erid: 9RCQq4g6SY6boowKw6RB4XSdzqe3x42k2dVykBjEBKzN9tiwvbrp7DV78
Forwarded From Этот вечер спасут они 🦸 Вместе с Романом Шубиным, CTO и автором канала Bash Days, собрали новую подборку консольных команд. Она облегчит жизнь системного администратора — сохраняйте! Кстати, это уже третий пост подборки. Еще больше команд — в первой и второй частях. Не забудьте поделиться находкой с коллегами!
Архивирование и хранение. Часть 2/4. Всем привет, с вами снова TagdTagd. Первая часть тут: https://t.me/bashdays/1561 Я уже упоминал программу par2. Она разрабатывалась очень давно, скорее всего во времена ленточных накопителей. И ее логика работы не совсем понятна современным пользователям. Блоки четности разбиваются на несколько файлов. Сделано это было по нескольким причинам: 1. par2 - старая программа, и там есть ограничение в 2 Гб на файл. 2. Раньше сети были медленными, скачать большой файл было проблемой, а для восстановления, как правило, весь файл не нужен. Разработчики предоставили возможность качать только те файлы, которые нужны для восстановления данных. С одной стороны это удобно, с другой ограничивает использование программы ручным режимом. Ну, при наличии большого желания, процесс тоже можно автоматизировать. Кстати, сейчас уже появилась новая версия программы. Par3 в которой уже нет таких ограничений на размеры файлов, но и самой программы пока нет в стандартных репозиториях, поэтому и распространение она пока не получила. На мой взгляд довольно удобным методом восстановления данных обладает rar. Разработчик добавил туда ключ -rr, который к архиву добавляет данные для восстановления. Причем сам файл функциональности не теряет. В далекие годы я и сам не раз пользовался этим архиватором, при переносе данных на дискетах. Он меня не раз спасал. Достаточно добавить 1% данных для восстановления, и это уже спасает от битового гниения (bit rot) и ошибок при передаче по сети. К сожалению rar архиватор платный, даже в мире Linux. (хотя unrar бесплатный). Поэтому в следующих частях создадим ему опенсорсную альтернативу с помощью двух простых bash скриптов. man par2 man unrar Продолжение следует... 🛠 #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Одному без острого, другому без сыра, третьему лишь бы побольше. Полчаса споров, дружное почёсывание репы, и в итоге все заказывают пиццу. А тут прилетает: Ёёёёёёё с Yandex Cloud собирают набор для айтишников и спрашивают их, что туда класть. Вот это настоящий импрувмент. В опросе есть и размер, и когда вообще едят роллы, вплоть до игровой каточки. А по остроте можно выбрать «пусть один ролл будет настоящим испытанием». Идеально, чтобы устроить коллегам нагрузочное тестирование. Если есть что сказать насчёт суши-сета для айтишников, велкам 👉 https://yandex.ru/poll/WHkGeTfANf1ULqJxs7WbXx 🛠 #рабочиебудни — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog yandex.ru Пройдите опрос
Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, пополнил баланс через хуй-пизда-копыто и вот они финальные метры до финиша… Хуй там плавал. Эта залупа требует верификацию по номеру телефона, естественно РФ номера не подходят. Почесал я репу, поплакал, но нюни не стал распускать. Мыж инженеры, надо искать способы решить этот внезапный квест. Покупка одноразового номера не подходила, велика вероятность что эта шляпа через день запросит новое подтверждение. А покупать уже активированный аккаунт я тоже в рот ебал, не люблю я такое. Мне нужно чтобы это было мое и очень желательно — бесплатно. Всякие eSIM я тоже ебал, сегодня она работает, а завтра превращается в тыкву. Ну и остался самый очевидный вариант — сгонять заграницу на выходные и разжиться симкой загнивающего запада. Но зачем мне всё это? Я не стал выбирать жизнь, я выбрал кое-что другое. Почему? Да ни почему. Какие могут быть «почему», когда есть hero_in. ^^^ цитата из книги Ирвина Уэлша (Trainspotting), специальные средства осуждаю, чисто для словца… Заграницу я не поехал, а сделал более очевидный шаг, забил в поисковик — купить иностранную симкарту с доставкой. И прихуел, как говорится — спрос, рождает предложения. Иностранными симками банчат прям на озоне, прикинув хрен к заднице я заказал себе KZ Activ (артикул не даю, сам легко найдешь), за 500-600 рублей, доставка 2 дня. Перед заказом я прекрасно понимал, что покупаю кота мешке. Негативные отзывы все же пишут криворукие обезьяны. Но кот в мешке оказался живым, единственный нюанс это нужен загранник, все регается на него. Да, регистрация займет 2 дня, после того как вставил симку в телефон, нужно выждать сутки и после первой реги еще сутки. Потом симка успешно заводится и работает в роуминге без абонентской платы. Красота, хули. После всех этих телодвижений можно регать нужные сервисы, смс приходят отовсюду и успешно проходят любые верификации. Теперь со мной часть KZ, ну ты понял, заебал! 🛠 #рабочиебудни — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой стороны. Поговорим о сохранности данных. Вот здесь https://t.me/bashdays/1402 уже немного касался этой проблемы, теперь немного расширим. Часть 1/4. Итак - архивы растут. Диски растут. А надежность при этом падает. Этож и ёжику резиновому понятно, что чем больше файл, тем больше вероятность получить дырочку в правом боку. Конечно, сейчас этим уже озаботились и понавыдумывали всяких правильных файловых систем типа btrfs и zfs. Но они любят новое железо, и особенно память. А как быть, если фирма маленькая, и для хранения бэкапов приходится использовать машины, выведенные из эксплуатации из-за морального устаревания? Они себе вполне могут справляться с задачами архивирования. Но как обеспечить надежность хранения на старом оборудовании? Не нужно ничего придумывать. Все уже украдено придумано до нас. По крайней мере в мире Linux. Есть такая прога - par2. Она создает par2-файлы с кодами Рида-Соломона, для файлов или каталогов. Это позволяет восстановить файл в случае повреждения, а если par2 создавался для каталога, то и в случае полного уничтожения файла. Фактически с помощью этой программы можно создавать снапшоты ФС. Но конечно, чудес в жизни не бывает. Если размер файлов четности (par2) 10% от файлов данных, то и восстановить данные можно будет при повреждении не более 10%. Короче, par2 - это такой RAID для бедных, который защищает от небольшой потери данных. Я не буду здесь описывать конкретные примеры использования, сейчас уже все освоили ИИ, а он подскажет решения для Вашей задачи лучше, скажу только, что можно на старенькой машине выделить два диска, например один на 2Тб, а другой на 240Гб. На большом можно размещать архивы, а на маленьком контрольные суммы к ним. Да, такая схема не защитит от выхода из строя диска или контроллера, но вполне может защитить от битового гниения (bit rot), плохих секторов (bad block), или ошибок при передаче файла по сети. Конечно, не стоит складывать все яйца в одну корзину. Нужно взять две такие машины в разных местах. Это будет гораздо надежнее, чем одна машина с RAID-Z2. Ну, и контроль дисков с помощью smartctl из пакета smarmontools никто не отменял. man par2 man smartctl wiki Код Рида — Соломона Продолжение следует... 🛠 #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь ознакомиться здесь Скрипт писался с привлечением ИИ, но мной отлажен, и точно работает. Требует jq и curl. В отличие от телеграма, в максе заявлено, что бот может писать сообщения пользователю тольков течение суток, после последнего сообщения пользователя боту. Поэтому для нормальной работы оповещателя желательно создать группу, добавить туда бота, и от его имени писать. С определением номеров пользователей и групп разбирался по статье Романа. Там очень хорошо описано. #!/bin/bash # Скрипт отправляет текстовое сообщение пользователю или в чат # $1 "user" для отправки пользователю, "chat" для отправки в чат # $2 ID пользователя или чата, соответственно # $3 "Текст сообщения в кавычках" # $4 "Имя файла в кавычках" # если файл есть, а текста нет - вместо текста "" # v 20260812 declare -x PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin set -euo pipefail exec 1>&2 declare BASE_URL="https://platform-api2.max.ru" # база API + нужны сert минцифры declare BOT_TOKEN="AAAAAAAAAAAAAAAAAAA_BBBBBBBB_CCCCCCCCCCCCCCCC" # === Параметры скрипта === case "$#" in 0|1|2) clear head -6 "$0" exit 1 ;; 3) declare FILE="" ;; *) declare FILE=$4 if [[ -f "$FILE" ]];then clear echo -e "Файл '$FILE' не найден" exit 1 fi ;; esac if [[ -z "$3" && -z "$4" ]]; then clear echo -e "Ошибка. Нет текста или файла." exit 1 fi declare -l RECEPIENT=$1 declare ID=$2 declare TEXT=$3 case $RECEPIENT in user | chat ) declare TO_URL="$BASE_URL/messages?${RECEPIENT}_id=$ID" ;; *) clear echo -e "ошибка параметра 1" $RECEPIENT\\n head -6 "$0" exit 1 ;; esac #declare -p RECEPIENT ID TEXT FILE TO_URL # === 1. Получить URL для загрузки файла === if [[ -n "$FILE" ]]; then UPLOAD_META=$(curl -s -X POST \ "$BASE_URL/uploads?type=file" \ -H "Authorization: $BOT_TOKEN") UPLOAD_URL=$(echo "$UPLOAD_META" | jq -r '.url') if [[ -z "$UPLOAD_URL" || "$UPLOAD_URL" == "null" ]]; then echo "Не удалось получить URL для загрузки" echo "Ответ API: $UPLOAD_META" exit 2 fi # === 2. Загрузить файл === UPLOAD_RESULT=$(curl -s -X POST \ "$UPLOAD_URL" \ -F "data=@$FILE") # Сохраняем результат загрузки в переменную для вложения ATTACHMENT_PAYLOAD="$UPLOAD_RESULT" fi # === 3. Формируем JSON сообщения === # Если есть файл, добавляем attachment if [[ -n "$FILE" ]]; then MESSAGE_JSON=$(jq -n \ --arg text "$TEXT" \ --argjson attachment "$ATTACHMENT_PAYLOAD" \ '{ text: $text, attachments: [ { type: "file", payload: $attachment } ] }') else MESSAGE_JSON=$(jq -n --arg text "$TEXT" '{text: $text}') fi sleep 3 # для антифлуда # === 4. Отправляем сообщение === curl -s -X POST \ "$TO_URL" \ -H "Authorization: $BOT_TOKEN" \ -H "Content-Type: application/json" \ -d "$MESSAGE_JSON" | jq . Сохраняем send_max.sh chmod +x ./send_max.sh /send_max.sh "chat" 123456 "text" "/path/to/file" 🛠 #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал работать хорошо. Пришлось разбираться с новым API, переделывать уведомления с Telegram на MAX. Решил вот с вами поделиться опытом — может, кому-то пригодится. За это время пришлось решить несколько проблем: 1. У MAX под Linux не работал звук. Была проблема с прослушиванием аудио/видео и звонками. 2. MAX постоянно допиливают, поэтому меняются адреса для работы с API. 3. Регистрация бота — небольшой квест, но вполне решаемый. И всё это бесплатно. Большинство проблем решается с помощью поиска или ИИ. Скрипты брал оттуда же, но пришлось немного адаптировать для себя. Но за неделю разобрался. Всё заработало. Если кому-то понадобится рабочий shell-скрипт для отправки в сообщении текста, файла или текста + файла — пишите, приведу в следующем сообщении. Первый вопрос Пропустим: там много разных проблем может быть, но моя решилась после запуска в консоли: /usr/share/max/bin/max-service/bin/max-service Нужно было просто доставить библиотеки и создать пару линков. Второй Есть несколько адресов для общения с MAX по API: - https://platform-api.max.ru - https://platform-api2.max.ru На данный момент работают оба, но рекомендуют второй. Но у него тоже своя фишка. Он не работает без сертификатов Минцифры. Третий — регистрация бота В отличие от Telegram зарегистрировать бота могут только ИП и юрлица. Делается это всё при наличии квалифицированной электронной подписи. Юрлицо может зарегистрировать до 5 ботов, причём требуется указать их назначение. Каждый бот утверждается модератором. На это уходит до 24 часов, но у меня прошло быстро, часов за 6. Ну, в общем, как-то так. С учётом того, что в ближайший месяц проблемы со связью будут нарастать, рекомендую подсуетиться заранее. 🛠 #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Напьются своих рафов лавандовых, а потом в жопы ебутся… На фоне переезда на линукс, я знатно упоролся и ушел в сторону разработки. На этот раз я решил закрыть свои гештальты, которые преследовали меня последние несколько лет. Короче сначала я запили плагин для Obsidian и даже удалось захуячить его в официальный стор плагинов самого обсидиана. Штуку я назвал Cursor Layout Indicator. Суть такая, что рядом с курсором у тебя отображается маленький индикатор текущей раскладки. Выёбываться я не стал и сделал чисто для RU/EN. Будь моя воля EN бы я с удовольствием выпилил, но увы, из песни слов не выкинешь. Адаптировал под основные операционки, запилил смену цвета индикаторов и еще пихнул фичу — если начать вводить текст не в той раскладке, я жму хоткей и предыдущие слова переводятся в нужную раскладку. Эта фича пока работает через жопу, но работает, править баги я пока не собираюсь, так что если хочешь, можешь пулреквестить, смержу. Исходники, картинки тут 👉 https://two.su/ml9pj На этом я не остановился! Товарищи из mastodon, закинули импрувмент — а что если для всей ОС сделать подобное? Хе! Чем бы дитя не тешилось. Яж на Niri подсел, ну вот и поперла разработка. Следом был выпущен плагин или хуй пойми че — niri-layout-cursor. niri-layout-cursor показывает текущую раскладку прямо возле указателя мыши во всей сессии niri. Иконка в системном трее открывает локальные настройки цветов, размера и интеграции с Obsidian. Интеграция с Обсидиан — если ты ранее ставил самый первый мой плагин, то оно не конфликтует, ну а если не ставил, то из коробки будет все работать. Суть работы плагина — такой-же, индикатор присутствует постоянно во всей системе. Стало гораздо удобнее отслеживать глазами, не нужно постоянно переводить взгляд вверх, чтобы позырить чё там сейчас включено. Как ставить и т.п. смотрим тут 👉 https://two.su/fdomd Не навяливаю, мож у кого-то такие же боли как у меня, потыкайте, всегда готов к диалогу, пулреквестам и т.п. Звездочки мне в хуй не упёрлись, НО не откажусь, так что заранее — спасибо! На халяву и уксус сладкий. Такие дела! 🛠 #dev — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Kubernetes на минималках Поднимаем K3s локально и не ноем про инфраструктуру Кто хочет — ищет способ, кто не хочет — ищет причину. В четвёртом сезоне Linux Factory мы собираем нормальный отказоустойчивый кубер: три control-ноды, три worker-ноды, HAProxy, Keepalived, VIP, отдельный DNS и хранилище. Это правильно для обучения инфраструктуре, но даже в минимальной конфигурации получается шесть виртуалок по 2 CPU и 2 ГБ RAM. Не у каждого ноутбук способен переварить такой зоопарк. Показываю, как поднять настоящий однонодовый кластер K3s на одной VM с 2 vCPU и 2–4 ГБ памяти, подключить kubectl и запустить первое приложение. 👉 https://two.su/epn8r 🛠 #k8s #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Я тут знатно дал ёба и приобрел это. Вот что случается с человеком, который всю жизнь пил пиво и потом перестал. Мало мне сломанных пальцев после знакомства в вимом. Ладно, на самом деле не всё так хуёва… Это я снова себя успокаиваю… Взял я эту клавиатуру в командировку, как единственную, даже не распаковывая, думаю — аааа, на месте разберусь, хули там, этож клавиатура, а не поиски клитора. Ага, хуй там плавал. Я даже поверил в себя и не стал брать мышь. На деле всё вышло довольно печально, этот пост я пишу десятый час, потому что мозг просто взрывается, мой KPI упал ниже плинтуса, Условные рефлексы полностью отключились, мышечная память делает хуйню. Вот прям один в один опыт, как с вимом. Я даже на проде теперь боюсь работать под рутом, нажмешь не туда и приплыли. Жил я с этой клавиатурой 3 дня, самый важный момент — сначала настроить базовую раскладку и вывести в угол экрана подсказку их entropy, чтобы подглядывать. Это я хорошо взял еще кейкапы с символами. После настройки всё встаёт на свои места, спустя сутки ёбнутые привычки меняются и начинаешь привыкать уже к хорошему. Большие пальцы на руках прям маст-хев, можно сказать сразу 6 кнопок на них задействованы, а не только всратый пробел. Что пиздец понравилось - можно вынести точку, запятую, вопросительный знак на отдельный слой и они будут работать одинаково при разных раскладках. Я пишу дохрена текстов и постоянно ебусь с этими запятыми и точками. Называется этот режим RuEn. Даже плагин для обсидиана сделал Cursor Layout Indicator, чтобы выводило под курсором текущую раскладку. Теперь такой проблемы нет, теперь всё под рукой в любой раскладке. Потихоньку докручиваю свою личную раскладку, которая комфортна мне, делаю комбо, макросы, даже с трекболом немного разобралися. Как говорится — жить захочешь, не так раскорячишься. В связке с niri работает отлично, особенно переходы между окнами радуют. Клавиатура да, не для всех, для сплита надо дорасти, но с каждым днем мои результаты всё лучше и лучше. Короче мне нравится. Рекомендую попробовать. Что интересно у меня нет боли, когда я беру обычную клавиатуру, это как 2 языка выучить, спокойно пиздишь на инглише и можешь тутже наматюгаться на русском. Вчера невольно поймал себя на мысли что надо еще K4 модельку взять в офис, тогда на обычную клавиатуру не придется переключаться. А ты пользовался такими штуками? Го в комменты! 🛠 #hardware #workflow — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Комментарии
Комментариев пока нет
Комментарии пишут вошедшие — так видно, кто автор.
Войти