Запустил:
Code:
#!/bin/sh
strace -e signal ping -c 3 192.168.1.2 > /opt/tmp/trace 2>&1
из под ssh:
Code:
rt_sigaction(SIGINT, {0x10000000, [], 0x4604e4 /* SA_??? */}, {SIG_DFL}, 16) = 0
rt_sigaction(SIGALRM, {0x10000000, [], 0x4607e4 /* SA_??? */}, {SIG_DFL}, 16) = 0
PING 192.168.1.2 (192.168.1.2): 56 data bytes
84 bytes from 192.168.1.2: icmp_seq=0 ttl=128 time=2.0 ms
--- SIGALRM (Alarm clock) @ 0 (0) ---
rt_sigaction(SIGALRM, {0x10000000, [], 0x4607e4 /* SA_??? */}, {0x10000000, [], 0x4607e4 /* SA_??? */}, 16) = 0
sigreturn() = ? (mask now [TRAP IOT EMT FPE ALRM TERM CHLD PROF])
84 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=6.2 ms
--- SIGALRM (Alarm clock) @ 0 (0) ---
rt_sigaction(SIGALRM, {0x10000000, [], 0x4607e4 /* SA_??? */}, {0x10000000, [], 0x4607e4 /* SA_??? */}, 16) = 0
rt_sigaction(SIGALRM, {0x10000000, [], 0x4604e4 /* SA_??? */}, {0x10000000, [], 0x4607e4 /* SA_??? */}, 16) = 0
sigreturn() = ? (mask now [TRAP IOT EMT FPE ALRM TERM CHLD PROF])
84 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=7.2 ms
rt_sigaction(SIGINT, {0x10000000, [], SA_NOCLDSTOP}, {0x10000000, [], 0x4604e4 /* SA_??? */}, 16) = 0
--- 192.168.1.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 2.0/5.1/7.2 ms
Process 8346 detached
и из под крона:
Code:
rt_sigaction(SIGINT, {0x10000000, [], 0x4604e4 /* SA_??? */}, {SIG_DFL}, 16) = 0
rt_sigaction(SIGALRM, {0x10000000, [], 0x4607e4 /* SA_??? */}, {SIG_DFL}, 16) = 0
PING 192.168.1.2 (192.168.1.2): 56 data bytes
84 bytes from 192.168.1.2: icmp_seq=0 ttl=128 time=2.1 ms
--- SIGTERM (Terminated) @ 0 (0) ---
+++ killed by SIGTERM +++
Process 8405 detached
процесс был снят с терминала.
Насколько я понял вызовов sigprocmask пинг не делает, а маска блокировки сигналов была передана кроном с блокированным алармом.
Сигнал аларм приходит, но обработка его запрещена.