TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #448 12.5K
Делать если честно совсем ничего не хочется, вчера к примеру закинули охуенную задачу — чтобы внести цифровой продукт в реестр отечественных ПО, нужно написать подробнейшую документацию к проекту.

Чтобы специалисты «миницифер», смогли локально у себя его развернуть и всё проверить.

Ну это ладно, вся соль в том, что нужно это подробно и в мельчайших подробностях расписать (без матов).

От начала создания сервера (консольные команды, пайплайны, апстримы, фаерволы и т.п.) и заканчивая — а теперь открываем браузер и видим главную страницу нашего приложения. Отдать код ансибла — не канает. Заебись да?

Короче пезда какая-то, чувствую себя как ребенок, который ненавидит делать домашку. Ладно, лирика. Поехали по сегодняшней теме.

✔️ Как узнать какие сигналы слушает процесс

Требуется проверить поймает ли запущенный процесс сигнал, проигнорирует или заблокирует его. Короче нужен список сигналов для конкретного приложения.

➡️ Про сигналы писал тут и тут


В Linux ты можешь найти PID процесса, а затем посмотреть:

cat /proc/$PID/status


В выхлопе будут строки описывающие какие сигналы

SigBlk - заблокированы
SigIgn - проигнорированы
SigCgt - перехвачены

Для примера беру PID=1, получаю такое:

SigBlk: 0000000000000000
SigIgn: fffffffe57f0d8fc
SigCgt: 00000000280b2603


Роман ты заебал! Опять какие-то шифры нечитабельные.

Давай разберемся что это значит.

Все эти числа справа, являются битовой маской. Если преобразовать это из шестнадцатеричного в двоичный, то каждый 1 бит представляет собой пойманный сигнал, считая справа налево, начиная с 1.

Итак, интерпретируя строку SigCgt, видим, что мой init процесс улавливает следующие сигналы:

00000000280b2603 ==> 101000000010110010011000000011


На телефонах вся эта поебота выглядит очень стрёмно, поэтому смотрим картинку к этому посту 👆


Как сопоставить числовые сигналы с именем? Я выполнил команду:

kill -l


И получил список всех сигналов от 1-31, а дальше уже дело техники.

И помним, что мы не можем заблокировать сигнал, если программа не готова к его перехвату. Если сигнал не был пойман, происходит действие по умолчанию, обычно это — завершение процесса.

Нахера всё это нужно? Ну если ты рядовой потребитель, то конечно оно тебе и не нужно. А если ты «автомеханик», то извините, хош не хош, а как оно внутри работает знать обязан.

Вот те скрипт, который покажет какие сигналы прослушивает программа. Да, скрипт преобразует криптошифры в нормальные имена сигналов. Избавляю вас от еботни, как говорится все для вас мои дорогие подписчики 🙃

#!/bin/bash

set -e

grep -m3 -P '^Sig(?:Blk|Ign|Cgt):' "/proc/$1/status" | while read field value
do
bits=$(printf 'ibase=16; obase=2; %X\n' '0x'$value | bc)
sigs=()
i=0
while [[ $bits ]]
do
((++i))
[[ ${bits:$((${#bits} - 1))} -eq 1 ]] && sigs+=($i)
bits=${bits::-1}
done
(( ${#sigs[*]} )) && sigs=( $(kill -l ${sigs[*]}) )
echo $field ${sigs[*]}
done
exit


При запуске нужно указать PID процесса: script.sh <pid>

Вроде всё. Если есть чо добавить, велком в комменты. Ну и всех с пятницей, хороших предстоящих выходных, берегите себя!

Пользуйтесь!

tags: #bash #linux #debug
—
🔔 @bashdays
More from @bashdays
  1. Sep 25, 2026ИИ-агент может быть у каждого: создать персонального помощника можно без настройки серверо…
  2. Sep 25, 2026🚀 Zabbix 8.0 на подходе. Запланируйте обучение команды уже сейчас В ближайшее время ожида…
  3. Sep 24, 2026✨ Как настроить PostgreSQL для продакшен-нагрузок При переходе к продакшен-нагрузкам важно…
  4. Sep 24, 2026Post #1565
  5. Sep 24, 2026Траблшутинг - мастхэв компетенция для инженера В Rebrain траблшутинги проводят уже несколь…
  6. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →