Лига сисадминов
Статьи, переводы статей, заметки, и юмор на тему системного администрирования. Написать администратору: @s_league_admin_bot КНД: https://clck.ru/3Fy4kQ
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Лига сисадминов
تُعد قناة Лига сисадминов (@sysodmins_league) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 13 020 مشتركاً، محتلاً المرتبة 9 643 في فئة التكنولوجيات والتطبيقات والمرتبة 50 320 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 13 020 مشتركاً.
بحسب آخر البيانات بتاريخ 26 يوليو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار 6، وفي آخر 24 ساعة بمقدار 0، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 15.32%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.71% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 994 مشاهدة. وخلال اليوم الأول يجمع عادةً 873 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 16.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل linux, ит_статьи, kubernetes, devops, docker.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Статьи, переводы статей, заметки, и юмор на тему системного администрирования.
Написать администратору: @s_league_admin_bot
КНД: https://clck.ru/3Fy4kQ”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 27 يوليو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
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