zoukankan      html  css  js  c++  java
  • shell信号捕捉命令 trap

    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)

      trap "ehco 'program exit...'; exit 2" SIGINT
      
      • 忽略信号

      例:脚本运行时忽略 SIGINT SIGQUIT SIGFPE等信号

      trap '' 2 3 8
      
  • 相关阅读:
    spring mvc 获取请求中参数方式
    23种设计模式
    Liunx-Centos下安装FFmpeg
    liunx下nginx静态服务器配置SSL证书
    JDK 1.5新特性
    搭建kubenetes集群
    centos7添加虚拟IP
    Apache+tomcat配置动静分离(一个apache一个tomcat,没有做集群)
    maven使用内嵌tomcat7
    spring集成mybatis后,打印SQL语句
  • 原文地址:https://www.cnblogs.com/technologylife/p/8275051.html
Copyright © 2011-2022 走看看