Bash捕获Ctrl+C

2016-07-08  本文已影响1201人  catHeart

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

trap的用法如下:

trap [-lp] [[arg] 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也可以为空。

参考文献

上一篇下一篇

猜你喜欢

热点阅读