Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
Mostrar más📈 Análisis del canal de Telegram Bash Days | Linux | DevOps
El canal Bash Days | Linux | DevOps (@bashdays) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 23 741 suscriptores, ocupando la posición 5 571 en la categoría Tecnologías y Aplicaciones y el puesto 27 919 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 23 741 suscriptores.
Según los últimos datos del 30 julio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de 7, y en las últimas 24 horas de 0, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 22.02%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 12.73% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 5 228 visualizaciones. En el primer día suele acumular 3 023 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 22.
- Intereses temáticos: El contenido se centra en temas clave como bashdays, linux, bash, docker, скрипт.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 31 julio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
Решено было накидать Bash скрипт, который каждый месяц будет заказывать на WB радость для моей жопы.Открытой API у WB нет, но реверс-инженерию никто не отменял. Открываем в браузере режим разработчика, натыкиваем нужные действия на сайте и потом смотрим вкладку Network. Выбираем нужные запросы и рожаем скрипт. Концепт скрипта: 1. Авторизация. С ней я не стал заморачиваться, авторизовался на сайте, выгрузил кукисы в файл. Полюбому можно и это автоматизировать через
curl, но чёт пока лень.
2. Скрипт принимает единственный параметр $1, это ссылка на товар WB, мало ли бумага моя закончится и придется другого поставщика искать.
3. Дальше curl подгружает кукисы из файла, и делает несколько запросов к сайту, добавляет бумагу в корзину и оформляет заказ.
Пример добавления в корзину:
RESPONSE=$(curl -s "https://cart-storage-api.wildberries.ru/api/basket/sync?ts=$TS&device_id=$DEVICE_ID" \
-X POST \
-H 'content-type: application/json' \
-H 'origin: https://www.wildberries.ru' \
-b "$COOKIES_FILE" \
--data-raw "$JSON_PAYLOAD"
)
Все параметры прилетают из $JSON_PAYLOAD, параметр автоматически заполняются нужными данными на основе переданного урла в $1, да, активно используется jq.
Говнокод конечно лютый получился, но работает. А это главное в нашем деле!
4. Ну и всё, в телегу мне приходит уведомление, что заказ оформлен, бабло спишут по факту. Ну и пишут примерное число доставки.
5. Как только товар пришел в пункт выдачи, получаю уведомление в телегу. Аналогично curl запросом проверяется статус в личном кабинете.
6. Закидываем скрипт в крон и забываем про эту рутину.
59 23 25 * * /usr/local/sbin/shit_paper.sh https://wb.ru/296/detail.aspx
Вот и вся наука. Теперь когда я возвращаюсь из гаража, захожу по пути в пункт выдачи и забираю свои 32 рулона. Удобно? Да охуенно!
Думал мож еще курьера прикрутить, но сроки доставки могут увеличиться, да и этот бедолага начнет мне звонить, согласовывать все, тут бы AI прикрутить, да ну его. И так большое дело сделано, жопка рада.Еще бы научить чтобы чайник сам в себя воду наливал, было бы вообще ништяк. Давай, увидимся! Хороших тебе предстоящих выходных и береги себя! 🛠 #bash #devops — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576platform=$(uname -m)
docker run --platform linux/arm64
Я бы хотел, чтобы параметр --platform linux/arm64 подставлял в том случае, если архитектура платформы == arm64, в других случаях этот параметр подставлять не нужно.
Делаю так, но получается какая-то хуйня:
platform=$(uname -m)
docker run ${platform/arm64/--platform linux/arm64}
Короче смотри. Задачку можно решить несколькими способами.
Способ 1. Заточен под Bash:
platform=$(uname -m)
docker run $([[ $platform = arm64 ]] && echo "--platform linux/arm64")
Этот способ не сработает, если код запустится в /bin/sh, потому что оно не POSIX. Тут уже смотри под чем все это будет запускаться.
Тут можешь почитать чем отличаются [[ ]] от [] А тут что такое POSIXСпособ 2. Универсальный:
platform=$(uname -m)
docker run $( [ "$platform" = "arm64" ] && echo "--platform linux/arm64" )
На 100 % POSIX-совместим. По функционалу эти способы идентичны.
Ну и по итогу имеем:
[[ ... ]] — это расширенная bash-версия, безопаснее и гибче (поддержка pattern, безопасность кавычек при пробелах и пустых строках, поддежка логики с &&)
[ ... ] — POSIX-совместимая, более строгая и требующая аккуратности с кавычками.
Ну и твои варианты приветствуются, поделись в комментах, глядишь что-то маст-хевное у тебя в загашнике есть.
🛠 #bash #pipeline
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogТакие мероприятия я провожу редко, но хороших кадров грех не порекомендовать.Резюмирую Мужчина в полном рассвете сил (26 лет), хочет на удаленку. Есть большое желание развиваться дальше, делать вещи и пилить охуительные инфраструктурные циркули. Не пиздит и не завышает опыт, а это уже ценно! Шарит за: - докеры, пайплайны, ансиблы, кубы, графики и т.п. - спец по информационной безопасности (PT SEIM), - автоматизация на bash, python Короче базовый набор маст-хев практик из коробки. Нанимаешь и он работает, без лишних вопросов и хуйни. А твои сервера начинают тарахтеть быстрее и стабильнее. Подробное резюме запрашивай в личке: @avs_jr_07 Чтобы все подряд ему не писали, ЗП хочет от 180к, за такой опыт, вполне справедливо! 🛠 #кандидаты #кадры — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
isolcpus, nohz_full, rcu_nocbs и irqaffinity.
В рамках решаемого кейса сразу указал на них, что сократило поиск необходимых решений.
По сути, все 4 параметра решают одну задачу - ограничить использование указанных ядер (например 0-3) процессами, за исключением базовых - init, scsi и прочих.
Таким образом мы можем через тот же taskset указать вручную на ядра 0-3 те процессы, что нам нужны.
В данной картине мы защищаем этот сегмент от службы irqbalance, которая с завидным упорством будет ребалансировать процессы между ядрами.
Но будьте внимательны при изоляции, так как в случае количества процессоров > 1 нужно чуть иначе выставлять диапазоны, чтобы не угодить в яму NUMA. Там деление ядер от 0 до последнего происходит сегментами по очереди.
Конкретно мой случай изоляции был применен в рамках разделения нагрузки на сетевые прерывания и nginx, но в совокупности факторов - параметры ядра, отключенный + маскированный irqbalance, taskset и еще несколько твиков - давало профит только при утилизации сетевой карты лишь до 70%, дальше спецэффекты постепенно возвращались.
🛠 #cpu #core #taskset #nice #perfomance
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogПо просьбе коллеги @dox89.🔤🔤🔤🔤🔤🔤🔤 Предыдущие статьи по настройке производительности Здесь и Здесь: В современных системах число ядер только растет. И запущенный процесс гуляет по ядрам, как разочаровавшаяся в любви девушка. ㅤ Таким образом планировщик системы пытается балансировать нагрузку, ресурсы (и тепловыделение). Но это поведение можно изменить. С помощью программы можно taskset можно запускать процессы на указанных ядрах. Например:
taskset --cpu-list 0-2,6 thunderbird
Запустит thunderbird, и разрешит почтовому клиенту работать только на указанных ядрах.
Фактически taskset не разрешает работать на указанных ядрах, а запрещает работать на всех остальных, потому что по умолчанию любому процессу можно работать на всех ядрах.
Если использовать ключик -p PID, то аналогичную процедуру можно выполнить с уже запущенным процессом.
Современные процессоры имеют гибридную архитектуру. Т.е. они содержат и энергоэффективные и производительные ядра.
Так вот, с помощью этой команды можно немного оптимизировать производительность - ограничивая второстепенным приложениям доступ к высокопроизводительным ядрам.
Ну, или для всей «шушеры» выделить пару ядер, освободив остальные для самых важных процессов.
Но если Вам лень этим заниматься - знайте, что планировщик и так неплохо справляется. Единственное, чего он не знает - какие процессы для Вас более важные. Но ему всегда об этом можно напомнить, с помощью команды nice.
Ну, и напоследок - вредный совет.
Однажды у моего коллеги на работе эффективные менеджеры ввели KPI.
Деньги начали платить по проделанной, а не стабильной работе. После этого у всех, включая бухгалтерию в конце квартала все начинало тормозить Но не сразу, а как-то плавно, но заметно.
И приходилось проводить сложную многочасовую оптимизацию систем (оптимизация дисков, переиндексирование, очистка кэшей...). После которой все до конца следующего отчетного периода работало нормально.
А потом - о5-25.
Но как они этого добивались - я не знаю :-)
man taskset
man nice
🛠 #cpu #core #taskset #nice #perfomance
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog/sys/devices/system/cpu/cpu0/cpufreq/
scaling_min_freq
scaling_cur_freq
scaling_max_freq
Но и пределы частоты тоже можно менять.
Правда на некоторых процессорах их нельзя менять произвольно, их список может быть жестко задан. Обычно список допустимых частот описан в файле
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
(это для нулевого ядра)
У меня на ноуте, например, 1350000 1200000 1000000
Посмотреть частоты можно здесь:
cpuinfo_min_freq - минимальная частота ядра
cpuinfo_cur_freq - текущая
cpuinfo_max_freq - максимальная
👆 Надеюсь, всем понятно, что разогнать проц данным способом не получится.
Таким образом, командой типа:
cp cpuinfo_max_freq scaling_min_freq
Любой governor превращается в performance. Пути к файлам я опустил, и на всякий случай напомню, что частоты задаются для каждого ядра отдельно.
Кстати, повышать частоты требуется не всегда.
Приведу пример:
У меня работает роутер на мини-PC. Если использовать его только как роутер - нагрузка максимум 5%.
Я поставил туда торрент-качалку. А она может загрузить проц, даже если использовать nice. Но я задал минимальную частоту в качестве максимальной:
cp cpuinfo_min_freq scaling_max_freq
Теперь мини-PC холодный, даже если прикидывается сервером и работает на 100% (В полку).
Код для установки максимальной производительности получается несколько проще, чем с governor:
#!/bin/bash
declare -a KEEP_MINFREQ
declare DIR_PREFIX=/sys/devices/system/cpu
declare -i NPROC=$(nproc) # число ядер (процессоров)
# Keep current setting
I=NPROC
while ((I--));do
KEEP_MINFREQ[$I]=$(cat "$DIR_PREFIX/cpu${I}/cpufreq/scaling_min_freq")
done
# Set
I=NPROC
while ((I--));do
# Поднимаем минимальную частоту до максимума
cp "$DIR_PREFIX/cpu${I}/cpufreq/cpuinfo_max_freq" "$DIR_PREFIX/cpu${I}/cpufreq/scaling_min_freq"
done
#Здесь ВАШ код
sleep 10
##############
# Restore settings
I=NPROC
while ((I--));do
echo "${KEEP_MINFREQ[$I]}">"$DIR_PREFIX/cpu${I}/cpufreq/scaling_min_freq"
done
Всем стабильных серваков!
🛠 #cpu #performance #frequency #governor
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blogperformance — максимальная производительность (Ну, почти максимальная)
powersave — максимальное энергосбережение
ondemand — быстрое изменение частоты от нагрузки
conservative — медленное изменение частоты от нагрузки
schedutil — интеграция с планировщиком ядра Linux
К сожалению не все губеры доступны для вашей системы. Список доступных можно посмотреть так:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Вот, у меня на ноуте доступны только два: performance schedutil
Используемый в настоящее время:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Обратите внимание, governor задается для каждого ядра отдельно.
Ну, и для чего это нужно. Иногда бывают процелюбивые задачи. (кодирование видео и аудио, конверсия фоток, многопоточная компрессия, шифрование...)
И пофигу на электроэнергию и тепловыделение, лишь бы быстрее закончилась. Тогда можно на время выполнения задачи изменить governor.
Делается это простым скриптом:
#!/bin/bash
declare -a KEEP_GOVERNOR
declare DIR_PREFIX=/sys/devices/system/cpu
declare SET_GOVERNOR='performance'
declare -i NPROC=$(nproc) # число ядер (процессоров)
declare -i PRESENT=0
#Проверка поддержки governor системой
for G in $(cat "$DIR_PREFIX/cpu0/cpufreq/scaling_available_governors");do
if [[ "$SET_GOVERNOR" == "$G" ]];then
PRESENT=1
break
fi
done
if !((PRESENT));then
echo GOVERNOR $SET_GOVERNOR not supported.
printf "Available governors : "
cat "$DIR_PREFIX/cpu0/cpufreq/scaling_available_governors"
exit 1
fi
# Keep current setting
I=NPROC
while ((I--));do
KEEP_GOVERNOR[$I]=$(cat "$DIR_PREFIX/cpu${I}/cpufreq/scaling_governor")
done
# Set (Для установки требуются привилегии)
I=NPROC
while ((I--));do
echo "$SET_GOVERNOR">"$DIR_PREFIX/cpu${I}/cpufreq/scaling_governor"
done
#Здесь ВАШ код
sleep 10
##############
# Restore settings
I=NPROC
while ((I--));do
echo "${KEEP_GOVERNOR[$I]}">"$DIR_PREFIX/cpu${I}/cpufreq/scaling_governor"
done
Если все делать в ручном режиме. Поменять governor для всех ядер можно командой:
sudo echo performance| sudo tee /sys/devices/system/cpu/cpu${0..1}/cpufreq/scaling_governor
здесь performance - задаваемый governor
{0..1} - описание числа процессоров (ядер). Для шестнадцати {0..15}.
Такая установка проживет до перезагрузки. Если требуется постоянные настройки - можно поставить в cron @reboot, прописать в grub или воспользоваться специальными утилитами.
Продолжение следует.
🛠 #cpu #performance #frequency #governor
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Bloghttps://bashdays.ru/?p=4893
Невольно тянется рука поставить в конце символ ' и посмотреть что будет.
Башкой понимаю, что в современном мире такое сработает 1 раз на 100кк, но ничего поделать с собой не могу. Когда видишь потенциальную дырку — нужно попробовать вставить.
А какая у тебя деформация? Поделись своим скелетом в комментах 😲
Кстати LF подорожал, кто не успел или кого выперло, заходите, раздам 10 промокодов по 1000 рубасов.🛠 #трудовыебудни — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Хотя их можно и не выращивать, позови 10 человек на собес и 9 из них будут гандонами. Неплохо? Ага!Блядь, всё отвлекаюсь. Короче выращиваешь ты гандоны и сэкономил 1000 баксов. Охуенно? Охуенно! Но в итоге ты получаешь — саппорт этого огородика, решение технических проблем, отбивка тикетов от орущих сучек и т.п. Но зато сэкономил 1000 баксов компании. Видишь где наебалово? Знаю, видишь… Теперь у тебя часть команды поддерживает производство гандонов, тратит на это время, в какой-то момент задачи из спринта перестают запиливаться вовремя. Ага, нужно нанять еще людей, нанимают человека за 1000 баксов в месяц. Теперь всё в порядке. Отдельный человек решает все вопросы с производством гандонов, а задачи в спринте вновь запиливаются вовремя. Людей хватает. Сэкономили, молодцы. Только вот эта сэкономленная тыща баксов идет на ЗП новому сотруднику + компания платит за сотрудника налоги, пенсионные и т.п. сборы в казну. 1000 баксов превращается в 1500 баксов. Заебись сэкономили! Ну вот и я про тоже. А как сокращать расходы-то? Если ты мелкий стартап, то никак, поменьше пиздежа, побольше работы. Закупай готовые гандоны от производителя и не пытайся их производить сам. Смысла в этом нет. Сосредоточься на своём продукте. Но если у тебя 100500 компаний и они связаны между собой, то вполне разумно поднять свою гандонную фабрику, нанять человека за 1000 баксов, чтобы он следил за производством и поставлял продукцию в твои 100500 компаний. Чё еще сказать. Если что-то делаешь, подумай — а нахуя я это делаю? Сейчас да, разумно поднимать свои гандонные фабрики и свои сервисы, но это разумно лишь в текущих реалиях, когда загнивающие дрочепаки обложили нас санкциями. Всё, иду я
curl https://getcroc.schollz.com | bash
brew install croc
scoop install croc
choco install croc
winget install schollz.croc
Начнем! Я буду передавать файлы c Linux сервера на свою виндовую машину.
На Linux сервере запускаю:
cd /tmp && echo "Hello BashDays" >> bashdays.txt
croc send bashdays.txt
Получаем:
Sending 'bashdays.txt' (15 B)
Code is: 2811-spray-cabinet
On the other computer run:
(For Windows)
croc 2811-spray-cabinet
(For Linux/macOS)
CROC_SECRET="2811-spray-cabinet" croc
Так, идем на Windows машину и запускаем:
croc 2811-spray-cabinet
То есть берем «секретную строку» и передаем её получателю. Получатель запускает команду выше и видит:
C:\Users\user>croc 2811-spray-cabinet
Accept 'bashdays.txt' (15 B)? (Y/n) Y
Receiving (<-92.52.131.227:10350)
bashdays.txt 100% |████████████████████| (15/15 B, 73 B/s)
А на Linux машине:
Sending (->92.52.131.227:9015)
bashdays.txt 100% |████████████████████| (15/15 B, 41 kB/s)
Вуаля! Проверяем файл на винде, всё прекрасно передалось!
«Крокодил» не требует VPN, SSH, SCP, FTP, использует end-to-end шифрование (AES-256), работает между любыми ОС.
Фича — можно передать каталог, не архивируя его. Ну и как self-hosted воткнуть, чтобы уж совсем не параноить, как истеричка.
Да, есть прикол, что при получении ты вводишь «секретный код» и он отпечатается в истории команд, это хуйня. Поэтому просто запускаем croc и оно в интерактиве запросит код, вводишь код и дело в шляпе. В историю команд ничего не попало. А если автокоды тебе в хуй не уперлись, можешь через ключик -code впендюрить свой код доступа. Всё гибко, покури репку и описание, там прям можно на многое повлиять, вплоть до создания своего relay.Под капотом P2P протокол через relay-сервер — работает даже если устройства за NAT.
На Andoid кстати тоже порт есть в F-Droid.🛠 #utilites #tools #selfhosting — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
