FREE THOUGHT · FREE SOFTWARE · FREE WORLD

Home » Shell Scripting » Bash Functions and Aliases for Traps, Kills, and Signals

by comment

Download: trapstuff.txt

See also: signal.h

Bash Trap and Kill Aliases

alias traps='trap -l|sed "s,\t,\n,g;s,),:,g;s,SIG,,g;s, \([0-9]\),\1,g"'
alias kills='for h in $(builtin kill -l); do echo "$(builtin kill -l $h): $h"; done';

traps output

1: HUP
2: INT
3: QUIT
4: ILL
5: TRAP
6: ABRT
7: BUS
8: FPE
9: KILL
10: USR1
11: SEGV
12: USR2
13: PIPE
14: ALRM
15: TERM
16: STKFLT
17: CHLD
18: CONT
19: STOP
20: TSTP
21: TTIN
22: TTOU
23: URG
24: XCPU
25: XFSZ
26: VTALRM
27: PROF
28: WINCH
29: IO
30: PWR
31: SYS
34: RTMIN
35: RTMIN+1
36: RTMIN+2
37: RTMIN+3
38: RTMIN+4
39: RTMIN+5
40: RTMIN+6
41: RTMIN+7
42: RTMIN+8
43: RTMIN+9
44: RTMIN+10
45: RTMIN+11
46: RTMIN+12
47: RTMIN+13
48: RTMIN+14
49: RTMIN+15
50: RTMAX-14
51: RTMAX-13
52: RTMAX-12
53: RTMAX-11
54: RTMAX-10
55: RTMAX-9
56: RTMAX-8
57: RTMAX-7
58: RTMAX-6
59: RTMAX-5
60: RTMAX-4
61: RTMAX-3
62: RTMAX-2
63: RTMAX-1
64: RTMAX

Trap and Kill Functions

Using traps are helpful to use in functions like this:

function yn ()
{ 
  local post=`tput op;tput sgr0;tput cnorm`;
  trap 'echo -e "${post}"' 1 2 3 6 15 RETURN;
  (
    local a= YN=1 msg="${@}" pre=`tput civis;tput setab 4;tput setaf 7` post=`tput op;tput sgr0;tput cnorm`;
    trap 'echo -e "${post}"' 1 2 3 6 15 RETURN;
    until [[ $YN == 0 || $YN == 65 ]]; do
      echo -en "\n\n${pre}:: ${msg}? (y/N)${post} " && read -s -n 1 a;
      case $a in 
        [yY]) YN=0;
        ;;
        [nN]) YN=65;
        ;;
      esac;
      echo;
    done;
    return $YN
  )
}

Info about a Signal number or name

