您的位置:首页 > 运维架构 > Shell

shell信号捕捉命令 trap

2018-01-12 11:58 711 查看

trap 命令

tarp
命令用于在接收到指定信号后要执行的动作,通常用途是在shell脚本被中断时完成清理工作。例如:
脚本在执行时按下
CTRL+c
时,将显示"program exit..."并退出(
CTRL+c
的信号是SIGINT)

#!/bin/bash
trap "ehco 'program exit...'; exit 2" SIGINT

....

信号

常用信号

信号名称 信号数 描述
SIGINT 2 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl+C)时发出。
SIGQUIT 3 和SIGINT类似, 但由QUIT字符(通常是Ctrl /)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。
SIGFPE 8 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。
SIGKILL 9 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略。
SIGALRM 14 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号。 SIGTERM

捕获信号

  • trap的命令语法:

    trap command signal

    这里的

    command
    可以是linux命令,或用户定义的函数。
    signal
    信号名称信号数,可以指定多个信号,以空格相隔。

  • trap
    在shell常见用途

    脚本退出前执行命令

脚本在执行时按下

CTRL+c
时,将显示"program exit..."并退出(
CTRL+c
的信号是SIGINT)
shell   trap "ehco 'program exit...'; exit 2" SIGINT

  • 忽略信号

例:脚本运行时忽略

SIGINT
SIGQUIT
SIGFPE
等信号
shell   trap '' 2 3 8

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: