kill can kill. It doesn’t necessarily.
Indeed, it can send a lot of different signals beyond SIGKILL. And people over use SIGKILL, it really only should be used in an emergency when a process is unresponsive to other signals. SIGTERM and SIGHUP are generally a better idea, as they shut down a program in a controlled fashion. SIGCONT – sent by kill, will actually resume a previously paused program with SIGTSTP or SIGSTOP.
All the signals kill can send at least on my computer:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Real-Time User Defined Signals 32 to 64 can be used for any purpose, though the numbers can change depending on the Linux distro, so it is considered best practice to call it by name, like kill -SIGRTMIN xxxx.
You might use Real-Time User Defined Signals if you have a “daemon” program that runs in the background, watches for signals to take an action, like pull a pin high to turn on a light on a Rapberry PI. You don’t think of using kill to make a program take actions, but it certainly can be used that way.
Trapping signals is easy in bash loop — just include a trap <command here> <signal number or name> in your code. Python with the signal library, you can trap a signal with signal.signal(signal.<SIGNAL NAME>, <function here>). It’s a bit more complicated in C, with the signal.h library as you can get race conditions if your not very careful.

















