Something that I'd like to share with you!

Friday, April 23, 2021

Bash trap - signal trapping with Unix shell

No comments :

Linux/Unix shell/Bash trap command "Trap" can be used to execute a function/command on receiving certain signal. To list down all available signals, do "trap -l"
# trap -l
 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
Please refer to https://www.computerhope.com/unix/utrap.htm for more information on this. Example common usage in a shell script, to perform cleanup when EXIT signal detected. Maybe to delete certain temporary files upon receiving CTRL+C. Example script
#!/bin/bash
cleanup(){
	echo
	echo "running cleanup here"
	echo "delete temporary files?"
	echo
}
trap cleanup EXIT
read -p "Press enter to continue"
read -p "Press enter to continue again"
read -p "Press enter to continue again"
When run, on receiving CTRL+C while the script is running (before the last line) will trigger the "cleanup" function.
# ./test.sh
Press enter to continue
Press enter to continue again^C
running cleanup here
delete temporary files?

No comments :