Java:检查哪些进程绑定到端口?

Java:检查哪些进程绑定到端口?,java,exception,netbeans,binding,port,Java,Exception,Netbeans,Binding,Port,我正在用Netbeans开发一个应用程序,它使用的是JavaDB。我可以连接到它并执行查询,但由于某种原因,Netbeans中的“Output-JavaDB Database Process”窗格一直显示 Security manager installed using the Basic server security policy. Could not listen on port 1527 on host localhost: java.net.BindException: Addres

我正在用Netbeans开发一个应用程序,它使用的是JavaDB。我可以连接到它并执行查询,但由于某种原因,Netbeans中的“Output-JavaDB Database Process”窗格一直显示

Security manager installed using the Basic server security policy.
Could not listen on port 1527 on host localhost:
 java.net.BindException: Address already in use
如何找到已在使用的进程,或绑定到该端口的进程



在UbuntuKarmic上,Netbeans 6.7.1有两个程序可以帮助你解决这个问题,分别是“lsof”和“netstat”,它们都可以提供这些信息。我会给你打电话给他们的理由,但我用我的超大iPhone来回答,它太麻烦了,无法查找。这是留给读者的练习;-)

要查找监听端口1527的进程的pid,请使用:

$ netstat -ap | grep 1527
tcp6       0      0 localhost:1527          [::]:*                  LISTEN      31962/java      

然后:

$ ps aux | grep 31962 | grep -v grep
pascal   31962  0.1  0.2 674936  4172 pts/1    Sl   May08   1:23 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start
我很确定您会发现与JavaDB相对应的Java进程的pid(除了JavaDB之外,我不知道有多少进程使用端口1527)。你是怎么开始的


PS:我使用的是命令行上启动的JavaDB,在任何IDE之外。

请指定您的操作系统,最简单的方法是操作系统-specific@JohnFeminella:我在Ubuntu Karmic+1上,检查@Pascal Thivent:谢谢你的回答,是正确的!>你是怎么开始的?我检查了PPID,看起来Netbeans有两个JavaDB实例同时运行(我不知道是怎么发生的)-它通常只有一个。如果您不知道端口或有多个端口,可以运行这个命令,而不是第一个命令来获取PID列表
netstat-ap | grep-tcp | grep-java | grep-LISTEN | awk{print$7}| sed's-/java--| sort | uniq
如果有人知道如何将其导入第三部分,请发表评论。我想很多人都会遇到这种情况,把它作为一个班轮是非常有帮助的。
$ ps aux | grep 31962 | grep -v grep
pascal   31962  0.1  0.2 674936  4172 pts/1    Sl   May08   1:23 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start