当前位置: 首页 > news >正文

Linux服务器端口被占用?

一、10秒定位占用端口的进程

# 1. 查看指定端口(如80)的占用情况
sudo netstat -tulnp | grep :80
# 或使用更现代的ss命令(速度更快)
sudo ss -tulnp | grep :80# 2. 直接通过lsof查看(适合已知端口号)
sudo lsof -i :80

输出关键字段解读

  • PID/Program name:进程ID和程序名

  • STATELISTEN表示正在监听,ESTABLISHED表示活跃连接

  • FD:文件描述符(如23u表示IPv4,24u表示IPv6)


二、3种释放端口的解决方案
方案1:正常停止进程(推荐)
# 通过PID优雅停止进程(如Nginx)
sudo kill -15 <PID>      # 发送SIGTERM信号
# 确认端口已释放
sudo ss -tulnp | grep :80
方案2:强制杀死进程(顽固进程)
sudo kill -9 <PID>       # 发送SIGKILL信号
# 检查残留子进程
ps -ef | grep <PID>
方案3:释放TIME_WAIT状态端口(高频连接场景)
# 临时修改内核参数(立即生效)
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_tw_reuse
# 永久生效:添加到/etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

三、进阶排查技巧
1. 查看所有被占用的端口
sudo netstat -tuln | grep -E 'LISTEN|ESTAB'
# 或按端口号排序
sudo ss -tuln | sort -k 5 -n
2. 检测端口冲突服务
# 查看哪些服务试图监听同一端口
sudo systemctl list-units --type=service | grep -i "nginx\|apache"
3. 追踪端口占用历史
# 使用auditd审计(需先安装)
sudo auditctl -w /etc/httpd/ -p w -k web_port_conflict
sudo ausearch -k web_port_conflict | grep -i "port"

四、预防端口冲突的4个实践
  1. 服务配置检

    # 检查Nginx/Apache等服务的监听端口
    grep -r "listen" /etc/nginx/conf.d/
  2. 使用端口分配工具

    # 查询已注册端口(避免使用知名端口)
    cat /etc/services | grep -w "80/tcp"
  3. 防火墙规则优先

    # 在iptables/nftables中限制端口访问
    sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
  4. 容器环境隔离

    # Docker运行时指定端口映射
    docker run -p 8080:80 --name my_nginx nginx

五、典型案例分析

案例1:Nginx启动失败(80端口被Apache占用)

  • 现象nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

  • 解决

    sudo systemctl stop apache2   # 停止Apache
    sudo systemctl start nginx    # 启动Nginx

案例2:Java应用端口未释放(Tomcat崩溃后)

  • 排查

    sudo lsof -i :8080 | grep java
    # 发现僵尸进程
  • 方案

    sudo pkill -9 java           # 强制结束Java进程
    sudo systemctl restart tomcat
http://www.xdnf.cn/news/1144549.html

相关文章:

  • 【leetcode】3202. 找出有效子序列的最大长度(2)
  • RV126平台NFS网络启动终极复盘报告
  • 二进制专项
  • 分表聚合助手类
  • 常用的折叠展开过渡动画效果css
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • Python数据类型探秘:解锁编程世界的魔法钥匙
  • JavaScript 的垃圾回收机制
  • Maven下载安装与idea配置
  • FLTK UI窗口关闭时延时卡顿问题全流程分析与优化实战
  • 探索 Vue 3.6 的新玩法:Vapor 模式开启性能新篇章
  • 帆软可视化图
  • Vue3 从 0 到 ∞:Composition API 的底层哲学、渲染管线与生态演进全景
  • JavaScript笔记
  • 【JS笔记】Java Script学习笔记
  • C#将【程序集引用-依赖关系】展示到NetronLight图表中
  • Java 核心工具类 API 详解(一):从 Math 到 Runtime 的实用指南
  • 设计模式五:桥模式(Bridge Pattern)
  • wedo牛-----第47节(免费分享图纸)
  • MBIST - Memory BIST会对memory进行清零吗?
  • 基于单片机的便携太阳能光伏系统研究
  • C语言—如何生成随机数+原理详细分析
  • 20250718-FDU-HDUOJ钉耙编程一
  • 初探:C语言FILE结构之文件描述符与缓冲区的实现原理
  • 更适合后端宝宝的前端三件套之HTML
  • CentOS7 内网服务器yum修改
  • 有好内容,如何做好知识变现?
  • 【Zephyr开发实践系列】08_NVS文件系统调试记录
  • GEV/POT/Markov/点过程/贝叶斯极值全解析;基于R语言的极值统计学
  • 【案例教程】基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析实践技术应用