对于我正在开发的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
进程悬空。
答案 0 :(得分:1)
您可以在bash脚本中捕获ctrl-c信号,并让它执行一个查找进程并将其杀死的函数。
请参阅http://hacktux.com/bash/control/c
可能就像killall app-server和killall compile-coffee。
不要忘记通过调用exit退出bash脚本。