[freebsd] сигнал для процесса

Eugene Grosbein eugen at grosbein.net
Wed Jun 30 22:43:45 EEST 2021


01.07.2021 2:32, Eugene Grosbein пишет:

> В FreeBSD можно посмотреть состояние блокировок сигналов запущенного процесса:
> 
> # ps -wo pid,sigmask,sigignore,command -p 53667
>   PID BLOCKED  IGNORED COMMAND
> 53667       0 18788002 /usr/local/sbin/squid -f /usr/local/etc/squid/squid.conf
> 
> В данном случае у squid нет заблокированных сигналов и есть игнорируемые.

Можно также посмотреть подробности:

# procstat -i 53667 | fgrep -v -- ---
  PID COMM             SIG     FLAGS
53667 squid            INT      -I-
53667 squid            URG      -I-
53667 squid            CHLD     -I-
53667 squid            TTIN     -I-
53667 squid            TTOU     -I-
53667 squid            IO       -I-
53667 squid            WINCH    -I-
53667 squid            INFO     -I-
53667 squid            USR1     --C
53667 squid            32       --C

Тут мы видим те сигналы, для которых включено игнорирование (флаг I в наборе флагов)
и два последних обрабатываются особо (флаг C от catch).

Игнорирование глобально для всего процесса, но если процесс мультитредовый,
то каждый тред может ещё блокировать доставку себе определенных сигналов.

У squid такого нет, но вот пример для VBoxHeadless:

# procstat -j 2212 | fgrep -v -- -- | head
  PID    TID COMM             SIG     FLAGS
 2212 100930 VBoxHeadless     ALRM     -B
 2212 100934 VBoxHeadless     ALRM     -B
 2212 100935 VBoxHeadless     ALRM     -B
 2212 100936 VBoxHeadless     ALRM     -B
 2212 100937 VBoxHeadless     ALRM     -B
 2212 100939 VBoxHeadless     ALRM     -B
 2212 100941 VBoxHeadless     ALRM     -B
 2212 100944 VBoxHeadless     ALRM     -B
 2212 100963 VBoxHeadless     ALRM     -B

Это всё документировано в man procstat.



More information about the freebsd mailing list