解决端口占用的情况

我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,更多的情况下,我们不只是需要找出是谁占用了这个端口,有时还需要占用者释放这个端口。下面将简单讲述下在 windows 和 linux 系统中如何去结束这个占用者的进程。

Windows

在 Windows 系统中我们可以使用 CMD 命令来实现这个功能。主要设计的命令包括 netstat findstr taskkill
通过帮助命令能够很好的获取到这三个命令的使用方式,或者点击文中的连接查看百度百科对其的解释和使用例子。

比如我们想停用 Tomcat 所占用的 8080 端口

netstat -ano | findstr ":8080"

输入上面的命令可以看见下面的输出

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       15496
  TCP    [::]:8080              [::]:0                 LISTENING       15496

从左到又每一列的意义为 协议、本地地址、外部地址、状态、PID 我们记下最后的值再使用 taskkill 命令来结束指定进程号的进程。

taskkill /f /t /pid 15496

然后你会看到如下的输出

成功: 已终止 PID 20816 (属于 PID 15496 子进程)的进程。
成功: 已终止 PID 15496 (属于 PID 17132 子进程)的进程。

到此端口就已释放,再通过 netstat 你将找不到 8080 端口的信息。

Linux

在 linux 环境下能够帮助找到进程号的命令。

  • 进程查看器-ps

Linux 中的 ps 命令是 Process Status 的缩写。 ps 命令用来列出系统中当前运行的那些进程。 ps 命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程。

ps -ef | grep tomcat
  • 网络服务和端口查询-netstat

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

netstat -antp | grep 8080
  • 一切皆文件 lsof
    lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。
lsof -i :8080
上一篇:The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in


下一篇:docker命令总结