Лига сисадминов
Статьи, переводы статей, заметки, и юмор на тему системного администрирования. Написать администратору: @s_league_admin_bot КНД: https://clck.ru/3Fy4kQ
Ko'proq ko'rsatish📈 Telegram kanali Лига сисадминов analitikasi
Лига сисадминов (@sysodmins_league) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 13 020 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 643-o'rinni va Rossiya mintaqasida 50 320-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 13 020 obunachiga ega bo‘ldi.
26 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 6 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 15.32% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.71% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 994 marta ko‘riladi; birinchi sutkada odatda 873 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 16 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent linux, ит_статьи, kubernetes, devops, docker kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Статьи, переводы статей, заметки, и юмор на тему системного администрирования.
Написать администратору: @s_league_admin_bot
КНД: https://clck.ru/3Fy4kQ”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 27 Iyul, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
alias g=git
Очевидно, что вместо git я мог просто писать g, что здорово экономит время для команды, которую я вызываю десятки раз в день!
# Теперь эти две команды абсолютно одинаковы: git status g statusРаньше я всегда задавал такие сокращения через alias. И за годы в моём ~/.bashrc их накопился огромный список. Но со временем, кажется, я нашел вариант получше: скрипт в $PATH. https://telegra.ph/V-chem-raznica-mezhdu-alias-i-skriptami-v-PATH-07-26 #ит_статьи #linux #shell #bash #zsh #alias #dotfiles
tail -f для сигналов в Linux
Нашёл интересный eBPF-инструмент sigwire:
Он показывает системный поток сигналов на хосте в реальном времени: кто отправил сигнал, какому процессу или потоку он предназначался, откуда появился и что произошло при доставке.
WHEN SENDER SIGNAL TARGET NOTE now bash·4402──SIGINT────> node·8813 kill(2) ↯ EINTR read caught 41µs 3.4s kernel·8813──SIGSEGV──> chrome·8813 fault default 4.1s postgres·507──SIGUSR1─> postgres·509 kill(2) caught 9µsОбычно сигналы приходится искать через
strace, подключаясь к конкретному процессу или его потомкам. sigwire вместо ptrace использует kernel tracepoints:
* signal:signal_generate;
* signal:signal_deliver;
* вход в rt_sigreturn;
* raw_syscalls:sys_exit.
Благодаря этому один запуск видит сигнальный трафик разных процессов на машине и не останавливает каждый tracee на событиях ptrace.
Для каждого события инструмент пытается связать генерацию и доставку сигнала и показать:
* отправителя и получателя;
* источник: kill(2), tgkill, timer, kernel fault и другие;
* был ли вызван userspace-handler;
* сколько времени прошло до rt_sigreturn;
* какие сигналы были заблокированы у целевого потока;
* прервал ли сигнал системный вызов.
Поиск проблем с EINTR
Самая полезная функция - обнаружение прерванных системных вызовов.
Если сигнал доставлен, пока поток находится в read, poll, accept, futex, nanosleep или другом блокирующем syscall, приложение может получить EINTR. Если код не повторяет такой вызов и handler не использует подходящий SA_RESTART, возникает классический тайминг-зависимый баг: «почему read() один раз неожиданно завершился ошибкой?»
sigwire показывает и сигнал, и пострадавший сискол:
↯ EINTR readКлавиша
e оставляет в ленте только прерванные или автоматически перезапущенные системные вызовы.
По описанию автора, основной оверхед - запись события в bounded ring buffer при генерации или доставке сигнала. Для обнаружения EINTR короткая BPF-программа также вызывается при каждом sys_exit в системе и быстро завершается, если сискол не вернул внутренний код -ERESTART*.
Ring buffer не блокирует процессы: если userspace не успевает читать события, новые записи могут быть потеряны. Публичных бенчмарков в репозитории пока нет, поэтому перед использованием на нагруженном production-хосте overhead лучше измерить самостоятельно.
Установка
curl -fsSL https://yeet.cx | sh
yeet login
yeet run github:yeet-src/sigwire
Нужен Linux с BTF/CO-RE, в частности файл:
test -r /sys/kernel/btf/vmlinux && echo BTF available
Интерфейс sigwire работает без root, но привилегированную загрузку BPF выполняет демон yeetd. Я скептически отношусь к установки чего-либо через curl | sh, так что в случае установки в продакшене я бы рекомендовал пользоваться установкой вручную.
Ограничения
- sigwire не блокирует, не задерживает и не изменяет сигналы.
- Корреляция generation/delivery выполняется без общего kernel event ID, поэтому при шторме одинаковых сигналов к одному потоку возможны неточности. Время handler измеряется до rt_sigreturn: если handler только устанавливает флаг, а основная работа выполняется позже runtime или event loop, в интерфейсе будет показано только время самого низкоуровневого обработчика.
- Проект совсем свежий, и до продовой готовности ему очень далеко. А вот для тестирования в лаборатории и мелкой диагностики подойдёт отлично.
#ит_заметки #linux #bpf #sigwire #github #syscallkill -9 shell-скрипт оставляет за собой кучу мусора в /tmp.
Классический подход с решением через trap и rm -rf тут пасует: сигнал SIGKILL просто не дает скрипту времени на очистку ресурсов.
Но есть решение изящнее и надежнее - изолированные пространства имен ядра и приватное монтирование TMPFS. Идея тут в том, чтобы привязать время жизни временных файлов напрямую к жизненному циклу самого процесса. Скрипт умер - файлы стерлись на уровне ядра, автоматически.
Сегодня разберём как это настроить с помощью unshare, обойти ограничения шебанга и заворачивать отдельные файлы в «невидимые» директории.
https://telegra.ph/EHfemernyj-TMPFS-dlya-skriptov-07-12
#ит_статьи #devops #linux #shell #kernel #tmpfs