Django 运行 runserver 端口占用,报错:Errno 10013

运行 django runserver 的时候,出现 Error 10013,即 8000 端口被占用。

使用 apache wsgi 也是说端口占用。

不想换端口,有一段快捷方式在浏览器上呢,所以需要找出那个占用端口的进程,然后杀掉。

1、查看所有的端口占用情况

C:\Users\Administrator\>netstat -ano

活动连接

  协议  本地地址          外部地址        状态           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       764
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:1718           0.0.0.0:0              LISTENING       392
  TCP    0.0.0.0:2425           0.0.0.0:0              LISTENING       248
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       9416
  TCP    0.0.0.0:3690           0.0.0.0:0              LISTENING       2620
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       3108
  TCP    0.0.0.0:11211          0.0.0.0:0              LISTENING       1708
  TCP    0.0.0.0:15576          0.0.0.0:0              LISTENING       392
  TCP    0.0.0.0:30985          0.0.0.0:0              LISTENING       248
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING       456
  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING       828
  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING       964
  TCP    0.0.0.0:49157          0.0.0.0:0              LISTENING       568
  TCP    0.0.0.0:49173          0.0.0.0:0              LISTENING       556
  TCP    127.0.0.1:49155        127.0.0.1:49156        ESTABLISHED     1708
  TCP    127.0.0.1:49156        127.0.0.1:49155        ESTABLISHED     1708
  TCP    192.168.25.99:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.25.99:49539    218.30.118.68:80       ESTABLISHED     2024
  TCP    192.168.25.99:49567    116.255.135.90:80      CLOSE_WAIT      248
  TCP    192.168.25.99:49748    114.112.66.186:80      ESTABLISHED     2520
  TCP    192.168.25.99:50320    74.125.31.125:5222     ESTABLISHED     2900
  TCP    192.168.25.99:50841    123.58.182.253:80      ESTABLISHED     3880
  TCP    192.168.25.99:50945    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50946    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50954    114.112.66.109:80      ESTABLISHED     392
  TCP    192.168.25.99:50955    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50956    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50957    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50958    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50959    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50960    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50961    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    192.168.25.99:50962    123.58.182.251:443     CLOSE_WAIT      3880
  TCP    [::]:135               [::]:0                 LISTENING       764
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:3306              [::]:0                 LISTENING       9416
  TCP    [::]:11211             [::]:0                 LISTENING       1708
  TCP    [::]:49152             [::]:0                 LISTENING       456
  TCP    [::]:49153             [::]:0                 LISTENING       828
  TCP    [::]:49154             [::]:0                 LISTENING       964
  TCP    [::]:49157             [::]:0                 LISTENING       568
  TCP    [::]:49173             [::]:0                 LISTENING       556
  UDP    0.0.0.0:500            *:*                                    964
  UDP    0.0.0.0:1900           *:*                                    392
  UDP    0.0.0.0:2425           *:*                                    248
  UDP    0.0.0.0:3600           *:*                                    2024
  UDP    0.0.0.0:4500           *:*                                    964
  UDP    0.0.0.0:5355           *:*                                    1236
  UDP    0.0.0.0:6235           *:*                                    392
  UDP    0.0.0.0:6445           *:*                                    392
  UDP    0.0.0.0:7908           *:*                                    392
  UDP    0.0.0.0:11211          *:*                                    1708
  UDP    0.0.0.0:11509          *:*                                    392
  UDP    0.0.0.0:58131          *:*                                    2024
  UDP    0.0.0.0:58173          *:*                                    2900
  UDP    127.0.0.1:59144        *:*                                    2024
  UDP    192.168.25.99:137      *:*                                    4
  UDP    192.168.25.99:138      *:*                                    4
  UDP    [::]:500               *:*                                    964
  UDP    [::]:4500              *:*                                    964
  UDP    [::]:5355              *:*                                    1236
  UDP    [fe80::30df:1257:5ad3:e070%11]:546  *:*                                    828

难得找,直接查看指定端口的占用情况

C:\Users\Administrator\>netstat -aon|findstr "8000"
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       3108

也就是说这个该死的 3108 占用了我的 8000 端口。

2、查看 PID 等于 3108 的进程

C:\Users\Administrator\>tasklist|findstr "3108"

说明:不是我写漏了,结果是空,就是空,也就是说没有找到这个进程。
我也去任务浏览器中查看了进程表,没有发现 PID 等于 3108 的(如果任务管理器中没有 PID 这一项,可以在任务管理器中选"查看"-"选择列")。

3、不管了,直接结束 3108 进程

C:\Users\Administrator>taskkill /pid 3108

错误:没有找到进程 "3108"。

悲剧了,我的 8000 端口僵尸了!

见鬼了,我发现直接访问 8000 端口能打开 django 网页,试着重启一下,真的好了,原因不明。

PS:

为了验证方法没有错误,我关闭占用 3306 端口的进程(也就是 mysql 啦)试了一下。

C:\Users\Administrator\>netstat -aon|findstr "3306"
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       9416
  TCP    [::]:3306              [::]:0                 LISTENING       9416

C:\Users\Administrator\>tasklist|findstr "9416"

mysqld.exe                    9416 Services                   0     10,536 K

C:\Users\Administrator\>taskkill /f /t /pid 9416

成功:已终止 PID 为 9416 的进程。

也可以根据进程名称关闭进程:

C:\Users\Administrator\>taskkill /f /t /im mysqld.exe

PS:

还有一次运行 runserver 的时候突然爆出一个 10013 错误,网上的说法是 8000 端口被酷狗占用了(确实在听歌),只好改用 8080 端口。

没有验证是否真的是酷狗所致。

参考

1、运行 Django 出现 Error: [Errno 10013] 的错误 http://2015.iteye.com/blog/1786686
2、Windows 如何查看端口占用情况? http://www.iteye.com/topic/1117270