杀死占用某个端口的进程 (Windows, Mac, Linux)

1. Windows

启动tomcat时候,控制台报错,发现是端口占用,于是寻找方法关闭对应的程序。

从网上找了好久,尝试之后,发现不行。开始自己尝试,终于,成功的将占用端口的进程杀掉。在此记录下过程(以8081端口为例):

第一步,根据端口号查找对应的进程号

netstat -ano | findstr 80 //列出进程极其占用的端口,且包含 80

结果如下:

杀死占用某个端口的进程 (Windows, Mac, Linux)
杀死占用某个端口的进程 (Windows, Mac, Linux)

发现 8081 端口被 PID(进程号)为 2000 的进程占用。

第二步,据进程号寻找进程名称

tasklist | findstr 2000
杀死占用某个端口的进程 (Windows, Mac, Linux)
杀死占用某个端口的进程 (Windows, Mac, Linux)

从任务管理器中查找该程序,手动杀死即可。

至此,已经完成。

但是我发现,在任务管理器中找不到该程序。只好从命令行杀死该程序了,命令如下:

taskkill -PID <进程号> -F //强制关闭某个进程

如此即可。

 

2. Mac

如何查找某个端口是否被占用:

我们查找下 3009 端口当前被谁占用

justcode@mac$ lsof -i:3009

结果显示:

COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    14937 justcode  IPv4 0xc7e40c3b908f5c71      0t0  TCP *:pxc-ntfy (LISTEN)

可以看到一个node进程占用了 3009 端口.

如何关闭此进程:

justcode@mac$ kill -9 14937

ok,这样就结束了占用 3009 端口的进程.

 

3. Linux

1. 可以通过”netstat -anp” 来查看哪些端口被打开。
(注:加参数’-n’会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)
2. 然后可以通过”lsof -i:$PORT”查看应用该端口的程序($PORT指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。
(注:有些端口通过netstat查不出来,更可靠的方法是”sudo nmap -sT -O localhost”)
3. 若要关闭某个端口,则可以:
1)通过iptables工具将该端口禁掉,如:
“sudo iptables -A INPUT -p tcp –dport $PORT -j DROP”
“sudo iptables -A OUTPUT -p tcp –dport $PORT -j DROP”
2)或者关掉对应的应用程序,则端口就自然关闭了,如:
“kill -9 PID” (PID:进程号)
如:    通过”netstat -anp | grep ssh”
有显示:    tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh
则:    “kill -9 7546”

 

本文:杀死占用某个端口的进程 (Windows, Mac, Linux)

Leave a Reply