MacOS Shell如何准确查询Node进程占用的端口
获取Node进程占用的端口
你当前的脚本会抓取到非Node进程的端口,问题在于只提取了监听端口,但没有对进程是否为Node做过滤。修正后的脚本如下:
netstat -Watnlv | grep LISTEN | awk '{"ps -ww -o args= -p " $9 | getline procname; if (procname ~ /node/) print $4 }' | grep '[*]' | sort -u | sed "s/*.//"
修正说明:
- 在
awk环节增加了判断逻辑:通过PID获取进程命令行后,检查是否包含node,只有符合条件的进程才会输出对应的端口 - 其余步骤保留了你原脚本的逻辑,仅保留通配符绑定(
*:开头)的端口,去重后去掉前缀*
如果需要获取Node进程监听的所有端口(包括绑定到特定IP的,比如127.0.0.1:3000),可以去掉grep '[*]'并调整sed的匹配规则:
netstat -Watnlv | grep LISTEN | awk '{"ps -ww -o args= -p " $9 | getline procname; if (procname ~ /node/) print $4 }' | sort -u | sed "s/.*://"
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

