Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps
تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 738 مشتركاً، محتلاً المرتبة 5 562 في فئة التكنولوجيات والتطبيقات والمرتبة 27 921 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 738 مشتركاً.
بحسب آخر البيانات بتاريخ 31 يوليو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار 5، وفي آخر 24 ساعة بمقدار -7، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 21.66%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 12.70% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 5 142 مشاهدة. وخلال اليوم الأول يجمع عادةً 3 015 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 23.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل bashdays, linux, bash, docker, скрипт.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 01 أغسطس, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
Место встречи — 08 октября, Москва, Цифровое деловое пространство.Регистрируйся тут → https://slc.tl/n8hbp
services:
write-freely:
image: nephatrine/write-freely:latest
container_name: write-freely
environment:
TZ: America/New_York
PUID: 1000
PGID: 1000
ports:
- "127.0.0.1:8085:8080/tcp"
volumes:
- ./write-freely:/mnt/config
Способ не официальный. Потому что если делать, как в официальной документации, то как обычно — нихуя не работает из коробки. Классика!
Следующая проблема — картинки по ctrl+c/ctrl+v в writefreely не вставляются. Их нужно предварительно закончать и потом через ссылку вставлять. Дела…
По FTP я ебал это делать, поэтому был поднят Picsur.
Отличнейшее решение для любителей self-hosting. Аналог Imgur, но свой!
Запускается так:
services:
picsur:
image: ghcr.io/caramelfur/picsur:latest
container_name: picsur
ports:
- '127.0.0.1:8080:8080'
environment:
PICSUR_DB_HOST: picsur_postgres
volumes:
- ./storage:/picsur/storage
restart: unless-stopped
picsur_postgres:
image: postgres:17-alpine
container_name: picsur_postgres
environment:
POSTGRES_DB: picsur
POSTGRES_PASSWORD: picsur
POSTGRES_USER: picsur
restart: unless-stopped
volumes:
- picsur-data:/var/lib/postgresql/data
volumes:
picsur-data:
Тем более эта хератень отлично дружит со скриншотилкой ShareX которую я совсем недавно начал использовать.
Рекомендую, там ебать комбайн под все задачи, хранилища и хотелки.
В настройках Picsur генеришь json и двойным кликом интегрируешь с ShareX, ничего руками прописывать не нужно.Как работает связка: Делаешь скриншот, оно автоматически заливается в Picsur и в буфере обмена у тебя уже готовая ссылка для вставки в markdown. Удобно просто пиздец! Такие дела. Вот и еще один полезный сервис в моей домашней лаборатории. Потыкай, глядишь найдешь применение в своих задачках.
Кстати нашел ShareX под Linux, если кому надо.🛠 #services #selfhosting #workflow — ✅ @bashdays ✅ @linuxfactory ✅ @blog
Исполнитель вправе изменять условия договора, в одностороннем порядке. Изменения вступают в силу с даты публикации на сайте. Если клиент не согласен, он может идти на хуй и сосать жопу.Первый звоночек. Я сталкивался с такой ситуацией в молодости и по глупости купил такой «вечный сервер» за 10к рублей. А через полгода с меня начали требовать абонентскую плату, а на мой ахуй мне было сказано — а вы оферту читали? Какие вопросы? Пошел, почитал, а там черным по белому — извините, теперь ваш «вечный сервер» требует ежемесячной оплаты, потому что мы охуели и хотим больше денег. Ладно, опыт получен. Прежде чем что-то бездумно покупать, вопрос нужно хотя бы немного заресерчить. И в 99% ты найдешь очень много подводных камней, о которых ты и не подозревал. Второй звоночек. Ладно, ты купил «вечный сервер» и потом хуяк! Скорость стала никакой. Идем в саппорт и требуем объяснений, в ответ получаем — ну дак в оферте же прописано. При превышении 3ТБ трафика в месяц, для «вечных серверов», скорость пропускной полосы будет снижена до dialup’а. Вы превысили допустимы трафик, поэтому идете — нахуй и сосите жопу! ВОТ ЭТО ПОВОРОТ! 😀😃😄😁😅😂🤣😊 😇🙂🙃😉😌😍🥰😘 😗😙😚😋😛😝😜🤪 🤨🧐🤓😎🤩🥳😏😒 😞😔😟😕🙁☹️😣😖 😫😩🥺😢😭😤😠😡 Третий звоночек. Компания просто перестает существовать, либо ее банят за махинации и черные схемы. Всякое бывает. В этом случае ты просто теряешь доступ к своему «вечному серверу». Истории такие были, по крайней мере знаю две и оба раза я лишался доступа к серверам, благо были бэкапы. Четвертый звоночек. Для саппорта ты не приоритетный клиент, ты лох ебаный, которого уже облапошили, хуль на тебя время тратить, сам ебись со своими проблемами и «вечным сервером». Выводы: Да, компаниям это выгодно, в моменте заработать миллионы денег. Но для клиента это полная залупа, особенно если в одностороннем порядке меняется оферта и все делается, чтобы клиент сам отказался от услуг. Деньги ведь с клиента уже получены, нахуй он нужен, еще и инфраструктурные ресурсы занимает. Вкорячим его в рамки и будем в уши ссать. Всех под одну гребенку не ровняю, возможно на рынке и есть добросовестные поставщики услуг, респект им и уважуха! Но в любом случае «третий звоночек» никто не отменяет. Фактически «вечность» держится только на репутации и доброй воле провайдера.
Предложение о «вечных серверах» живёт только в маркетинговых материалах, но юридической фиксации в оферте нет. Получается, что «вечность» основана исключительно на доверии к провайдеру. Если сервер нужен надолго, то «окупается» он через 12-36 месяцев. Ресурсы у сервера фиксированные, например 1Гб RAM сегодня ещё куда-нибудь сгодится, но через 3–5 лет такой сервер может быть слишком слабым. А апгрейд невозможен.Гарантий нет, это инвестиция в надежность чужого бизнеса. Так что если тебе кто-то предлагает «вечный сервер» — шли его нахуй! 🛠 #рабочиебудни #hosting #server — ✅ @bashdays ✅ @linuxfactory ✅ @blog
sync.backend=s3
sync.aws.region=ru-7
sync.aws.bucket=taskwarrior
sync.aws.access_key_id=aed38518013b4ab
sync.aws.secret_access_key=992570bad57
sync.aws.endpoint=s3.ru-7.storage.selcloud.ru
Проверяю task sync init, хуй там плавал, ошибка:
unhandled error: dispatch failure: io error: error trying to connect: dns error: failed to lookup address information: Name or service not known: dns error: failed to lookup address information: Name or service not known: failed to lookup address information: Name or service not knownМде… Всёж правильно, эндпоинт пингуется, курлится, телнетится. Описывать весь момент дебага не буду, но там конкретный такой - метод тыка был. Ну раз обычный «метод тыка» не помогает, расчехляем
strace!
strace -s 200 -f -e trace=network,connect,sendto,recvfrom task sync
Что делает команда:
-s 200 — печатать до 200 байт строковых аргументов (по умолчанию strace режет строки до 32 байт). Это важно, чтобы увидеть полный URL/hostname, который передаётся в syscalls.
-f — следить не только за основным процессом, но и за всеми дочерними (fork/clone)
-e trace=network, connect, sendto, recvfrom — ограничиваем вывод только сетевыми вызовами: socket, connect → создание сокетов и подключения (TCP/UDP). sendto / recvfrom → передача данных (обычно видно DNS-запросы, HTTP-заголовки и т.д.).
И в выхлопе находим строчку: taskwarrior.s3.ru-7.amazonaws.com.
😀😃😄😁😅😂🤣😊
😇🙂🙃😉😌😍🥰😘
😗😙😚😋😛😝😜🤪
🤨🧐🤓😎🤩🥳😏😒
😞😔😟😕🙁☹️😣😖
😫😩🥺😢😭😤😠😡
Ну ёб твою мать! А нахуй я тогда все эти приседания с конфигом устраивал, если эта падла хуй положила и по task diagnostic никаких ошибок не вывело.
То есть настройка sync.aws.endpoint=… вообще не учитывается — клиент жёстко строит URL по схеме AWS.
Ну хоть проблему нашли. Strace все же достаточно пиздатый инструмент.
Отсюда вывод: с кастомным S3 напрямую taskwarrior работать не сможет. Даже если устроить подмену хостов или сделать хак через CNAME.
А как синхронизировать-то задачи? Ооо брат, я уже написал про это отдельный пост, чуть позже закину.
Хороших тебе выходных!
🛠 #strace #debug #taskwarrior
—
✅ @bashdays ✅ @linuxfactory ✅ @blogsudo apt install ntfs-3g # для монтирования ntfs
Использовать будем штатные средства udev + systemd .
1. Подключаем диск, и запоминаем UUID.
lsblk -f
sdc
└─sdc1
ntfs FLASH
1234567890ABCDEF
здесь FLASH - метка диска ё1234567890ABCDEFё - UUID
ㅤ
создадим каталог для монтирования:
mkdir -p /media/usb_ntfs; chmod 777 /media/usb_ntfs
Дальше создаем 4 файла. Чтобы было проще, в каждом файле в начале коммент с названием файла.
После создания:
sudo systemctl daemon-reload
Как это работает:
При подключении диска usb-диска срабатывает UDEV правило 99-usb-mount.rules и пытается запустить службу autousbbackup.service
autousbbackup.service пытается запустить media-usb_ntfs.mount, поскольку жестко он нее зависит.
Сама media-usb_ntfs.mount запустится только в том случае, если UUID диска будет 1234567890ABCDEF.
Если все условия совпадают, autousbbackup.service запустит скрипт autousbbackup.sh, внутри которого Вы напишите копирование или синхронизацию данных в каталог ё/media/usb_ntfs`.
Если используется архивирование с чередованием дисков - просто сделайте у дисков одинаковые метки:
sudo umount /dev/sdXN # где /dev/sdXN имя вашего NTFS-раздела.
sudo ntfslabel --new-serial=1234567890ABCDEF /dev/sdXN #задайте UUID
👆 Если в mount не указать опцию nofail система будет тормозить при загрузке.
👆 Запустить скрипт через UDEV даже в фоне не получится, поскольку система вырубит его через 5 сек.
#/etc/udev/rules.d/99-usb-mount.rules
SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="autousbbackup.service"
#/etc/systemd/system/media-usb_ntfs.mount
[Unit]
Description=Mount USB NTFS by UUID
[Mount]
What=/dev/disk/by-uuid/1234567890ABCDEF
Where=/media/usb_ntfs
Type=ntfs-3g
Options=defaults,big_writes,nofail,uid=1000,gid=1000
[Install]
WantedBy=multi-user.target
#/etc/systemd/system/autousbbackup.service
[Unit]
Description=Simple service autousbbackup
Requires=media-usb_ntfs.mount
After=media-usb_ntfs.mount
[Service]
Type=simple
ExecStart=/root/work/autousbbackup/autousbbackup.sh
[Install]
WantedBy=multi-user.target
#!/bin/bash
#/root/work/autousbbackup/autousbbackup.sh
declare -x PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
declare MOUNT_POINT=/media/usb_ntfs
declare TTY=/dev/tty1
declare DF='%(%Y%m%d-%H%M%S)T' #date format
declare LOG="$0.log"
exec &>"$LOG" # only one backup log
#exec &>>"$LOG" # all backups log
printf "$DF %s\n" -1 "START BACKUP"|tee "$TTY"
##############################################
sleep 3 # backup emulation
##############################################
printf "$DF %s\n" -1 "END BACKUP"|tee "$TTY"
#suicide, because service require mount point
systemd-mount --umount "$MOUNT_POINT"
🛠 #linux #bash
—
✅ @bashdays ✅ @linuxfactory ✅ @blogИ дополнительное призовое место от нашего коллеги DevUps, обещает задонатить кругленькую сумму за пост, который произведет впечатление на него лично.DevUps выбрал 2 поста, которые произвели на него впечатления. Цитирую:
Кароче, я выбрал 2 статьи ... Закончилось место на диске? Или же закончились inode? и Живое вмешательство. File descriptors и GDB. Надо будет как-то решить как им бабок заслать, по 5к получается.Как получить призы: Сегодня к каждому из победителей придет Макс, запросит у вас вводные, ну а дальше дело в шляпе. Всем кто принимал участие — огромнейшая благодарность, всем авторам постов лично жму руку, вы молодцы, что делитесь знаниями с другими. Это очень ценно! Спасибо вам ребята! 🛠 #балансбатл #людипишут — ✅ @bashdays ✅ @linuxfactory ✅ @blog
Если я проебался и что-то упустил, маякните, пожалуйста Максу, добавим в список.🛠 #балансбатл #людипишут — ✅ @bashdays ✅ @linuxfactory ✅ @blog
За год существования LF, через него прошло > 1000 человек. Больше половины учащихся успешно закончили курс и нашли свою первую хорошо оплачиваемую работу, которая им действительно нравится. LF это отличная инвестиция в своё будущее.Короче. У меня появились свободные слоты и я готов взять на обучение еще 20-30 человек. Цена временно снижена в 2 раза с
iptables лишь для части дистрибутивов, Alex эту ситуацию в комментариях подметил верно.
ㅤ
Давай посмотрим что в других дистрибутивах происходит.
Debian / Ubuntu
Основной пакет → iptables-persistent / netfilter-persistent
/etc/iptables/rules.v4 /etc/iptables/rules.v6RHEL / CentOS / Rocky / Alma (iptables-services)
/etc/sysconfig/iptables /etc/sysconfig/ip6tablesFedora (новые версии) По умолчанию использует firewalld (поверх nftables). Если ставишь iptables-services:
/etc/sysconfig/iptables /etc/sysconfig/ip6tablesArch Linux / Manjaro Из коробки iptables не сохраняет правила, обычно юзеры делают сами:
/etc/iptables/iptables.rules /etc/iptables/ip6tables.rulesOpenSUSE / SLES По умолчанию тоже firewalld, если ставить пакет iptables, правила обычно хранят в:
/etc/sysconfig/iptablesAstra Linux (Смоленск, Орёл и др. редакции) Астра базируется на Debian, поэтому у неё схема как у Debian/Ubuntu:
/etc/iptables/rules.v4 /etc/iptables/rules.v6РЕД ОС (RedOS) RedOS базируется на RHEL/CentOS, поэтому там всё по «редхэту»:
/etc/sysconfig/iptables /etc/sysconfig/ip6tablesВроде основное осветил, если что-то проебал, забыл, затроил — пиши в комменты, поправим. А вообще при возможности пользуйся облачным фаерволом, если страшно конфигурять iptables или руки растут из жопы. 🛠 #linux #security #iptables — ✅ @bashdays ✅ @linuxfactory ✅ @blog
