美文网首页
Bash捕获Ctrl+C

Bash捕获Ctrl+C

作者: catHeart | 来源:发表于2016-07-08 23:17 被阅读1201次

    以前给同事写过一个Bash脚本。今天他发现有个问题,按Ctrl+C中止程序后,Bash生成的Log文件会莫名变得很大。应该是程序被中断后,脚本没有执行清理工作,后台有些程序还在运行。所以Bash脚本被中断了,但是脚本中启动的某些后台程序还在运行,持续向Log文件输出内容,致其变大。要解决这个问题,可以使用Bash提供的trap命令捕获中断信号,执行特定的操作。

    trap的用法如下:

    trap [-lp] [[arg] signal_spec ...]
    
    • -l: 列出所有信号的序号及名称
    • -p: 列出特定信号对应的处理指令
    • arg: 是signal_spec指定的信号的处理指令
    • signal_spec: 是需要捕获的信号

    上栗子!

    #!/bin/bash
    
    trap 'onCtrlC' INT
    function onCtrlC () {
        echo 'Ctrl+C is captured'
    }
    
    while true; do
        echo 'I am working!'
         sleep 1
    done
    

    执行上述脚本,Ctrl+C按键将触发onCtrlC函数。

    一些特殊的信号还有EXIT, DEBUG, RETURN, ERRarg也可以为空。

    参考文献

    • help trap

    相关文章

      网友评论

          本文标题:Bash捕获Ctrl+C

          本文链接:https://www.haomeiwen.com/subject/ueyrjttx.html