For example, while I am running the script below, if I send an INT signal with Ctrl + C, the script file gets interrupted immediately. But when I try the same process with the kill command as kill -2 pid, the sleep command is expected to finish for the interrupt signal to be valid. What exactly is the reason for this situation?


trap 'echo signal received!!' SIGINT

echo "The script pid is $$"
sleep 30
  • @ctrl-alt-delor You are right, i fixed now.
    – testter
    Oct 23, 2020 at 16:59
  • 1
    What happens if you send sigint to the script and to sleep? (My guess is that this is what ctrl-c is doing). Oct 23, 2020 at 17:05
  • @ctrl-alt-delor I would like to thank you for taking your precious time and returning to the questions I asked.
    – testter
    Oct 23, 2020 at 17:48

1 Answer 1


The difference is that when you press Ctrl-C the kernel will send a SIGINT signal to both your script and the sleep command (i.e. it will send the signal to the whole process group), but with kill -INT $pid you're only signaling $pid (supposedly your script).

Assuming that your script is started from a typical interactive shell (i.e. the script is the process group leader), just negating the pid should work: kill -INT -$pid.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .