ru
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

Открыть в Telegram

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

Больше

📈 Аналитический обзор Telegram-канала Bash Days | Linux | DevOps

Канал Bash Days | Linux | DevOps (@bashdays) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 23 794 подписчиков, занимая 5 701 место в категории Технологии и приложения и 28 128 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 23 794 подписчиков.

Согласно последним данным от 17 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -202, а за последние 24 часа — -5, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 21.91%. В первые 24 часа после публикации контент обычно набирает 12.48% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 5 213 просмотров. В течение первых суток публикация набирает 2 971 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 21.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как bashdays, linux, bash, docker, скрипт.

📝 Описание и контентная политика

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

Благодаря высокой частоте обновлений (последние данные получены 18 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

23 794
Подписчики
-524 часа
-277 дней
-20230 день
Архив постов
Проект переехал на кубы? Поможем разобраться с новыми задачами 🔥 🔸Научим разворачивать инфраструктуру k8s, обслуживать клас
Проект переехал на кубы? Поможем разобраться с новыми задачами 🔥 🔸Научим разворачивать инфраструктуру k8s, обслуживать кластер и его сервисы 🔸Подготовим к работе в DevOps-проектах 🔸Расскажем, как поддерживать k8s, находить неисправности и решать проблемы 🔸Покажем, как внедрить CI/CD, настраивать мониторинг и управлять контейнеризированными приложениями 16 декабря Слёрм запускает новый поток курса «Kubernetes: База» для инженеров и администраторов. Программа курса обновлена в июле 2024 года. Внутри: 👉 6 недель обучения 👉 73% практики и работы со стендами 👉 5 онлайн-встреч со спикерами 👉 итоговая сертификация Узнать подробности и занять место на потоке — по ссылке ⬅️ Реклама ООО «Слёрм» ИНН 3652901451

Добрый вечер, здрасти. За чо купил, за то и продаю. На повестке — direnv. Эт полезная хуёвина для расширения оболочки. И она достаточно известна среди населения в загнивающем западе. Позволяет загружать и выгружать переменные среды в зависимости от каталога. Грубо говоря — позволяет не засирать .profile всяким дерьмом. Работает так: перед каждым запуском оно проверяет наличие файла (.envrc или .env) в текущем или родительском каталоге. Если такой файл существует, то он загружается в подоболочку bash. И все экспортируемые переменные становятся доступны для текущей оболочки. Работает с большой четверкой: bash, zsh, fish, tcsh
Суть — используем переменные среды для конкретного проекта, не трогая при этом ~/.profile.
Что интересно, direnv это бинарник на golang, что уже подразумевает скорость и все плюхи связанные с этим. Для убунты ставится так: apt install direnv
Как воткнуть это в другое место, подробно написано тут ну или спроси у медведя.
Подключаем так, добавляем в ~/.bashrc:
eval "$(direnv hook bash)"
Для других шелов смотрим тут.
Не забываем перечитать файл ~/.bashrc чтобы изменения вступили в силу. Так, поставили, молодцы! Проверяем чо получилось:
cd /tmp
mkdir my-project

echo ${FOO-bashdays}
На экран выдалось: bashdays Переменная среды FOO не вывелась, логично, дальше:
echo export FOO=foo > .envrc
Ёпта, ошибка direnv: error /tmp/my-project/.envrc is blocked. Run `direnv allow` to approve its content. Сработала защита от дурака, которая запретила нам использовать .envrc. Хе, ща пофиксим!
direnv allow .
Во! Лепота!
direnv: loading /tmp/my-project/.envrc
direnv: export +FOO
Повторяем первую команду:
echo ${FOO-bashdays}
Хуяк и получаем: foo Что и требовалось доказать, direnv отлично справилась с поставленной задачей. Теперь выходим из проекта и смотрим:
cd ..

direnv: unloading

echo ${FOO-bashdays}
Ииии барабанная дробь, у нас вывелось — bashdays! Какая же красота и любовь с первого взгляда! Рекомендую! Однозначно забираем себе в копилку и внедряем в свой воркфлоу, по крайней мере для всяких лабораторных испытаний эта штука подходит идеально. ➡️ Проект на гитхабе: https://github.com/direnv/direnv ⭐️ Star 12.6k tags: #bash #linux — 🔔 @bashdays➡️ @gitgate

Selectel Admin MeetUp 5 декабря в 19:00 Selectel проведет Admin MeetUp. На митапе участники и спикеры рассмотрят практики без
Selectel Admin MeetUp   5 декабря в 19:00 Selectel проведет Admin MeetUp.   На митапе участники и спикеры рассмотрят практики безопасной разработки и способы их внедрения, обсудят, как автоматизировать эти проверки, а также познакомятся поближе с Docker Buildx.   В программе мероприятия три доклада: - «Как защититься от внешних атак с помощью Crowdsec? Обзор альтернативных WAF/IPS/IDS/NGFW решений» Спикер — Андрей Ефремов, инженер по информационной безопасности, Selectel - «Автоматизация DevSecOps: запускаем конвейер». Спикер — Артем Бердашкевич, руководитель отдела обеспечения безопасности в разработке, Positive Technologies - «Мультистейдж-сборка проекта на Docker Buildx: миф или реальность?». Спикер — Верис Евгений, программист отдела разработки Группы управляющих приложений, ИнфоТеКС   Приходите офлайн в офис Selectel в Санкт-Петербурге или подключайтесь онлайн.   Мероприятие бесплатное. Посмотреть программу митапа и зарегистрироваться: https://slc.tl/7llg5 Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwMnDzX

Привет, давай напишем очередной велосипед на Bash. А напишем мы своё подобие команды cat, но с потоками. Конечно можно воспользоваться дополнительной утилитой parallel, но мы лёгких путей не ищем. Глаза боятся, да руки веселятся. Вот что у меня получилось:
#!/bin/bash

file=$1

threads=4

process_line() {
    line="$1"
    echo $line
}

export -f process_line

fifo="/tmp/fifo"
mkfifo "$fifo"
exec 3<>"$fifo"
rm "$fifo"

for ((i = 0; i < threads; i++)); do
    echo >&3
done

while IFS= read -r line; do
    read -u 3
    {
        process_line "$line"
        echo >&3
    } &
done < "$file"

wait
exec 3>&-
Не забываем chmod +x pcat Запускать так: ./pcat.sh input.txt ➡️ Теперь разбираемся: threads указываем количество потоков для чтения текстового файла. process_line = функция, которая будет обрабатывать строку, у меня это простое echo, но можно накручивать любую логику. export -f = экспортируем функцию, чтобы функция была доступна в subprocess (этот момент ранее в постах мы с тобой уже разбирали, ссылку не дам, по поиску найдешь если интересно). fifo = задействуем FIFO для контроля потоков (чуть ниже объясню что это такое за хуйня). mkfifo = создаём именованный канал /tmp/fifo для контроля количества одновременно запущенных потоков. for ((i = 0; = заполняем каналы «семафора» чтобы ограничить потоки. while IFS = читаем файл построчно и обрабатываем строки. read -u 3 = ждем свободный слот «семафора», каждый поток блокируется до тех пор, пока не освободится место в «семафоре». wait exec 3>&- = ждем завершение всех потоков Что такое FIFO?
FIFO = «первым пришёл — первым ушёл».
Представляем ебейшую очередь в магазине: 1. Бабки встают в очередь 2. Первым обслуживают ту бабку, что пришла первой 3. Никто не может сказать — мне только спросить и пройти первым Ну или на примере стопки книг: Если ты складываешь книги в стопку и потом начинаешь снимать их, то ты будешь использовать LIFO (Last In, First Out). Но если ты встал в очередь к кассе — это FIFO. Думаю ты ты понял, тут все просто. Единственное отличие от cat, у нас получилось, что строчки выводятся в порядке завершения потока. Какой поток быстрее завершился тот и папа.
строка4
строка1
строка2
строка3
строка5
строка6
С другой стороны эту поделку можно применить для каких-то задач, где порядок строк в файле неважен, ну или еще для чего-то. Ну и домашка тебе: сделай так, чтобы строчки выводились по порядку (также, как и в файле), но использовалась многопоточность. Пользуйтесь, чо! tags: #bash #linux — 🔔 @bashdays➡️ @gitgate

В сложных распределённых IT-системах разные компоненты постоянно обмениваются сообщениями. Брокеры сообщений нужны, чтобы кон
В сложных распределённых IT-системах разные компоненты постоянно обмениваются сообщениями. Брокеры сообщений нужны, чтобы контролировать этот обмен, — и Apache Kafka один из них. Apache Kafka — это распределённая система, предназначенная для обработки потоков данных в режиме реального времени. Её можно сравнить с почтой — одни сервисы передают туда сообщения-письма, а другие — получают. На курсе «Apache Kafka для разработки и архитектуры» от Яндекс Практикума за 3 месяца вы освоите навыки, которые помогут работать с более сложными продуктами и сможете повысить свой уровень, как специалист. Наш курс не про базу работы с Apache Kafka, а про комплексное погружение в инструмент. Cамое главное никаких давно снятых видео и длинных лекций. Теория и практика проходят в интерактивном учебнике в удобном темпе без жёстких дедлайнов! А воркшопы с опытными разработчиками, рассказывающих о лучших практиках и разбирающих сложные кейсы, можно смотреть в записи, если вы не успеваете их посетить. Начните учиться уже сейчас! Пройдите бесплатный тест и поймите, подходит ли вам курс.

В рот мне логи! suqo Здрасти короче. Все знают команду cat, но не все знают про tac. Так, так, так… Чо это? Этот тот же cat только из Австралии наоборот. Оно выводит содержимое файла или стандартного ввода — в обратном порядке по строкам.
Команда tac входит в состав пакета GNU coreutils, и, как правило, она предустановлена на большинстве Linux-дистрибутивов.
Ща покажу. Есть у нас злой файл:
ножка на ножку и залупа в ладошку
eбутся утки вторые сутки
хуй сосали на вокзале
Запускаем:
tac file.txt

хуй сосали на вокзале
eбутся утки вторые сутки
ножка на ножку и залупа в ладошку
Поняли? Ну либо так:
echo -e "строка 1\nстрока 2\nстрока 3" | tac

строка 3
строка 2
строка 1
А можно прям разделитель указать:
echo "слово1:слово2" | tac -s ":"

слово2
слово1
Где применить? Да где хочешь, можешь логи смотреть, можешь в bash скрипты пихать, можешь из csv бигдату собирать и т.п. Такие дела, изучай! tags: #utilites #linux — 🔔 @bashdays➡️ @gitgate

Не упустите шанс посетить бесплатный вебинар по настройке кластера Elasticsearch 8 от OTUS! 🌟 Спикер Андрей Буранов, опытный
Не упустите шанс посетить бесплатный вебинар по настройке кластера Elasticsearch 8 от OTUS! 🌟 Спикер Андрей Буранов, опытный системный администратор, расскажет о том, как настроить кластер из 3-х нод, определить статус кластера и индексов, а также многое другое. На вебинаре вы узнаете: - 📊 Что такое шарды и реплики - ⚙️ Как настроить кластер Elasticsearch 8 - 🔍 Как определить статус кластера и индексов - 🗺 Как выяснить местоположение шарда и количество его реплик - ➕ Как добавить новую ноду в существующий кластер Присоединяйтесь к нам 26 ноября в 20:00 и получите 10% скидку на курс "Administrator Linux. Professional" при регистрации! 🎉 📚 Программа курса: - Архитектура Linux - Управление, безопасность и мониторинг - Linux и сеть - Сервисы Linux - Проектная работа Вебинар будет полезен системным администраторам и девопсам. Не упустите возможность повысить свою квалификацию! 🚀 👉 Зарегистрироваться на вебинар: https://vk.cc/cFcQaB Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Прочитал статью про сигналы Медведя и захотелось немного разобраться в теме. Немного переписал проги, чтобы можно было от клиента к серверу передавать любые сообщения в виде текста. Алгоритм простой. Используем 10 сигналов (SIGRTMIN+0 - SIGRTMIN+7 для передачи битов, SIGRTMIN+8 - признак окончания символа, SIGRTMIN+9 признак окончания сообщения). Передаются только "единичные биты". SEND_CHAR - "разбирает символ по битам и передает" SEND_MESSAGE - разбирает сообщение по символам и отдает SEND_CHAR. Сохраняем скрипты, chmod +x serv.sh cli.sh В одном терминале ./serv.sh (он выдаст что-то вроде Listener process 340527). В другом терминале ./cli.sh 340527 (нужно подставить ваш номер процесса). При старте клиент сразу передает серверу сообщение "BashBays" А потом можете передать привет медведю. Пустое сообщение завершает клиента. Сервер останавливается через CTRL-C.
#/bin/bash

#serv.sh

declare -i ASC=0
declare MSG=
declare DELAY=0.01
handle_signal() {
  case "$1" in
    W) MSG=${MSG}$(printf "\x$(printf %x $ASC)") 
       ASC=0 ;;
    M) echo $MSG;MSG=;;
    *) ((ASC+=$1));;
  esac
}
#RTMIN=34
trap 'handle_signal 1' RTMIN+0
trap 'handle_signal 2' RTMIN+1
trap 'handle_signal 4' RTMIN+2
trap 'handle_signal 8' RTMIN+3
trap 'handle_signal 16' RTMIN+4
trap 'handle_signal 32' RTMIN+5
trap 'handle_signal 64' RTMIN+6
trap 'handle_signal 128' RTMIN+7
trap 'handle_signal W' RTMIN+8
trap 'handle_signal M' RTMIN+9
echo Listener process $$
while :;do
  sleep $DELAY
