bash - Mac bash 并行运行命令,其中一个进程不退出
问题描述
我正在尝试找到一种方法来从 Mac 终端中的一个命令并行运行两个进程,其中一个命令不会退出。本质上,我想运行以下命令来自动观察业力测试:
npm karma start --no-single-run --auto-watch
我还想打开浏览器到 karma 调试运行器页面:
http://localhost:9876/debug.html
我想在启动karma start
上面的命令后大约 15 秒打开浏览器。我无法弄清楚如何在单行中并行执行此操作。
经过大约两个小时的搜索,到目前为止,这是我想出的:
npx karma start --no-single-run --auto-watch & ( sleep 15 && open http://localhost:9876/debug.html )
这按我想要的方式工作,除了 karma 似乎在单独的上下文中运行 - 这意味着用户不能Ctrl+C
杀死节点进程,他们必须手动执行。
解决方案
您可以在后台运行 npm 命令并在用户按下 Ctrl+C 时进行清理:
#!/usr/bin/env bash
# Initialize variables
wait_sec=15
browser_url="http://localhost:9876/debug.html"
npm_pid=""
function start_npm_command() {
npm karma start --no-single-run --auto-watch &
npm_pid=$!
}
function open_browser() {
echo "Opening browser after waiting for ${wait_sec} seconds"
sleep "${wait_sec}"
open "${browser_url}"
echo -e "\n\n Press 'Ctrl+C' to exit"
}
function handle_exit() {
echo "Execute cleanup.."
if [[ -n "${npm_pid}" ]]; then
echo "Killing npm pid"
kill -s SIGKILL "${npm_pid}"
else
echo "Do nothing"
fi
}
function main() {
start_npm_command
open_browser
}
trap handle_exit SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM
main
推荐阅读
- python - 我无法在 pythin 中计算这个游戏的尝试次数
- sql - 尝试计算 1 个查询中的绝对变化和百分比变化
- python - 为什么以及何时应该使用 stack() 和 unstack() 方法?
- python - 将值填充到非常依赖于索引的 numpy 数组中
- sqlite - 实体框架表不是在内存中使用 SQLite 生成的
- python - 从 RawReactionActionEvent (discord.py) 获取消息
- sql - SQL SELECT 将正斜杠和 \r\n 添加到结果字符串
- python - 打印出某些内容后覆盖一行
- onedrive - 如何在 Teams 上下载只读录音
- python - Tensorflow 环境在 python 中工作,但是当我将它转换为 tf 环境时,step 函数什么也不做