trap命令用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。我在写自动升级脚本的时候,为防止脚本运行期间是不能允许其使用Ctrl+C等中断退出的,故使用了trap命令。
一、关于信号
历史上,shell总是用数字来代表信号,而新de脚本程序应该使用信号de名字,它们保存在用#include命令包含进来designal.h头文件中,在使用信号名时需要省略SIG前缀。
kill和trap等都可以看到信号编号及其关联de名称。“信号”是指那些被异步发送到一个程序de事件。默认情况下,它们通常会终止一个程序de运行。
引用
# 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 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
例如:# trap “echo ‘Hello World’” HUP INT QUIT TSTP
这样,当您运行Ctrl+C 等中断时,会自动运行echo命令,结果就是显示“HelloWorld”字符串。