done
#!/bin/bash

#cli.sh

if [[ -z $1 ]];then
  echo Need server PID
  exit
fi
declare -ir SERV_PID=$1
declare MESSAGE=BashBays
declare -ir RTM=34

function DELAY(){ sleep 0.02;}

function SEND_CHAR(){
  local -i i ASC
  CUR_CHAR=${1:-" "}
  printf -v ASC "%d" "'$CUR_CHAR"
  for i in {0..7};do
    if [[  $(($ASC%2)) -eq 1 ]];then
#     echo kill '-'$(($i+$RTM)) $SERV_PID
      kill '-'$(($i+$RTM)) $SERV_PID
      DELAY
    fi
    ((ASC/=2))
  done
# echo kill '-'$((8+$RTM)) $SERV_PID
  kill '-'$((8+$RTM)) $SERV_PID
  DELAY
}
function SEND_MESSAGE(){
  local CUR_CHAR
  local MESSAGE=${1:-BashDays}
  local i
  echo  Send message \"$MESSAGE\" to  Server PID=$SERV_PID
  for ((i = 0 ; i < ${#MESSAGE} ; i++));do
    SEND_CHAR ${MESSAGE:$i:1}
  done
# echo kill '-'$((9+$RTM)) $SERV_PID
  kill '-'$((9+$RTM)) $SERV_PID
  DELAY
}

while [[ $MESSAGE ]];do
  SEND_MESSAGE "$MESSAGE"
  read  -p "Input new message:" MESSAGE
done
Для чего может пригодиться эта фигня я не знаю, Но при написании программы выяснил некоторые вещи: 1. Обработка сигналов (по крайней мере SIGRTMIN не прерывает выполнение команд bash). Т.е если выполняется sleep 10m. То обработки можно ждать долго. 2. Обратите внимания на задержки в программах. На сервере ввел задержку, чтобы не сильно грузить процессор, на клиенте задержка больше, чем на сервере, иначе сигналы могут теряться. Кому интересно - можете поиграться. tags: #linux © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate

🍋 Кому то лимонов ящик, а кому то от хуя хрящик В выходные нужно отдыхать ребят, выходные заебись!

🔴 Разработка в 1С может быть удобной. А может быть идеальной. Хотите перейти с Конфигуратора на современный инструмент разра
🔴 Разработка в 1С может быть удобной. А может быть идеальной. Хотите перейти с Конфигуратора на современный инструмент разработки? Познакомьтесь с 1С:EDT! Эта система выводит удобство и качество работы на принципиально новый уровень. На открытом уроке мы разберём: - Чем EDT отличается от привычного Конфигуратора. - Какие преимущества этот инструмент даёт разработчикам. - Как начать использовать все его возможности уже сейчас. Спикер Юрий Пасхин — программист-разработчик в компании ЕАЕ-Консалт, опытный руководитель команд, архитектор и наставник. Присоединяйтесь 25 ноября в 20:00 мск. 👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/bHBU/ 🟢 Все участники открытого урока получат скидку 15% на курс "Профессиональная разработка в 1С:EDT + Git" до конца ноября Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

А давай я научу тебя девопсу. За 5 дней. Результат до/после гарантирую. Почитал умные книжки, посмотрел ютубчик и научился ку
А давай я научу тебя девопсу. За 5 дней. Результат до/после гарантирую. Почитал умные книжки, посмотрел ютубчик и научился кубы ворочать? Ага-ага. Только тебя палкой не били, а я буду. 🙃 Короче кто не успел запрыгнуть в августе в последний вагон Linux Factory, сейчас самое время, по летнему движу 5000р 2500р Внутри почти 2 сезона: 1. Ansible 2. Gitlab CI/CD YML + Docker + Hashi Vault 3. Traefik 4. Prometheus + Consul + VM + Grafana 5. Terraform (Selectel/Yandex) 6. и многое другое… будут кубы, охуенные циркули и база без воды После интенсива ты охуеешь от бест-практик и научишься делать ха-ра-шо. Киллер фича — ты со мной на связи, решаем вопросы 1x1. Более подробно про интенсив можешь почитать тут и тут. ➡️ Залетай и жми кнопочки: @tormozilla_bot В номере заказа ничего писать не нужно. По всем вопросам можешь писать сюда: @linuxfactorybot

Пост ищем в этом канале, а не в гугле. В комментах пишем время и ссылку на сам пост. Макс к вам придет и отдаст монету. Погна
Пост ищем в этом канале, а не в гугле. В комментах пишем время и ссылку на сам пост. Макс к вам придет и отдаст монету. Погнали чо! #pizza кому интересно: предыдущие пиццы (1, 2, 3)

⚡️Всероссийский Хакатон ФИЦ 2024 🚀Попробуйте себя в одном из предложенных кейсов: 1. Семантический делитель текстов: Разрабо
⚡️Всероссийский Хакатон ФИЦ 2024 🚀Попробуйте себя в одном из предложенных кейсов: 1. Семантический делитель текстов: Разработать алгоритм, который сможет обеспечить точное разделение текста на блоки в рамках произвольно заданных ограничений размера блока. 2. Контекстный перевод названий научных работ: Разработать и реализовать переводчик, который будет переводить названия научных работ с русского на английский. 3. Прогнозирование бизнес драйверов: Разработать решение для задачи прогнозирования временных рядов бизнес-драйверов и произвести прогноз на следующий календарный месяц. 4. Система контроля и управления доступом: Разработка системы контроля и управления доступом в реальном времени. Система будет включать API для управления сотрудниками, точками доступа и интеграцию с системой видеонаблюдения. И другие 16 кейсов смотрите на сайте: https://фиц2024.рф/hackathon Хакатон пройдет в 2 этапа: Отборочный этап в Онлайн, Финал в Офлайн. 🏆Призовой фонд: 6 000 000 руб. 🔥Дедлайн регистрации: 26 ноября, 23:59 📅Даты отборочного этапа: 29 ноября - 2 декабря 🦾Даты финала: 3 - 4 декабря Зарегистрируйтесь для участия в хакатоне: https://фиц2024.рф/hackathon Реклама. ООО "Акселератор возможностей". ИНН: 9704005146, erid:2Vtzqx7uLUP

Вчерашний медведь прям в тренды залетел, издеваться над ним больше не будем, пусть ковыляет своей дорогой. Сегодня рассмотрим утилиту vlock. Устанавливается так: apt install vlock Vlock блокирует виртуальную консоль/ли и требует ввода пароля. Короче сидишь ты такой, на ascii картинки рукоблудишь в терминале, заходит мамка и ты такой — vlock бля! Консоль моментально превращается в сообщение — This TTY is now locked. Please press [ENTER] to unlock. Вот и всё! Это типа WIN+L или как там на маках CMD+CTRL+Q, но только для консоли. Локскрин! На случай если у тебя иксов нет, или ты в серверной живешь.
А чем отличается консоль от терминала я писал в этом посте и да, это не одно и тоже!
Чо там этот vlock умеет? Основное:
-c lock only this virtual console, allowing user to switch to other virtual consoles. -a lock all virtual consoles by preventing other users from switching virtual consoles. -n allocate a new virtual console before locking,implies --all. -s disable SysRq while consoles are locked to prevent killing vlock with SAK -t run screen saver plugins after the given amount of time.
🅰️🅰️ Из сочного тут -s отключает сочетания клавиш SysRq, лично не проверял, но будем верить что если на заборе написано — хуй, значит он там есть. 🅰️🅰️
Про Magic SysRq писал тут, обязательно почитай, тема довольно пиздата.
А еще прикол обнаружил в vlock, что если у тебя авторизация (аутентификация) по ключам, то пароль от юзера или рута ты никогда не вспомнишь. Аксиома! Ну и получается разблокировать сеанс уже никак не сможешь. Поэтому с этим поаккуратнее, сначала вспоминай пароли и лишь только потом запускай этот скринлокер. ХЗ кто этой байдой пользуется, но она существует и о ней порой говорят в англоязычном сегменте. Короче я показал, ты почитал. На этом и закончим. Мож где-то пригодится. Давай краба! tags: #utilites #linux — 🔔 @bashdays➡️ @gitgate

⚡Как получить миллион на перенос IT-инфраструктуры? Ищите ответ в официальном канале Selectel. Там регулярно публикуются ново
⚡Как получить миллион на перенос IT-инфраструктуры?   Ищите ответ в официальном канале Selectel. Там регулярно публикуются новости об акциях и полезные материалы об IT.

Не одевай 3.14зду в лапти, она и так смешная Такс, давай покончим с сигналами реального времени (СРВ) и выйдем на новый уровень написания Bash скриптов, мыж с тобой уже взрослые. Вчера мы выяснили СРВ имеют условный индекс 34-64 (в разных дистрибутивах может быть по-разному, проверяй) Где их применять? Давай глянем на примере. СИшкой задрачивать не буду, перепишем на Bash.
Задача: у меня есть серверный процесс, который должен получить уведомление от клиента с некоторыми данными (например, номер задачи). Вместо передачи данных через файлы или другие средства, нужно использовать сигналы реального времени.
Сначала будет нихуя не понятно, но под конец я тебе всё разжую. Не переживай, тут все просто. Поймешь суть, сможешь реализовать на любом языке программирования. Пишем сервер signal_listener.sh
#!/bin/bash

handle_signal() {
    echo "Получен сигнал $1"
    echo "Переданные данные: $2"
}

trap 'handle_signal SIGRTMIN+0 "Task 1 выполнена"' RTMIN+0
trap 'handle_signal SIGRTMIN+1 "Task 2 выполнена"' RTMIN+1

echo "Слушатель запущен. PID: $$"
echo "Ожидаем сигналы..."

while true; do
    sleep 1
done
Пишем клиент signal_sender.sh

#!/bin/bash

if [ $# -ne 2 ]; then
    echo "Использование: $0 <PID> <TASK>"
    echo "TASK может быть 1 или 2"
    exit 1
fi

PID=$1
TASK=$2

if [ "$TASK" -eq 1 ]; then
    kill -RTMIN+0 $PID
    echo "Отправлен сигнал SIGRTMIN+0 (Task 1) процессу с PID $PID"
elif [ "$TASK" -eq 2 ]; then
    kill -RTMIN+1 $PID
    echo "Отправлен сигнал SIGRTMIN+1 (Task 2) процессу с PID $PID"
else
    echo "Ошибка: TASK должен быть 1 или 2"
    exit 1
fi
trap = перехватываем сигналы, для СРВ пишем: RTMIN+0 и RTMIN+1 kill -RTMIN+N = отправляет СРВ. Номер сигнала (например, RTMIN+0) задаёт, какой именно сигнал будет обработан.
chmod +x signal_listener.sh signal_sender.sh
Запускаем первый скрипт, видим его PID:
Слушатель запущен. PID: 20821
Во втором терминале запускаем второй скрипт:
./signal_sender.sh 20821 1

Отправлен сигнал SIGRTMIN+0 (Task 1) процессу с PID 20821
Не забываем подставить PID, который выдал первый скрипт. После отправки СРВ, в терминале где запускали первый скрипт видим:
Получен сигнал SIGRTMIN+0
Переданные данные: Task 1 выполнена
Вот это нихуя се! То есть signal_sender подключился к процессу 20821 и передал в него данные. В нашем случае данные это 1 или 2. А скрипт signal_listener успешно это схавал и переварил исходя из логики.
Использование СРВ открывает ОГРОМНЫЕ возможности, чтобы несколько скриптов или приложений взаимодействовали друг с другом на низких уровнях не использую велосипеды и прокладки.
А когда какой сигнал использовать? Хе… 34-64… Если у тебя не сложная логика, можешь использовать любой индекс в этом диапазоне. Но если логика совсем ебанутая, то логичнее использовать СРВ с разными индексами для передачи данных. Например, тебе нужно обрабатывать разные типа событий. В этом случае проще разделить их на разные сигналы. Типа такого:
SIGRTMIN+0 (34): "Начать обработку данных"
SIGRTMIN+1 (35): "Обновить конфигурацию"
SIGRTMIN+2 (36): "Выебать медведя в жопу"
SIGRTMIN+3 (37): "Остановить обработку данных"
Это избавляет от необходимости декодировать данные внутри обработчика, потому что обработка сразу зависит от типа сигнала. А можно обрабатывать в порядке приоритета. СРВ обрабатываются в порядке их номеров (от SIGRTMIN к SIGRTMAX). Это заебись если у тебя задачи с разным приоритетом.
SIGRTMIN+0: Высший приоритет (аварийная задача)
SIGRTMIN+1: Средний приоритет (регулярные уведомления)
SIGRTMIN+2: Низший приоритет (обновление статистики)
Если сигналы поступают одновременно, сначала обработается SIGRTMIN+0, потом SIGRTMIN+1 и т.д. Важно! Использование одного СРВ может привести к переполнению и перезаписи очереди. Имей это ввиду. Потому, что с этим часто ловят багу и потом неделю не могут понять в чем причина. Иногда пишут что СРВ не теряются, но практика показывает обратное. Если что-то еще вспомню, накидаю отдельным постом. Удачи тебе и береги себя!
про сигналы писал ранее тут и тут и тут и тут
tags: #linux — 🔔 @bashdays➡️ @gitgate

Умножаем любовь к математике, чтобы разделить ее с вами ИТ-специалисты, слышали, скоро День математика? 1 декабря пройдут гла
Умножаем любовь к математике, чтобы разделить ее с вами ИТ-специалисты, слышали, скоро День математика? 1 декабря пройдут главные онлайн-события мероприятия: доклады от профессоров математики из МФТИ, ВШЭ и ЦУ и математический диктант. Хорошая возможность пообщаться с единомышленниками и просто классно провести время. А пока ждете праздника, банк подготовил активности на весь месяц. Будут лекции и многое другое. Выбирайте на сайте, что нравится больше. И регистрируйтесь, чтобы ничего не пропустить

Если взглянуть на картинку выше, то в этом списке ты не найдешь сигналов с номером 32 и 33. Список сформирован командой kill
Если взглянуть на картинку выше, то в этом списке ты не найдешь сигналов с номером 32 и 33. Список сформирован командой kill -l. И куда же блядь эти сигналы делись? А всё просто, сигналы с номерами 32 и 33 в современных линукс дистрибутивах зарезервированы для использования библиотекой glibc. И используются для реализации механизма потоков (threads). Исходник glibc где он резервирует эти сигналы. Можешь увидеть что они будут не обязательно 32 и 33.
22 static int current_rtmin = __SIGRTMIN + 2;
23 static int current_rtmax = __SIGRTMAX;
Один из сигналов может быть использован для внутренних коммуникаций между потоками. Второй может служить для управления потоками на уровне ядра. Сигналы же начинающиеся с номера 34 называются — сигналами реального времени. Более подробно про сигналы реального времени можешь почитать тут. Если попытаться отправить сигнал 32 или 33 вручную процессу, то получишь хуй с маслом. Ядро эти сигналы обрабатывать не будет. Потому что даже ядро не имеет к этим сигналам никакого отношения. А вмешиваться в потоки glibc тебе никто не даст, чтобы ты письку себе случайно не оторвал.
kill -32 10929

Unknown signal 32
Чтобы убедиться что сигнал 32 и 33 не являются сигналами реального времени, можно написать такой тест:
#include <stdio.h>
#include <signal.h>

int main() {
    printf("SIGRTMIN: %d\n", SIGRTMIN);
    printf("SIGRTMAX: %d\n", SIGRTMAX);
    return 0;
}
Скомпилировать и запустить:
gcc -o signals signals.c
./signals
В ответ ты получишь что-то подобное:
SIGRTMIN: 34
SIGRTMAX: 64
Test Passed! Сигналы реального времени начинаются с 34. Но опять же не факт, что в твоём дистрибутиве будет так же. Мож ты всё еще на Slackware сидишь. А нахуя нужны сигналы реального времени? Давай лучше завтра, сегодня мы разбирались куда делись сигналы 32 и 33. Не хочу раздувать этот пост и пугать тебя раньше времени СИськастым кодом. Увидимся!
про сигналы писал ранее тут и тут и тут
tags: #linux — 🔔 @bashdays➡️ @gitgate

Приглашаем разработчиков и всех, кто интересуется облачными технологиями, на митап по Go от MWS. Расскажем, как мы строим обл
Приглашаем разработчиков и всех, кто интересуется облачными технологиями, на митап по Go от MWS. Расскажем, как мы строим облачную платформу с нуля и какие технологии используем. Когда: 22 ноября, 18:00 Где: кинотеатр «Победа», ул. Ленина, 7, г. Новосибирск В программе: — Биллинг в облаке: опыт MWS и решение проблем миграции в продакшене — Тестирование Managed Kubernetes: от основ до продвинутых практик с Ginkgo — EBPF & Go: как писать код для ядра безопасно Встречаемся в кинотеатре. После докладов вас ждут общение в неформальной обстановке, напитки и еда. Регистрируйтесь по ссылке.

Всем привет. Опять в чате заговорили про СХД и кое-то вспомнилось. Когда-то я занимался вопросом выбора дисков для серверов и мне стало интересно, почему диски для корпоративных систем стоят так дорого? Начал читать статьи и сравнивать характеристики. Нашел старую статью, где говорилось, что один инфогигант в рейдах использует диски wd-blue, мол так дешевле получается. Да, дешевле. Но при этом нужно отдавать себе отчет, что ты делаешь, как и к чему это может привести. Для начала сравним ОДИН параметр нескольких ssd и hdd дисков: Конкретно Неисправимых ошибок чтения/прочитанных бит.
sata hdd wd-blue 1Tb (WD10EZEX)=1 ошибка на 1E14 бит sata hdd wd-gold 1 Tb(WD1005FBYZ)=1 ошибка на 1E15 бит sas hdd Toshiba 900 Гб (AL15SEB090N) 10 ошибок на 1E17 бит sata ssd Micron 960 Гб (MTFDDAK960TDS-1AW1ZABYY)1 ошибка на 1E17бит
Данные брал с сайта одной компьютерной компании с синим логотипом, отличающейся классной технической грамотностью. Короче, вероятность считать битый шифрованный архив с WD-GOLD в 10 раз меньше, чем с WD-BLUE и в 100 раз c Toshiba, и в 1000 раз меньше с ssd Micron. Хочу так же обратить внимание на Проникновение долбанных маркетологов Toshiba в тех. описание. 10 ошибок на 1E17 бит РАВНО 1 ошибок на 1E16 бит. А еще, приличные производители sas-дисков честно говорят о зафиксированных ошибках. Информацию можно глянуть командой из пакета smartmontools
sudo smartctl -a /dev/sdXX

#смотреть после Error
Конечно, для хранения можно использовать и wd-blue, но только с применением специальных файловых систем с контрольными суммами, или применением форматов хранения файлов с избыточностью (типа платный rar). Кстати, не все рейды справятся с такой ошибкой. Большинство рейдов (0,1,5,10) защищают от поломки диска, но не от неправильного чтения. 6 - вроде бы считает контрольные суммы для каждой записи и корректирует, если что (поправьте если не прав). Ну, и рейдовые zfs решают проблемы, поскольку содержат контрольные суммы файлов. В комментах было бы интересно почитать, кто какие диски использует и какие меры применяет, чтобы считывать именно ту информацию, которую записываешь. tags: #hardware © by Tagd Tagd — 🔔 @bashdays➡️ @gitgate