You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在停止当前运行的Bash脚本后执行命令终止Node进程?

解决IntelliJ IDEA停止Bash脚本后Node进程残留的问题(Windows+Cygwin环境)

我在Windows系统上使用Cygwin环境开发Angular应用,一开始写了个简单的Bash脚本用来启动项目:

#!/usr/bin/env bash
yarn start

我把这个脚本配置到IntelliJ IDEA的「Run/Debug Configurations」里作为运行目标,但遇到了个麻烦:当我在IDEA里停止脚本运行时,脚本本身确实终止了,但背后的Node进程却没被一起杀掉,导致对应的端口一直被占用,每次重启都得手动处理残留进程。

后来我修改了脚本,在启动前先清理掉之前残留的Node进程,临时解决了这个问题:

#!/usr/bin/env bash
echo "cleaning from previous run...."
ps -W | awk '/node.exe/,NF=1' | xargs kill -f
echo "done cleaning"
yarn start

脚本作用说明

  • ps -W:在Cygwin环境下,这个命令能列出Windows系统的所有进程
  • awk '/node.exe/,NF=1':筛选出包含node.exe的进程行,只保留进程ID(PID)部分
  • xargs kill -f:把筛选出的PID传递给kill命令,强制终止这些残留的Node进程

这样每次启动Angular应用前,都会自动清理掉之前的残留进程,不用再担心端口被占用的问题。

内容的提问来源于stack exchange,提问作者Muhammad Hewedy

火山引擎 最新活动