2019-01-01 · Tools

端口占用?停止进程

我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,更多的情况下,我们不只是需要找出是谁占用了这个端口,有时还需要占用者释放这个端口。下面将简单讲述下在 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 环境下能够帮助找到进程号的命令。

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

ps -ef | grep tomcat

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

netstat -antp | grep 8080
lsof -i :8080

拿到进程号后就可以使用 kill 进行结束

kill -9 $PID