
谁在用你的端口 ?运维1秒定位 !
2025年08月06日 21:02
以下文章来源于开源运维 ,作者开源运维
分享优质GitHub开源项目的安装教程。 在使用 Linux 系统进行开发或维护时,你可能遇到一个很麻烦的问题:某个端口被占用了,但你却不知道是哪一个进程在偷偷“霸占”。这篇文章将带你深入了解如何快速定位占用端口的元凶,并轻松解决问题。 端口是计算机网络中的入口或出口,用来帮助应用程序与外界通信,比如 HTTP 服务通常使用 80 端口,SSH 使用 22 端口。在多种服务并行运行时,系统会分配不同的端口。然而,如果某个端口已经被程序占用,想再次使用就会报错。定位是谁占用了端口,是解决问题的第一步。 举例来说,当你尝试运行一个 HTTP 服务时: 这时你需要知道 “到底是谁在用 8000 端口?” 常用工具: Linux 提供了两种简单的命令工具可以帮助你快速检查端口的占用情况: 基本用法: 示例输出: 解释: 基本用法: 示例输出: 解释: 一旦你确认是哪个进程占用端口,可以用 注意: 防止重复端口占用:启动服务时,可以通过检查端口是否被占用,避免不必要的错误。例如,可以在启动之前执行: 批量查看所有监听端口:使用 查看服务名与端口的绑定:运行以下命令可快速查阅常见服务名称与端口的配置: 掌握这些 Linux 工具,不仅能快速解决问题,还能让你充分理解系统的运行状态。 开源运维 .
什么是端口占用?
# 运行HTTP服务时端口被占用的典型报错
Error: listen EADDRINUSE: address already in use :::8000lsof
和 netstat
lsof
和 netstat
。1. 使用
lsof
定位端口占用lsof
是一个非常强大的工具,它的名字意为“list open files”(列出当前系统打开的文件)。联网服务通常被视为文件,所以可以用它来查看端口占用情况。# 使用 lsof 查看特定端口的占用情况
lsof -i:8000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1234 root 10u IPv4 123456 0t0 TCP *:8000 (LISTEN)node
)。:8000
)和状态(LISTEN
表示监听中)。2. 使用
netstat
查看端口状态netstat
是另一种工具,可以分析当前网络连接情况,显示哪些进程在监听哪些端口。# 使用 netstat 查看端口 8000 的占用
netstat -tunlp | grep 8000-t
:显示 TCP 连接。-u
:显示 UDP 连接。-n
:显示数字地址和端口,而不是别名。-l
:显示正在监听的端口。-p
:显示使用端口的程序及其 PID。tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1234/node
node
(PID: 1234)占用。进程杀掉该怎么办?
kill
命令结束进程。例如,以下命令将杀掉 PID 为 1234 的进程:kill -9 1234
-9
强制结束进程。请谨慎操作,确保不会意外结束关键的系统进程。一些实用的技巧
lsof -i:端口号
lsof -i -P -n
命令可以列出所有打开端口。lsof -i -P -n | grep LISTEN
cat /etc/services
总结
lsof
或 netstat
确认被占用的端口号以及对应的进程信息。kill
停止进程。