📌  相关文章
📜  查找哪个服务正在使用端口 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:23.510000             🧑  作者: Mango

查找哪个服务正在使用端口 - Shell/Bash

有时候我们会遇到端口被占用的情况,需要找出哪个服务或程序正在使用该端口。本文将介绍在Shell/Bash下如何查找哪个服务正在使用端口。

方式一:使用netstat
netstat -nlp | grep <端口号>
  • -n表示不进行域名解析
  • -l表示列出所有在监听状态下的socket
  • -p表示显示哪个进程在监听端口

例如,我们要查找8080端口正在使用的服务:

netstat -nlp | grep 8080

返回结果类似于:

tcp6       0      0 :::8080                 :::*                    LISTEN      12345/java

其中12345/java表示该端口正在被java进程占用。

方式二:使用lsof
lsof -i:<端口号>

例如,我们要查找端口为8080的服务:

lsof -i:8080

返回结果类似于:

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    12345 user   42u  IPv6  12345      0t0  TCP *:http-alt (LISTEN)

其中java表示该端口正在被java进程占用。

总结

使用netstatlsof都可以查找哪个服务正在使用端口,两种方式各有优劣。netstat是系统自带的工具,使用起来比较简单,但有些情况下需要使用grep筛选结果。lsof则是第三方工具,需要先安装,但可以直接通过指定端口查找结果。