我有一个运行多个进程的开发堆栈:Web 服务器、自动测试、后台编译等。所有这些都是基本的命令行命令,例如node app.js
or lein midje :autotest
。
是否可以使用一个脚本在“后台”中运行所有这些进程并将它们的输出合并到一个标准输出中(即:在终端的屏幕上显示它)?
我发现(使用 &)的简单 bash 解决方案的问题之一是,在 Ctrl+C 上,后台进程显然保持活动状态,这是不可取的。
我尝试添加陷阱'kill $(jobs -pr)' SIGINT SIGTERM EXIT
,但这似乎在 OS X 上不能可靠地工作 - 令人惊讶的是节点进程被杀死,但在脚本退出后 java 进程仍然存在(通过 Ctrl+C)。
我可以使用任何脚本语言。我更喜欢纯 bash 或 JS,但 Python 或 Ruby 也可以。
我还希望将 ANSI 转义着色保留在合并的输出中。