function trapinfo () 
{ 
   local signum=${1:-} sigdesc="`trapdesc ${1:-}`";
   case $signum in 
    1 | HUP | SIGHUP) echo "${signum}: ${sigdesc}: HUP - SIGHUP"
     ;;
    2 | INT | SIGINT) echo "${signum}: ${sigdesc}: INT - SIGINT"
     ;;
    3 | QUIT | SIGQUIT) echo "${signum}: ${sigdesc}: QUIT - SIGQUIT"
     ;;
    4 | ILL | SIGILL) echo "${signum}: ${sigdesc}: ILL - SIGILL"
     ;;
    5 | TRAP | SIGTRAP) echo "${signum}: ${sigdesc}: TRAP - SIGTRAP"
     ;;
    6 | ABRT | SIGABRT) echo "${signum}: ${sigdesc}: ABRT - SIGABRT"
     ;;
    7 | BUS | SIGBUS) echo "${signum}: ${sigdesc}: BUS - SIGBUS"
     ;;
    8 | FPE | SIGFPE) echo "${signum}: ${sigdesc}: FPE - SIGFPE"
     ;;
    9 | KILL | SIGKILL) echo "${signum}: ${sigdesc}: KILL - SIGKILL"
     ;;
    10 | USR1 | SIGUSR1) echo "${signum}: ${sigdesc}: USR1 - SIGUSR1"
     ;;
    11 | SEGV | SIGSEGV) echo "${signum}: ${sigdesc}: SEGV - SIGSEGV"
     ;;
    12 | USR2 | SIGUSR2) echo "${signum}: ${sigdesc}: USR2 - SIGUSR2"
     ;;
    13 | PIPE | SIGPIPE) echo "${signum}: ${sigdesc}: PIPE - SIGPIPE"
     ;;
    14 | ALRM | SIGALRM) echo "${signum}: ${sigdesc}: ALRM - SIGALRM"
     ;;
    15 | TERM | SIGTERM) echo "${signum}: ${sigdesc}: TERM - SIGTERM"
     ;;
    16 | STKFLT | SIGSTKFLT) echo "${signum}: ${sigdesc}: STKFLT - SIGSTKFLT"
     ;;
    17 | CHLD | SIGCHLD) echo "${signum}: ${sigdesc}: CHLD - SIGCHLD"
     ;;
    18 | CONT | SIGCONT) echo "${signum}: ${sigdesc}: CONT - SIGCONT"
     ;;
    19 | STOP | SIGSTOP) echo "${signum}: ${sigdesc}: STOP - SIGSTOP"
     ;;
    20 | TSTP | SIGTSTP) echo "${signum}: ${sigdesc}: TSTP - SIGTSTP"
     ;;
    21 | TTIN | SIGTTIN) echo "${signum}: ${sigdesc}: TTIN - SIGTTIN"
     ;;
    22 | TTOU | SIGTTOU) echo "${signum}: ${sigdesc}: TTOU - SIGTTOU"
     ;;
    23 | URG | SIGURG) echo "${signum}: ${sigdesc}: URG - SIGURG"
     ;;
    24 | XCPU | SIGXCPU) echo "${signum}: ${sigdesc}: XCPU - SIGXCPU"
     ;;
    25 | XFSZ | SIGXFSZ) echo "${signum}: ${sigdesc}: XFSZ - SIGXFSZ"
     ;;
    26 | VTALRM | SIGVTALRM) echo "${signum}: ${sigdesc}: VTALRM - SIGVTALRM"
     ;;
    27 | PROF | SIGPROF) echo "${signum}: ${sigdesc}: PROF - SIGPROF"
     ;;
    28 | WINCH | SIGWINCH) echo "${signum}: ${sigdesc}: WINCH - SIGWINCH"
     ;;
    29 | IO | SIGIO) echo "${signum}: ${sigdesc}: IO - SIGIO"
     ;;
    30 | PWR | SIGPWR) echo "${signum}: ${sigdesc}: PWR - SIGPWR"
     ;;
    31 | SYS | SIGSYS) echo "${signum}: ${sigdesc}: SYS - SIGSYS"
     ;;
    34 | RTMIN | SIGRTMIN) echo "${signum}: ${sigdesc}: RTMIN - SIGRTMIN"
     ;;
    35 | RTMIN+1 | SIGRTMIN+1) echo "${signum}: ${sigdesc}: RTMIN+1 - SIGRTMIN+1"
     ;;
    36 | RTMIN+2 | SIGRTMIN+2) echo "${signum}: ${sigdesc}: RTMIN+2 - SIGRTMIN+2"
     ;;
    37 | RTMIN+3 | SIGRTMIN+3) echo "${signum}: ${sigdesc}: RTMIN+3 - SIGRTMIN+3"
     ;;
    38 | RTMIN+4 | SIGRTMIN+4) echo "${signum}: ${sigdesc}: RTMIN+4 - SIGRTMIN+4"
     ;;
    39 | RTMIN+5 | SIGRTMIN+5) echo "${signum}: ${sigdesc}: RTMIN+5 - SIGRTMIN+5"
     ;;
    40 | RTMIN+6 | SIGRTMIN+6) echo "${signum}: ${sigdesc}: RTMIN+6 - SIGRTMIN+6"
     ;;
    41 | RTMIN+7 | SIGRTMIN+7) echo "${signum}: ${sigdesc}: RTMIN+7 - SIGRTMIN+7"
     ;;
    42 | RTMIN+8 | SIGRTMIN+8) echo "${signum}: ${sigdesc}: RTMIN+8 - SIGRTMIN+8"
     ;;
    43 | RTMIN+9 | SIGRTMIN+9) echo "${signum}: ${sigdesc}: RTMIN+9 - SIGRTMIN+9"
     ;;
    44 | RTMIN+10 | SIGRTMIN+10) echo "${signum}: ${sigdesc}: RTMIN+10 - SIGRTMIN+10"
     ;;
    45 | RTMIN+11 | SIGRTMIN+11) echo "${signum}: ${sigdesc}: RTMIN+11 - SIGRTMIN+11"
     ;;
    46 | RTMIN+12 | SIGRTMIN+12) echo "${signum}: ${sigdesc}: RTMIN+12 - SIGRTMIN+12"
     ;;
    47 | RTMIN+13 | SIGRTMIN+13) echo "${signum}: ${sigdesc}: RTMIN+13 - SIGRTMIN+13"
     ;;
    48 | RTMIN+14 | SIGRTMIN+14) echo "${signum}: ${sigdesc}: RTMIN+14 - SIGRTMIN+14"
     ;;
    49 | RTMIN+15 | SIGRTMIN+15) echo "${signum}: ${sigdesc}: RTMIN+15 - SIGRTMIN+15"
     ;;
    50 | RTMAX-14 | SIGRTMAX-14) echo "${signum}: ${sigdesc}: RTMAX-14 - SIGRTMAX-14"
     ;;
    51 | RTMAX-13 | SIGRTMAX-13) echo "${signum}: ${sigdesc}: RTMAX-13 - SIGRTMAX-13"
     ;;
    52 | RTMAX-12 | SIGRTMAX-12) echo "${signum}: ${sigdesc}: RTMAX-12 - SIGRTMAX-12"
     ;;
    53 | RTMAX-11 | SIGRTMAX-11) echo "${signum}: ${sigdesc}: RTMAX-11 - SIGRTMAX-11"
     ;;
    54 | RTMAX-10 | SIGRTMAX-10) echo "${signum}: ${sigdesc}: RTMAX-10 - SIGRTMAX-10"
     ;;
    55 | RTMAX-9 | SIGRTMAX-9) echo "${signum}: ${sigdesc}: RTMAX-9 - SIGRTMAX-9"
     ;;
    56 | RTMAX-8 | SIGRTMAX-8) echo "${signum}: ${sigdesc}: RTMAX-8 - SIGRTMAX-8"
     ;;
    57 | RTMAX-7 | SIGRTMAX-7) echo "${signum}: ${sigdesc}: RTMAX-7 - SIGRTMAX-7"
     ;;
    58 | RTMAX-6 | SIGRTMAX-6) echo "${signum}: ${sigdesc}: RTMAX-6 - SIGRTMAX-6"
     ;;
    59 | RTMAX-5 | SIGRTMAX-5) echo "${signum}: ${sigdesc}: RTMAX-5 - SIGRTMAX-5"
     ;;
    60 | RTMAX-4 | SIGRTMAX-4) echo "${signum}: ${sigdesc}: RTMAX-4 - SIGRTMAX-4"
     ;;
    61 | RTMAX-3 | SIGRTMAX-3) echo "${signum}: ${sigdesc}: RTMAX-3 - SIGRTMAX-3"
     ;;
    62 | RTMAX-2 | SIGRTMAX-2) echo "${signum}: ${sigdesc}: RTMAX-2 - SIGRTMAX-2"
     ;;
    63 | RTMAX-1 | SIGRTMAX-1) echo "${signum}: ${sigdesc}: RTMAX-1 - SIGRTMAX-1"
     ;;
    64 | RTMAX | SIGRTMAX) echo "${signum}: ${sigdesc}: RTMAX - SIGRTMAX"
     ;;
    65) echo "${signum}: ${sigdesc}: invalid signal specification"
     ;;
    *) echo "${signum}: ${sigdesc}: Unknown Signal"
     ;;
   esac
}

