0%

[problems solution] windows下 FATAL Port *** has been used排查

分析报错#

最近写博客时,遇到用hexo s指令失败报错的问题

1
2
3
4
5
FATAL Port 4000 has been used. Try other port instead.
FATAL {
err: Error: listen EADDRINUSE: address already in use :::4000
...
}

分析该报错,发现端口4000已经被占用

查找进程#

查找端口号 4000的网络占用

1
$netstat -ano|grep 4000
- -a 显示所有连接和侦听端口。 - -n 以数字形式显示地址和端口号。 - -o 显示拥有的与每个连接关联的进程 ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
协议      本地地址                外部地址                状态           PID(这一行输入netstat -ano 在头部会显示)
TCP 0.0.0.0:4000 0.0.0.0:0 LISTENING 21144
TCP 0.0.0.0:14000 0.0.0.0:0 LISTENING 21144
TCP 127.0.0.1:55016 127.0.0.1:55017 ESTABLISHED 24000
TCP 127.0.0.1:55017 127.0.0.1:55016 ESTABLISHED 24000
TCP [::]:4000 [::]:0 LISTENING 21144
TCP [::]:14000 [::]:0 LISTENING 21144
TCP [::1]:4000 [::1]:55146 TIME_WAIT 0
TCP [::1]:4000 [::1]:55147 TIME_WAIT 0
TCP [::1]:4000 [::1]:55152 TIME_WAIT 0
TCP [::1]:4000 [::1]:55166 TIME_WAIT 0
TCP [::1]:4000 [::1]:55167 TIME_WAIT 0
TCP [::1]:4000 [::1]:55174 TIME_WAIT 0
TCP [::1]:4000 [::1]:55177 TIME_WAIT 0
TCP [::1]:4000 [::1]:55178 TIME_WAIT 0
TCP [::1]:4000 [::1]:55183 TIME_WAIT 0
TCP [::1]:4000 [::1]:55186 TIME_WAIT 0
可以看到端口号 4000被 PID 21144占用

查找应用#

查找进程号包含 21144的所有进程

1
$ tasklist|findstr "21144"

1
2
映像名称                       PID  会话名                     会话  内存使用(这一行输入tasklist在头部会显示)
Code.exe 21144 Console 1 200,664 K

好家伙,就是这个Code.exe占用了

kill掉应用#

通过查看占用端口号的进程,可以直接杀掉进程(这一步谨慎操作,别杀了不能杀的进程,那就Good Game了)

1
2
3
4
5
taskkill /pid 21144 -f -t

or

taskkill /pid 21144 /f /t
- /pid processid 指定要终止的进程的 PID。 - /f 指定强制终止进程。 - /t 终止指定的进程和由它启用的子进程

reference#

  1. 在windows下查看端口被占用情况