ADB cannot bind 'tcp:5037' ADB server didn't ACK

当我们在系统中使用多个不同源的adb时,特别容易浮现标题所述的错误:

adb server is out of date.  killing...
cannot bind 'tcp:5037'
ADB server didn't ACK
* failed to start daemon *
error: 

上述错误出现的原因是说,我们的adb 所绑定的端口,被其他服务占用了,或者说有多个服务占用了5037端口,导致彼此无法正常工作.

想印证上述猜测,可通过如下命令:

w@xxx:~$ adb nodaemon server

cannot bind 'tcp:5037'

下面就是查看那些服务占用了5037端口,找到那些服务,使用kill命令杀死他们.

查看端口使用状态,可使用netstart命令:

查看已经连接的服务端口:

netstart -a
查看所有服务,使用:

netstart -ap

在使用时,可以配合grep命令,使用.例如,我们要查看5037端口对于的服务,故:

netstat -ap|grep "5037"
输入如下:

(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
tcp        0      0 localhost:5037          *:*                     LISTEN      25255/adb       
tcp        0      0 localhost:51695         localhost:5037          ESTABLISHED 23836/adb       
tcp        0      0 localhost:5037          localhost:51695         ESTABLISHED 25255/adb       
我们可以看到,有多个adb服务,占用了5037端口,导致其无法正常工作.故:使用kill命令杀死所有的adb进程,重新使用adb start-server进行重启adb.

w@xxx:~/Tools/adt-bundle-linux-x86_64-20140702/sdk/tools$ kill 23836
w@xxx:~/Tools/adt-bundle-linux-x86_64-20140702/sdk/tools$ kill 25255

上述为ubuntu系统下的处理方式,window类同.


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。