Function to describe the signal

function trapdesc () 
{ 
   case $1 in 
    0) echo "Bogus signal"
     ;;
    1) echo "Hangup"
     ;;
    2) echo "Interrupt"
     ;;
    3) echo "Quit"
     ;;
    4) echo "Illegal instruction"
     ;;
    5) echo "BPT trace/trap"
     ;;
    6) echo "ABORT instruction"
     ;;
    7) echo "Bus error"
     ;;
    8) echo "Floating point exception"
     ;;
    9) echo "Killed"
     ;;
    10) echo "User signal 1"
     ;;
    11) echo "Segmentation fault"
     ;;
    12) echo "User signal 2"
     ;;
    13) echo "Broken pipe"
     ;;
    14) echo "Alarm clock"
     ;;
    15) echo "Terminated"
     ;;
    17) echo "Child death or stop"
     ;;
    18) echo "Continue"
     ;;
    19) echo "Stopped (signal)"
     ;;
    20) echo "Stopped"
     ;;
    21) echo "Stopped (tty input)"
     ;;
    22) echo "Stopped (tty output)"
     ;;
    23) echo "Urgent IO condition"
     ;;
    24) echo "CPU limit"
     ;;
    25) echo "File limit"
     ;;
    26) echo "Alarm (virtual)"
     ;;
    27) echo "Alarm (profile)"
     ;;
    28) echo "Window changed"
     ;;
    29) echo "I/O ready"
     ;;
    30) echo "power failure imminent"
     ;;
    31) echo "Bad system call"
     ;;
    *) echo "Unknown"
     ;;
   esac
}

Tags

Comments Welcome

Information is freedom. Freedom is non-negotiable. So please feel free to modify, copy, republish, sell, or use anything on this site in any way at any time ;)

My Online Tools

Popular Articles
Hacking and Hackers

The use of "hacker" to mean "security breaker" is a confusion on the part of the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean someone who loves to program, someone who enjoys playful cleverness, or the combination of the two.
-- Richard M. Stallman


It's very simple - you read the protocol and write the code. -Bill Joy

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 3.0 License, just credit with a link.
This site is not supported or endorsed by The Apache Software Foundation (ASF). All software and documentation produced by The ASF is licensed. "Apache" is a trademark of The ASF. NCSA HTTPd.
UNIX ® is a registered Trademark of The Open Group. POSIX ® is a registered Trademark of The IEEE.

+Askapache | htaccess.io | htaccess.guru

Site Map | Contact Webmaster | License and Disclaimer | Terms of Service | @Htaccess

↑ TOPMain