从bash脚本运行和查杀服务器和观察程序

时间:2012-01-24 02:22:25

标签: bash shell subprocess

对于我正在开发的webapp,我有一个bash脚本来监视源代码的变化并更新运行环境。

function app-serve {
    python runserver.py
}

function compile-coffee {
    inotifywait -e modity scripts | while read change; do
        coffee -o js scripts
    done
}

现在,我需要同时运行这两个函数,

app-serve &
compile-coffee &

等一下

wait

问题是,当我想要停止这些过程时,一个简单的Ctrl-C没有这样做。当我执行Ctrl-C时,我会返回命令提示符,但函数中运行的进程仍处于活动状态。

有没有办法告诉bash等到我点击Ctrl-C,然后杀死所有子进程?

修改:一个澄清,我看到我在python函数中启动的app-serve进程被杀死。只有inotifywait和几个bash进程悬空。

1 个答案:

答案 0 :(得分:1)

您可以在bash脚本中捕获ctrl-c信号,并让它执行一个查找进程并将其杀死的函数。

请参阅http://hacktux.com/bash/control/c

可能就像killall app-server和killall compile-coffee。

不要忘记通过调用exit退出bash脚本。