当前位置: 首页 > 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.dtcms.com/a/286336.html

相关文章:

  • 无刷电机控制 - 基于STM32F405+CubeMX+HAL库+SimpleFOC04,完成霍尔传感器的驱动代码
  • @Scheduled的作用分析
  • 赛道观察:AI智能自习室哪家强?深挖深度逻辑与价值锚点
  • 链表算法之【链表的中间节点】
  • 【CMake】CMake 项目打包与 find_package 使用流程:从 A 到 B 的完整范例
  • 基于MATLAB的朴素贝叶斯NB的数据分类预测方法应用
  • 一种新颖的可解释人工智能框架,用于整合统计、视觉和基于规则的方法进行医学图像分类|文献速递-医学影像算法文献分享
  • Flutter ScaffoldMessenger 详细介绍
  • P1205 [USACO1.2] 方块转换 Transformations
  • 《通信原理》学习笔记——第四章
  • 【论文阅读】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework
  • Redis——BigKey
  • Radix-4 Booth乘法器计算步骤
  • 【AI论文】CLiFT:面向计算高效与自适应神经渲染的压缩光场标记
  • vue2 面试题及详细答案150道(41 - 60)
  • Node.js链接MySql
  • Vue常见指令
  • Java大厂面试实录:从Spring Boot到AI微服务架构的深度解析
  • 深度学习零基础入门(3)-图像与神经网络
  • UE5 一些关于过场动画sequencer,轨道track的一些Python操作
  • 力扣347:前K个高频元素
  • 科技照亮童心|激光院与跳伞塔社区开展公益活动
  • Day24| 93.复原IP地址、78.子集、90.子集II
  • NIO简单介绍和运用
  • MySQL计数函数count原理分析
  • 深入理解Linux文件I/O:系统调用与标志位应用
  • 区块链加密技术全景解析
  • 高效VLP蛋白表达|病毒样颗粒生产|疫苗研发平台
  • 【无标题】标准模型粒子行为与11维拓扑量子色动力学模型严格对应的全面论述
  • 文献分享0719