天道酬勤,学无止境

How to find process using TCP port?

After starting a http a couple of times I get this error like an instance of Go has not stopped!?

listen tcp :9000: bind: address already in use

I have experienced something like this with nodejs too but I was able to kill the process.. Unfortunately it seems like I can't find the process id and kill it..

How to "free" the tcp port?

标签

评论

If you are on unix like system you can use netstat to find out which process is listening on a port:

sudo netstat -nlp | grep 9000

Turns out the -p option is not available on OS X. If you are using OS X you can do this:

lsof -n -i4TCP:$PORT | grep LISTEN

Who is listening on a given TCP port on Mac OS X?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何根据端口查找进程并将它们全部杀死? [复制](How to find processes based on port and kill them all? [duplicate])
    问题 这个问题在这里已经有了答案: 如何杀死在 Linux 中的特定端口上运行的进程? (30 个回答) 3年前关闭。 根据端口号查找进程并将其全部杀死。 ps -efl | grep PORT_NUMBER | kill -9 process_found_previously 如何完成最后一栏? 回答1 ps -efl | grep PORT_NUMBER的问题ps -efl | grep PORT_NUMBER ps -efl | grep PORT_NUMBER是PORT_NUMBER也可以匹配ps输出中的其他列(日期、时间、pid 等)。 如果由 root 运行,潜在的杀戮狂潮! 我会这样做: PORT_NUMBER=1234 lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill 命令分解 ( lsof -i tcp:${PORT_NUMBER} ) -- 列出在该 tcp 端口上侦听的所有进程 ( awk 'NR!=1 {print $2}' ) -- 忽略第一行,打印每行的第二列 ( xargs kill ) - 将结果作为参数传递给kill 。 可能有几个。 回答2 1.) lsof -w -n -i tcp:8080 2.) kill -9 processId 回答3 建议使用 fuser
  • Thread-safe way to find the next TCP port in .NET (over multiple processes)
    Note that you can find a similar question here: Find the next TCP port in .NET My problem is that the solution (accepted answer) of this question is not thread-safe: Find the next TCP port in .NET - Top answer static int FreeTcpPort() { TcpListener l = new TcpListener(IPAddress.Loopback, 0); l.Start(); int port = ((IPEndPoint)l.LocalEndpoint).Port; l.Stop(); return port; } I wrote a test which proves that: private readonly BlockingCollection<int> _freePorts = new BlockingCollection<int>(); [Test] public void FreeTcpPort_ShouldBeThreadSafe() { // Act Parallel.For(0, 10000, index => { int
  • 查找在Windows上使用端口的进程的PID(Find the PID of a process that uses a port on Windows)
    问题 使用经典启动时,我的服务崩溃了: java.rmi.server.ExportException: Listen failed on port: 9999 我如何找到杀死它的过程? 回答1 只需打开命令外壳并键入(假设您的端口为123456): netstat -a -n -o | find "123456" 您将看到所需的一切。 标头为: Proto Local Address Foreign Address State PID TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111 回答2 查找使用Windows上的端口(例如,端口:“ 9999”)的进程的PID netstat -aon | find "9999" -a显示所有连接和侦听端口。 -o显示与每个连接关联的拥有进程ID。 -n以数字形式显示地址和端口号。 输出: TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776 然后通过PID终止进程 taskkill /F /PID 15776 /F指定强制终止进程。 注意:您可能需要额外的权限(由管理员运行)才能杀死某些特定进程 回答3 命令: netstat -aon | findstr 4723 输出: TCP 0.0.0.0:4723 0.0.0.0:0 LISTENING 10396 现在
  • 如何找到Windows中使用端口80的程序? [复制](How do I find which program is using port 80 in Windows? [duplicate])
    问题 这个问题已经在这里有了答案: 您如何找出Windows上正在侦听TCP或UDP端口的进程? (33个答案) 5年前关闭。 如何找到Windows中使用端口80的程序? 我找不到 回答1 开始菜单→附件→右键单击“命令提示符”。 在菜单中,单击“以管理员身份运行” (在Windows XP上,您可以照常运行它),运行netstat -anb ,然后查看程序的输出。 顺便说一句,Skype默认情况下尝试使用端口80和443进行传入连接。 您还可以运行netstat -anb >%USERPROFILE%\ports.txt然后start %USERPROFILE%\ports.txt以在文本编辑器中打开端口和进程列表,在其中可以搜索所需的信息。 您还可以使用PowerShell解析netstat输出并以更好的方式呈现(或以您想要的任何方式对其进行处理): $proc = @{}; Get-Process | ForEach-Object { $proc.Add($_.Id, $_) }; netstat -aon | Select-String "\s*([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+)?\s+([^\s]+)" | ForEach-Object { $g = $_.Matches[0]
  • Linux - 查看端口的占用情况、找出并杀死占用进程的方法
    本篇博文以 Cent OS 为例, 演示 Linux 系统下如何查看某个网络端口的占用情况, 并找出占用某个端口的进程, 以及杀死相关进程的方法.目录1 lsof查看端口的占用情况1.2 查看某一端口的占用情况1.3 杀死某个端口的所有进程1.1 命令使用示例2 netstat查看端口占用情况2.1 命令使用示例2.2 查看占用某个端口的进程2.3 杀死某个端口的占用进程参考资料版权声明1 lsof查看端口的占用情况1.1 命令使用示例# 命令为 lsof -i [root@onepiece ~]# lsof -i # 将会显示 命令 + 进程ID + 进程所属用户, 以及监听的协议、状态等信息 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 728 root 6u IPv4 11262 0t0 UDP *:bootpc ntpd 839 ntp 16u IPv4 13671 0t0 UDP *:ntp ntpd 839 ntp 18u IPv4 13677 0t0 UDP localhost:ntp注意: 若提示无此命令, 则需要安装, 命令如下:[root@onepiece ~]# lsof -i -bash: lsof: command not found [root@onepiece ~]# yum
  • 如何以编程方式获取正在侦听某个端口的进程的 pid?(How to get the pid of a process that is listening on a certain port programmatically?)
    问题 我必须编写一个 SNMP 模块来监视我也编写的某个服务器应用程序。 问题是我必须知道这个应用程序是否正在运行,我应该能够随时杀死它。 我知道应用程序正在侦听的端口(读取应用程序配置文件),我可以尝试将此端口绑定到套接字,以便了解我的应用程序或其他应用程序是否正在使用它(或未使用)对于我的模块。 这是代码: int get_server_status() { struct sockaddr_in local; int port,sockfd; if (parse_config_file(&port,NULL,CONFIG_FILE_PATH) == -1) return -1; //Error if ((sockfd = socket ( AF_INET, SOCK_STREAM, 0 )) < 0) return -1; //Error local.sin_family = AF_INET; local.sin_port = htons ( port ); local.sin_addr.s_addr = inet_addr ("127.0.0.1"); if (bind(sockfd, (struct sockaddr *) &local, sizeof (local) ) < 0 ){ if(errno == EADDRINUSE) return 1; //Port
  • 用于查看特定端口的命令行(Command line for looking at specific port)
    问题 是否可以通过Windows命令行检查特定端口的状态? 我知道我可以使用netstat检查所有端口,但是netstat速度很慢,查看特定端口可能不是。 回答1 这是寻找端口的简单解决方案... 在cmd中: netstat -na | find "8080" 在bash中: netstat -na | grep "8080" 在PowerShell中: netstat -na | Select-String "8080" 回答2 您可以将netstat与-np标志结合使用,并可以使用管道将它们连接到find或findstr命令。 基本用法如下: netstat -np <protocol> | find "port #" 因此,例如要检查TCP上的端口80,可以执行以下操作: netstat -np TCP | find "80" netstat -np TCP | find "80"最终给出以下输出: TCP 192.168.0.105:50466 64.34.119.101:80 ESTABLISHED TCP 192.168.0.105:50496 64.34.119.101:80 ESTABLISHED 如您所见,这仅显示了TCP协议在端口80上的连接。 回答3 我用: netstat –aon | find "<port number>" 这里o表示进程ID。 现在
  • 如何在Windows中使用localhost上的端口杀死当前进程?(How do I kill the process currently using a port on localhost in Windows?)
    问题 如何删除已经分配给端口的当前进程/应用程序? 例如: localhost:8080 回答1 步骤1: 打开cmd.exe(注意:您可能需要以管理员身份运行它,但这并不总是必须的),然后运行以下命令: netstat -ano | findstr :<PORT> (将<PORT>替换为所需的端口号,但保留冒号) 以红色圈出的区域显示PID(过程标识符)。 找到正在使用所需端口的进程的PID。 第2步: 接下来,运行以下命令: taskkill /PID <PID> /F (这次没有冒号) 最后,您可以通过重新运行“步骤1”中的命令来检查操作是否成功。 如果成功,您将不会再看到该端口号的搜索结果。 回答2 第1步(KavinduWije撰写的公认答案中与此相同): netstat -ano | findstr :yourPortNumber 在步骤2中更改为: tskill typeyourPIDhere 注意: taskkill在某些git bash终端中不起作用 回答3 使用Windows 10默认工具: 第一步: 以管理员身份打开Windows PowerShell 第二步: 查找端口8080的PID(ProcessID): netstat -aon | findstr 8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTEN 77777 第三步:
  • 如何在 TCP 连接中查找 IP:传入客户端的端口(How to find IP:Port of incoming client in TCP Connection)
    问题 收到来自conn, err := listener.Accept()的连接后conn, err := listener.Accept() ,我想在conn的另一端找到客户端的地址。 我试过用conn.LocalAddr()和conn.RemoteAddr() (文档)来做这conn.LocalAddr() 。 .LocalAddr()只是给出服务器进程的地址。 .RemoteAddr()为客户端提供了正确的 IP,但端口号与我知道要绑定到的客户端的端口号截然不同。 如果它有任何区别,我会在同一台机器上运行两个单独的进程来执行此操作。 一个是客户端,一个是服务器。 关于如何找到正确的 IP: 客户端端口的任何想法? 我是使用LocalAddr还是RemoteAddr ? 回答1 在 OSX 上,使用 go 1.4, conn.RemoteAddr()报告的主机/端口组合与 netstat 输出相比是正确的。 package main import ( "fmt" "net" "time" ) func main() { ln, err := net.Listen("tcp", ":8080") if err != nil { panic(err) } for { conn, err := ln.Accept() if err != nil { panic(err) } fmt
  • 停止所有node.js服务器实例(stop all instances of node.js server)
    问题 这是我第一次使用Node.js,遇到了这个问题: 我已经通过IDE的插件启动了节点服务器。 不幸的是,我无法使用IDE的终端。 因此,我尝试从命令行运行脚本。 这是问题所在-我正在使用Express模块​​,而我的应用程序正在监听某些端口(8080)。 当我从命令行启动应用程序时,它将引发以下错误: events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:770:11) at HTTPServer.Server._listen2 (net.js:910:14) at listen (net.js:937:10) at HTTPServer.Server.listen (net.js:986:5) at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load
  • Grails:解决“服务器无法启动端口8080:地址已在使用中。”(Grails: Resolving “Server failed to start for port 8080: Address already in use.”)
    问题 尝试解决“ Server failed to start for port 8080: Address already in use ”时出现此错误 Error executing script 8888: For input string: "" 有人可以帮忙吗? 不知道怎么了谢谢。 回答1 当端口号8080已经使用并且要重用同一端口时,应终止其进程: 首先,检查使用端口8080的进程的pid。为此,请运行: lsof -w -n -i tcp:8080 在上面的示例中,对于使用端口9090的进程,pid为3812 注意PID。 PID在您的机器上可能不同。 我们需要执行以下命令: 因此,您将必须通过运行应用程序对其进行测试: grails run-app 更新:作为lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}' lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}'是PID,您可以通过PID自动lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}'端口进程: kill -9 `lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}
  • Rails 服务器说端口已使用,如何终止该进程?(Rails server says port already used, how to kill that process?)
    问题 我在 mac 上,正在做: rails server 我得到: 2010-12-17 12:35:15] INFO WEBrick 1.3.1 [2010-12-17 12:35:15] INFO ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0] [2010-12-17 12:35:15] WARN TCPServer Error: Address already in use - bind(2) Exiting 我知道我可以在一个新端口上启动一个,但我想终止这个进程。 回答1 假设您要终止端口 3000(这是 webrick 通常使用的端口)上的任何内容,请在终端中键入以下内容以找出进程的 PID: $ lsof -wni tcp:3000 然后,使用 PID 列中的数字来终止进程: $ kill -9 PID 回答2 kill -9 $(lsof -i tcp:3000 -t) 回答3 您需要使用 tcp 端口 3000 获取程序的进程 id。要获取进程 id lsof -i tcp:3000 -t 然后使用该进程 ID,只需使用 ubuntu kill 命令杀死进程。 kill -9 pid 或者只是运行下面提到的组合命令。 它将首先获取 pid,然后终止该进程。 kill -9 $(lsof -i tcp:3000 -t) 回答4
  • 如何从多个 IP 数据包重建 TCP 流?(How to reconstruct TCP stream from multiple IP packets?)
    问题 我正在开发基于 TUN 的 VPN 服务器,其目标是在将接收到的数据包转发到目的地之前对其进行分析。 目前我正在接收来自 TUN 接口的 IP 数据包,并且只是将它们未经修改地发送到目的地。 我知道分析 UDP 数据包的内容就像剥离 IP 和 UDP 标头一样简单。 但是,要分析 TCP 流量的内容,我需要从多个 IP 数据包中重建消息。 有没有一种简单的方法可以在不重新实现 TCP 的情况下做到这一点? 是否有任何易于访问的 C/C++ 库用于此任务? 我更喜欢 Linux 系统库和/或开源、非病毒/非 copyleft 库。 我已经考虑过的一件事是制作每个 IP 数据包的副本,并将副本的目标 IP 更改为 localhost,以便我的服务器的不同部分可以接收这些 TCP 请求和响应,这些请求和响应完全重建并且没有标头。 但是,我无法将目标 IP 与流量内容相关联,这是我想要的。 回答1 您需要的功能很可能总是与数据包剖析紧密结合。 真正需要好的协议解析器来提取所需的信息。 所以我的建议是使用最好的开源工具——wireshark.org 它提供“跟随 TCP 流”功能: 我看起来不像你可以轻松提取 Wireshark 解剖逻辑的一部分,但至少有一个很好的例子 packet-tcp: typedef struct _tcp_flow_t { guint32 base_seq
  • 如何确定Windows进程在C#中使用的TCP端口(How to determine tcp port used by Windows process in C#)
    问题 是否有托管类/方法来提供特定Windows进程使用的TCP端口号? 我真的在寻找等效于以下CMD行的.NET: netstat -ano |find /i "listening" 回答1 除PID以外,请看以下内容: IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] endPoints = ipProperties.GetActiveTcpListeners(); TcpConnectionInformation[] tcpConnections = ipProperties.GetActiveTcpConnections(); foreach (TcpConnectionInformation info in tcpConnections) { Console.WriteLine("Local: {0}:{1}\nRemote: {2}:{3}\nState: {4}\n", info.LocalEndPoint.Address, info.LocalEndPoint.Port, info.RemoteEndPoint.Address, info.RemoteEndPoint.Port, info.State.ToString()); }
  • How can you find out which process is listening on a TCP or UDP port on Windows?
    How can you find out which process is listening on a TCP or UDP port on Windows?
  • 尝试从 Spring Tool Suite IDE 重新部署项目时,8080 端口已经出现问题(8080 port already taken issue when trying to redeploy project from Spring Tool Suite IDE)
    问题 当我尝试在我的 Spring Tool Suite 中修改 Spring 项目时,我遇到了奇怪的事情。 在第一次加载(部署)时一切正常,应用程序编译并在 localhost:8080 上运行 当我更改代码中的某些内容并尝试重新部署它时(再次运行 - 作为 Spring Boot 应用程序运行),我收到错误消息 **************************** 应用程序无法启动描述: 配置为侦听端口 8080 的 Tomcat 连接器无法启动。 端口可能已在使用中,或者连接器可能配置错误。 行动: 验证连接器的配置,识别并停止侦听端口 8080 的任何进程,或将此应用程序配置为侦听另一个端口。 2016 年 10 月 19 日 00:01:22.615 信息 10988 --- [主要] ationConfigEmbeddedWebApplicationContext:关闭 org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3023df74:启动日期 [星期三:19 年 10 月 19 日:C10000] 上下文层次结构的根 2016-10-19 00:01:22.616 INFO 10988 --- [main]
  • How to find IP:Port of incoming client in TCP Connection
    After receiving a connection from conn, err := listener.Accept(), I want to find the address of the client at the other end of the conn. I've tried doing this with conn.LocalAddr() and conn.RemoteAddr() (Documentation). .LocalAddr() just gives the address of the server's process. .RemoteAddr() gives the right IP for the client but a very different port number from what I know the client to be binded to. If it makes any difference, Im doing this with two separate processes running on the same machine. One is a client, one is a server. Any ideas as to how else I can find the correct IP:Port of
  • 您如何找出Windows上正在侦听TCP或UDP端口的进程?(How can you find out which process is listening on a TCP or UDP port on Windows?)
    问题 您如何找出Windows上正在侦听TCP或UDP端口的进程? 回答1 新答案,PowerShell TCP协议 Get-Process -Id (Get-NetTCPConnection -LocalPort YourPortNumberHere).OwningProcess UDP协议 Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess 旧答案,cmd C:\> netstat -a -b (添加-n可以阻止它尝试解析主机名,这将使其速度大大提高。) 注意Dane对TCPView的建议。 看起来非常有用! -a显示所有连接和侦听端口。 -b显示创建每个连接或侦听端口所涉及的可执行文件。 在某些情况下,众所周知的可执行文件包含多个独立的组件,在这些情况下,将显示创建连接或侦听端口所涉及的组件顺序。 在这种情况下,可执行文件的名称在底部的[]中,在顶部是其调用的组件,依此类推,直到达到TCP / IP。 请注意,此选项可能很耗时,除非您拥有足够的权限,否则它将失败。 -n以数字形式显示地址和端口号。 -o显示与每个连接关联的拥有进程ID。 回答2 Windows有一个本机GUI: 开始菜单→所有程序→附件→系统工具→资源监视器或运行resmon.exe ,
  • 运行 ng serve 命令时“端口 4200 已在使用中”(“Port 4200 is already in use” when running the ng serve command)
    问题 我正在学习 angular 2,这是我第一次使用 angular CLI 项目来创建沙箱项目。 我能够运行命令“ng serve”并且效果很好。 我想阻止它运行,所以我运行了“Control Z”。 当我再次尝试运行“ng-serve”命令时,它给我“端口 4200 已在使用中”。 我运行“PS”来获取PID列表并杀死angular-cli的PID并再次运行“ng-serve”它仍然给出相同的端口使用错误。 回答1 这是我用来杀死端口 4200 上的进度的 对于 linux 用户: sudo kill $(sudo lsof -t -i:4200) 你也可以试试这个: sudo kill `sudo lsof -t -i:4200` 对于 Windows 用户: 端口号 4200 已被使用。 以管理员身份打开cmd。 在cmd中输入以下命令: netstat -a -n -o 然后,通过右键单击终端并单击查找,找到端口号为 4200 的端口,在“查找内容”中输入 4200,然后单击“查找下一个”:假设您发现端口号 4200 被 pid 18932 使用。键入以下命令指令: taskkill -f /pid 18932 对于 UNIX: alias ngf='kill -9 $(lsof -t -i:4200);ng serve' 现在从项目文件夹在终端中运行ngf
  • windows查看端口占用情况
    windows下dos命令窗口输入netstat -ano即可查看端口使用情况,如果要查看指定端口是否被占用可以使用命令netstat -ano|findstr 端口号,例如要查看8080端口号是否已经被占用就使用命令netstat -ano|findstr 8080 如果结果为空则说明没有被使用,如果有值则说明已经被使用,最后一列为使用8080端口号的进程ID。 使用ntsd -c q -p PID命令杀掉占用端口的进程,其中PID为占用端口的进程号,上一步查找到的端口号,也可以使用taskkill /PID PID 命令杀掉进程。 使用tasklist /fi “pid eq 5764” 命令查看进程号对应进程信息 开始–运行–cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-“选择列” 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的9050端口 1、Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:>netstat -ano 协议 本地地址 外部地址 状态 PID