在Linux或类Unix系统中,你可以通过几种方法来根据端口号找到使用该端口的应用进程。以下是一些常用的方法:
1. 使用netstat
命令(已弃用,但部分系统仍可用)
虽然netstat
命令在许多现代Linux发行版中已被ss
命令取代,但它仍然可以在一些旧系统或安装了net-tools
包的系统上使用。
sudo netstat -tulnp | grep <端口号>
这里:
-t
表示TCP端口-u
表示UDP端口(如果只想查看TCP或UDP,可以省略一个选项)-l
表示仅显示正在监听的端口-n
表示直接以数字形式显示地址和端口号,不进行解析-p
表示显示监听端口的进程ID和程序名称(需要sudo权限)
2. 使用ss
命令
ss
是另一个用于检查套接字的工具,它是netstat
的现代替代品,并且通常更快。
sudo ss -tulnp | grep <端口号>
选项与netstat
命令相似。
3. 使用lsof
命令
lsof
(List Open Files的简写,尽管它实际上列出了打开的文件描述符,包括网络连接)是另一个强大的工具,可以用来查找哪个进程正在使用特定的端口。
sudo lsof -i :<端口号>
注意<端口号>
前的冒号是必需的,它表明你正在查找的是端口号而不是文件名。
4. 使用fuser
命令
fuser
命令也可以用来找到使用特定文件或套接字的进程。对于端口,你可以这样使用:
sudo fuser <端口号>/tcp
# 或者对于UDP端口
sudo fuser <端口号>/udp
注意
- 在使用上述命令时,请将
<端口号>
替换为你想要查询的实际端口号。 - 大多数命令(尤其是
netstat -p
、ss -p
和lsof
)需要sudo
权限来查看由其他用户运行的进程信息。 - 某些系统可能没有预装
net-tools
(包含netstat
),但通常会预装iproute2
(包含ss
)。如果netstat
不可用,尝试使用ss
。
选择哪种方法取决于你的具体需求和你的系统环境。ss
和lsof
是查找端口与进程关系时非常有用的工具。