trap 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

trap 命令安装:



trap

-bash: trap: command not found
# Windows (WSL2)
sudo apt-get update sudo apt-get install execline

# Debian
apt-get install execline

# Ubuntu
apt-get install execline

# Alpine
apk add execline

# Kali Linux
apt-get install execline

# Docker
docker run cmd.cat/trap trap

# Dockerfile
dockerfile.run/trap

trap 命令补充说明:


trap 命令定义并激活在 shell 收到信号或其他特殊条件时运行的处理程序。

ARG 是当 Shell 收到信号 SIGNAL_SPEC 时要读取并执行的命令。如果不存在 ARG(并且提供了一个 SIGNAL_SPEC)或 ARG 是破折号 -,则每个指定的信号都将重置为其原始值。如果 ARG 为空 字符串,则每个 shell 及其调用的命令都会忽略每个 SIGNAL_SPEC

如果 SIGNAL_SPECEXIT (0),则从外壳退出时将执行 ARG。

如果 SIGNAL_SPECDEBUG,则在每个简单命令之前执行 ARG。

如果 SIGNAL_SPECRETURN,则每次执行由。或源内置命令运行的 shell 函数或脚本时,都会执行 ARG。

一个 SIGNAL_SPECERR 意味着执行 ARG 每个当一个命令的失败会导致 shell 退出时间 -e 选项启用。

如果未提供任何参数,则 trap 打印与每个信号关联的命令列表。

trap 命令语法:


trap [-lp] [[ARG] SIGNAL_SPEC...]

trap 命令选项:


-l  打印信号名称及其对应编号的列表。
-p  显示与每个 SIGNAL_SPEC 关联的陷阱命令。

trap 命令实例


trap 命令显示信号名称及其对应编号的列表:

$ 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

trap 命令显示当前设置的信号陷阱的列表。

$ trap

trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU

trap 设置一个陷阱,该陷阱在出现 Shell 错误或退出 Shell 时会删除临时文件 xyz$$

trap 'rm -f /tmp/xyz$$; exit' ERR EXIT

trap 命令列出当前 shell 的活动陷阱:

$ trap -p

trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU

trap 命令设置陷阱以在检测到一个或多个信号时执行命令:

trap 'echo "Caught signal SIGHUP"' SIGHUP

trap 命令删除活动陷阱:

trap - SIGHUP SIGINT

trap 命令扩展阅读:




trap 命令评论