Linux端口被哪个程序占用?

在 Linux 中查看端口占用程序:,1. **netstat -tulpn | grep **:查看监听端口的进程名和 PID。,2. **lsof -i :**:直接列出占用指定端口的进程信息。,3. **ss -tulpn | grep **:更现代的替代命令,功能类似 netstat。,通常需要 root 权限才能查看所有进程信息。

🔍 方法一:使用 ss 命令(推荐)

ss(Socket Statistics)是替代 netstat 的现代工具,执行速度快且默认预装:

Linux端口被哪个程序占用?

sudo ss -tulnp | grep :端口号

示例(查看80端口):

sudo ss -tulnp | grep :80

输出解析

tcp   LISTEN 0  128  *:80  *:*  users:(("nginx",pid=1234,fd=18))
  • nginx:进程名称
  • pid=1234:进程ID
  • fd=18:文件描述符

⚙️ 方法二:使用 lsof 命令

lsof(List Open Files)可查看文件与端口的关联:

sudo lsof -i :端口号

示例(查看3306端口):

sudo lsof -i :3306

输出解析

Linux端口被哪个程序占用?

mysqld  5678  mysql  34u  IPv6  0xabcd1234  0t0  TCP *:mysql (LISTEN)
  • mysqld:进程名
  • 5678:进程PID
  • mysql:运行用户

💡 若未安装:sudo apt install lsof(Debian/Ubuntu)或 sudo yum install lsof(RHEL/CentOS)


📡 方法三:使用 netstat 命令(传统方案)

netstat 兼容性广,但部分新系统需手动安装:

sudo netstat -tulnp | grep :端口号

常用参数

  • -t:TCP端口
  • -u:UDP端口
  • -l:仅监听端口
  • -n:禁用域名解析(加速)
  • -p:显示进程信息

🛠️ 方法四:使用 fuser 命令

直接通过端口号查询进程:

sudo fuser 端口号/tcp

示例(终止占用8080的进程):

Linux端口被哪个程序占用?

sudo fuser -k 8080/tcp  # -k 选项终止进程

⚖️ 方法对比与选择建议

工具 速度 预装情况 功能亮点
ss ⚡️ 极快 多数系统 信息简洁,性能最优
lsof ⚡️ 快 需手动安装 支持查看文件关联细节
netstat 🐢 较慢 部分预装 兼容性强,语法易记
fuser ⚡️ 快 通常预装 快速终止进程

🔧 实战案例:解决端口冲突

场景:启动Nginx时报错 80端口被占用

  1. 查找进程:
    sudo ss -tulnp | grep :80
  2. 发现占用进程PID为 1234(假设为旧Apache进程)
  3. 终止进程:
    sudo kill 1234          # 正常终止
    sudo kill -9 1234       # 强制终止(慎用)
  4. 重新启动Nginx:
    sudo systemctl start nginx

⚠️ 注意事项

  1. 权限要求:查询系统级端口需 sudo 权限
  2. 谨慎终止进程:避免误杀关键服务(如数据库)
  3. 临时端口TIME_WAIT 状态端口属正常释放过程,无需处理
  4. 服务自启:若重启后端口仍被占,检查系统服务(如 systemctl list-unit-files

掌握 sslsofnetstatfuser 四类工具,可覆盖所有端口排查场景,推荐优先使用 sslsof 获取详细信息,结合 killfuser -k 安全释放端口,定期检查端口占用能有效预防服务异常,提升系统稳定性。

引用说明

  • 工具文档:man ss, man lsof, man netstat, man fuser
  • 协议标准:IEEE 802.3, TCP/IP RFC 793
  • 系统支持:适用于Linux kernel 2.6+及主流发行版(Ubuntu, CentOS, RHEL等)

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/18820.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月11日 00:26
下一篇 2025年6月11日 00:35

相关推荐

  • Linux如何快速安装Tomcat?

    下载Tomcat的tar.gz包,解压到目标目录,确保已安装Java并设置JAVA_HOME环境变量,进入Tomcat的bin目录,执行./startup.sh启动服务,最后通过浏览器访问http://服务器IP:8080验证安装。

    2025年6月3日
    000
  • 快速检查Linux端口开放状态

    使用nc -zv 主机名 端口命令快速测试TCP端口连通性;或通过telnet 主机名 端口检查连接状态;nmap -p 端口 主机名可批量扫描端口开放情况。

    2025年6月12日
    000
  • Linux安装Tomcat最佳方案?

    下载Tomcat压缩包,解压到指定目录,配置环境变量(可选),进入bin目录执行./startup.sh启动服务,验证端口8080访问即可。

    2025年6月15日
    100
  • 怎样测试Linux防火墙端口

    使用telnet、nc或nmap工具测试Linux防火墙端口:,1. **telnet/nc**:telnet 或 nc -zv ,连接成功(无错误)表示端口开放,失败(如超时/拒绝)表示关闭或被阻。,2. **nmap**:nmap -p 明确显示端口状态(open/filtered/closed)。,3. **检查防火墙规则**:iptables -L -n 或 ufw status 查看是否允许目标端口流量。

    2025年6月12日
    100
  • Linux如何安装tar.gz文件?

    解压文件:tar -xzvf 文件名.tar.gz ,进入目录:cd 解压后的文件夹 ,编译安装:依次执行 ,./configure ,make ,sudo make install ,(具体步骤以软件内INSTALL文档为准)

    2025年6月9日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN