linux - 终止 webpack-dev-server 后执行 bash

标签 linux node.js bash webpack-dev-server

这里有一个小烦恼。作为项目“快速启动”脚本的一部分,我在终端选项卡中启动了一个 webpack 服务器,以及其他选项卡中的其他内容,简而言之:

#!/usr/bin/env bash

gnome-terminal --tab --tab --command \
    'bash -c "node_modules/.bin/webpack-dev-server; exec bash"' &

除了服务器选项卡中的 Ctrl+C 外,这几乎可以按预期工作。如果它是一个 Flask 服务器,它会停止并且 bash 提示符会出现在同一个选项卡中(这就是“exec bash”部分的原因)。但是对于 node/webpack,选项卡只是关闭。

手动向 Node 进程发送中断信号会使选项卡保持打开状态(例如 kill -INT <pid> )。所以问题是从操作系统的角度来看发生了什么。创建什么进程树?哪个进程获得了 SIGINT? exec 替换了什么(如果有的话)?

可能相关:https://github.com/nodejs/node/issues/4432 .

最佳答案

尝试如下使用trap:

bash -c "trap 'exec bash' SIGINT; node_modules/.bin/webpack-dev-server;"

它必须在 cmd+c 上杀死 webpack-dev-server 和 exec bash;

关于linux - 终止 webpack-dev-server 后执行 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595150/

相关文章:

linux - readv 从 Socket 返回 ENOENT

linux - 通过shell脚本将参数添加到conf文件中

javascript - Knex 从多个表中选择

bash - 通过脚本登录到远程服务器并执行一组命令

bash - 如何使用 For 循环重命名目录中的所有文件?

linux - awk 跳过空行

linux - 重命名多个目录匹配模式

node.js - 使用 package.json 时,nodemonignore 不起作用

mysql - Bookshelf.js 未连接到正确的主机?

linux - BASH:如何在变量中缓存 lolcat 的结果并稍后打印?