仅限MacOS
列出所有按端口分组的进程及其PID
sudo lsof -i -P | grep LISTEN
结果应该如下所示:
rapportd 123 leo 5u IPv4 0x84512a8572c9xxxx 0t0 TCP *:62003 (LISTEN)
rapportd 123 leo 6u IPv6 0x84512a857627xxxx 0t0 TCP *:62003 (LISTEN)
mongod 414 leo 9u IPv4 0x84512a857926xxxx 0t0 TCP localhost:27017 (LISTEN)
Loom 3315 leo 28u IPv4 0x84512a85785cxxxx 0t0 TCP localhost:11223 (LISTEN)
node 38238 leo 22u IPv6 0x84512a857627xxxx 0t0 TCP *:5000 (LISTEN)
node 68336 leo 22u IPv6 0x84512a858bb4xxxx 0t0 TCP *:443 (LISTEN)
第2列是最后一列端口上进程的PID
现在使用 sudo kill -9 <PID>
终止该端口上的进程
sudo kill -9 68336
68336
是在端口 443
上运行的进程的PID
再次检查
$ sudo lsof -i -P | grep LISTEN
rapportd 123 leo 5u IPv4 0x84512a8572c9xxxx 0t0 TCP *:62003 (LISTEN)
rapportd 123 leo 6u IPv6 0x84512a857627xxxx 0t0 TCP *:62003 (LISTEN)
mongod 414 leo 9u IPv4 0x84512a857926xxxx 0t0 TCP localhost:27017 (LISTEN)
Loom 3315 leo 28u IPv4 0x84512a85785cxxxx 0t0 TCP localhost:11223 (LISTEN)
node 38238 leo 22u IPv6 0x84512a857627xxxx 0t0 TCP *:5000 (LISTEN)
端口 443
上的进程已经停止了!
更简便的方法
如果你知道具体的端口号,可以直接使用以下命令:
# 查找占用特定端口的进程
sudo lsof -i :端口号
# 例如查找占用端口3000的进程
sudo lsof -i :3000
或者一行命令直接终止占用特定端口的进程:
# 终止占用端口3000的进程
sudo kill -9 $(sudo lsof -t -i:3000)
命令解释
lsof
: List Open Files - 列出打开的文件-i
: 显示网络连接-P
: 显示端口号而不是服务名-t
: 仅显示PID(与kill命令配合使用)kill -9
: 强制终止进程(SIGKILL信号)
Cheers