Linux网络连接状态排查:从netstat到ss的运维实战指南
1. 网络连接状态运维的“听诊器”在Linux系统运维和开发工作中网络连接状态是排查问题、分析性能、保障安全的第一手资料。无论是服务器响应变慢、端口冲突还是怀疑存在异常连接或潜在安全风险第一时间查看网络连接状态就像医生拿起听诊器一样是进行“诊断”的基础操作。对于系统管理员、后端开发、安全工程师乃至任何需要与服务器打交道的技术人员来说熟练使用相关命令是必备技能。很多人可能只知道一个netstat或者用过ss但不明就里。实际上Linux提供了从经典到现代的一系列工具如netstat、ss、lsof乃至直接查看/proc虚拟文件系统。它们各有侧重有的信息全面但稍显陈旧有的速度极快且信息详尽还有的能从进程视角看问题。理解这些工具的核心原理、输出列的含义以及组合使用技巧能让你在遇到网络问题时迅速定位到是哪个进程、通过哪个端口、与哪台远程主机建立了何种状态的连接从而高效地解决问题。本文将从一个资深运维的角度带你彻底搞懂如何查看和分析Linux系统的网络连接状态。2. 工具全景从 netstat 到 /proc在深入每个命令之前我们有必要先了解一下工具箱里都有什么以及为什么会有这么多选择。这背后其实是Linux网络栈和工具发展的一个缩影。2.1 经典之选netstatnetstatnetwork statistics是一个历史悠久的网络工具属于net-tools软件包。它的优点是功能全面、输出直观几乎在所有Linux发行版上都预装或易于安装。它可以显示路由表、网络接口统计信息、多播成员以及最重要的——网络连接状态。然而netstat在现代Linux系统上有一个明显的缺点性能。它通过直接读取/proc/net/tcp、/proc/net/udp等文件来获取信息并且在解析这些文件时为了将IP地址和端口号解析成可读的服务名如将22端口显示为ssh可能需要频繁进行DNS反向解析和/etc/services文件查找这在连接数巨大时例如数万并发会非常缓慢甚至可能拖慢系统。注意尽管存在性能问题netstat的语法和输出格式非常经典许多脚本和运维人员的使用习惯都基于它。学习netstat有助于理解网络连接状态的基本概念这些概念在其他工具中是通用的。2.2 现代替代sssssocket statistics是iproute2软件包的一部分旨在取代netstat。它直接从内核空间通过netlink接口或tcp_diag模块获取socket信息速度极快即使面对数十万连接也能瞬间响应。此外ss显示的信息通常比netstat更详细特别是TCP内部状态如发送/接收队列大小、拥塞控制算法等。可以这么说ss是现代Linux系统上查看网络连接状态的首选和推荐工具。它的语法与netstat大部分兼容学习成本低但能力更强。2.3 进程视角lsoflsoflist open files的核心理念是“在Linux中一切皆文件”。网络连接socket也是一种特殊的文件描述符。因此lsof可以从进程的角度列出其打开的所有文件其中就包括网络连接。lsof的强大之处在于它能精确地将端口或连接关联到具体的进程IDPID和进程名并且能显示进程的用户等信息。当你需要回答“哪个进程占用了8080端口”这类问题时lsof往往是最直接的工具。2.4 终极源头/proc 文件系统/proc是一个虚拟文件系统它提供了访问内核内部数据结构的接口。网络连接信息就存放在/proc/net/目录下如/proc/net/tcp/proc/net/udp。netstat和ss本质上都是对这些数据进行解析和美化输出。直接查看/proc文件内容比较原始IP和端口都以十六进制显示可读性差一般不用于手动排查。但它揭示了信息的本质来源并且在某些极端环境工具缺失下可以直接通过cat、grep这些命令获取最原始的数据。工具选型速查表工具所属套件主要特点适用场景性能netstatnet-tools功能全面输出经典易读学习概念简单排查老系统较差连接数多时慢ssiproute2速度极快信息详细现代首选生产环境排查高性能需求极佳lsoflsof进程关联性强能查所有打开文件定位占用端口的进程较好/proc内核信息源头原始数据理解原理工具缺失时的备用方案直接读取无额外开销3. 核心命令详解与实战用法了解了工具全景我们进入实战环节。我将以ss命令为主对比讲解netstat并穿插lsof的特定用法因为ss是当前事实上的标准。3.1 ss 命令语法与常用选项ss的基本语法是ss [选项] [过滤表达式]常用选项组合与解释-t显示TCP套接字。-u显示UDP套接字。-l仅显示监听LISTEN状态的套接字。这是查看系统开放了哪些端口的常用方式。-a显示所有状态的套接字包括监听、已建立、等待关闭等。-n以数字形式显示地址和端口不进行DNS反向解析和服务名查找。强烈建议始终加上-n选项可以大幅提升命令执行速度避免因DNS问题导致命令卡住。-p显示使用该套接字的进程信息PID和进程名。需要root权限才能查看其他用户的进程信息。-4仅显示 IPv4 套接字。-6仅显示 IPv6 套接字。-s显示套接字使用情况的统计摘要总连接数、TCP各状态连接数等。-o显示TCP定时器信息如保活时间。-e显示套接字的扩展详细信息如用户ID、inode等。-i显示TCP内部信息如拥塞窗口、rtt等。最常用的组合ss -tunlp查看所有TCP和UDP的监听端口并显示进程信息。这是查看本机开放了哪些服务的黄金命令。ss -tan查看所有TCP连接包括监听和已建立以数字格式显示。ss -tan state ESTABLISHED使用过滤表达式仅显示已建立的TCP连接。3.2 输出列深度解析执行ss -tunlp或ss -tan你会看到类似下面的输出。理解每一列的含义至关重要。Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 *:22 *:* users:((sshd,pid1234,fd3)) tcp ESTAB 0 0 192.168.1.100:22 192.168.1.50:54321Netid: 套接字类型。tcp,udp,raw等。State: 套接字状态。这是分析连接健康度的关键。LISTEN: 服务端套接字正在监听等待连接。ESTABLISHED: 连接已成功建立正在进行数据传输。SYN-SENT: 本地应用发送了SYN包正在等待对方的SYN-ACKTCP三次握手第一步。SYN-RECV: 收到了对方的SYN包并回复了SYN-ACK等待对方的ACKTCP三次握手第二步。FIN-WAIT-1: 本地已发送FIN包请求关闭连接等待对方的ACK或FIN。CLOSE-WAIT: 对方已关闭连接发送了FIN本地正在等待应用层处理完数据后关闭。TIME-WAIT: 连接已关闭等待足够的时间2MSL以确保网络中所有旧报文都消失。大量TIME-WAIT连接是正常现象通常意味着你的服务作为客户端主动关闭了大量短连接。Recv-Q和Send-Q: 这两个队列的大小是诊断网络瓶颈的重要指标。对于监听套接字LISTENRecv-Q: 当前已完成三次握手SYN_RECV状态但尚未被应用层accept()取走的连接队列长度。Send-Q: 监听队列的最大长度即backlog参数如somaxconn控制。对于已建立的套接字ESTABLISHED等Recv-Q: 内核中已接收但尚未被应用层read()取走的数据量字节。Send-Q: 内核中已发送但尚未收到对方确认ACK的数据量字节。如果Recv-Q持续很大可能表示应用进程处理不过来卡住了。如果Send-Q持续很大且不减少可能表示网络拥塞或对端接收缓慢。Local Address:Port: 本地绑定的IP和端口。*表示绑定在所有接口0.0.0.0127.0.0.1表示只绑定在本地环回。Peer Address:Port: 对端远程的IP和端口。对于监听套接字这里是*:*。最后一列使用-p时: 关联的进程信息包括进程名和PID。这是定位问题的关键。3.3 netstat 命令对比与迁移如果你熟悉netstat可以这样迁移到ss功能netstat 命令ss 等效命令说明所有TCP监听端口netstat -tlnpss -tlnp几乎一致所有连接含监听netstat -tanss -tan几乎一致显示进程信息netstat -tunlpss -tunlp注意ss的-u单独表示UDP统计摘要netstat -sss -sss -s的输出更简洁按状态过滤netstat -tan | grep ESTABss -tan state ESTABLISHEDss的过滤更原生高效一个重要的区别netstat的-a选项默认包含监听和所有非监听连接。而ss的-a也是类似但ss提供了更强大的过滤表达式例如ss state established。3.4 lsof 的精准定位当ss -tunlp无法直接显示进程或者你想从端口反查进程时lsof是利器。查看谁在监听特定端口lsof -i :8080这会列出所有打开8080端口的进程。-i选项用于指定网络连接。查看某个进程打开的所有网络连接lsof -i -a -p PID或者更简单lsof -i -p PID查看所有TCP监听端口lsof -iTCP -sTCP:LISTEN这相当于ss -tlnp但输出格式不同。lsof输出的信息非常丰富包括命令、PID、用户、FD文件描述符、类型、设备、大小、节点名等。对于网络连接我们主要关注COMMAND,PID,USER,FD,TYPE,DEVICE,NODE NAME其中包含了IP:端口信息。4. 高级过滤与状态分析实战ss的强大之处在于其基于表达式的过滤能力可以让你像数据库查询一样精准定位连接。4.1 按连接状态过滤TCP连接状态是分析问题的核心。你可以使用state关键字。查看所有已建立的连接ss -tan state established查看所有等待关闭的连接TIME-WAIT, CLOSE-WAITss -tan state time-wait ss -tan state close-wait也可以组合查看ss -tan state time-wait,close-wait查看所有非监听状态的连接ss -tan state connectedconnected是一个宏代表所有已建立和正在关闭的状态不包括listen,closed等。4.2 按地址和端口过滤查看连接到特定远程主机的连接ss -tan dst 192.168.1.200查看从特定本地端口发起的连接ss -tan sport :54321查看连接到特定远程端口的连接ss -tan dport :80组合过滤查看本地80端口的所有已建立连接。ss -tan state established dport :804.3 诊断案例服务器连接数异常分析假设监控报警某台Web服务器Nginx的TCP连接数异常增高。你可以按以下步骤排查总体概览首先用ss -s看统计摘要确认TCP连接总数是否真的异常以及各状态分布。ss -s关注Total和TCP部分的数字。定位监听端口确认Nginx监听的端口假设是80和443状态。ss -tlnp | grep -E ‘:(80\|443)’检查Recv-Q是否堆积。如果Recv-Q很大说明有很多连接已握手完成但Nginx来不及accept()可能需要调整net.core.somaxconn内核参数或Nginx的backlog配置。分析已建立连接查看所有到80端口的已建立连接看看来自哪些IP。ss -tan state established dport :80 | head -20如果发现大量连接来自少数几个IP可能是爬虫或攻击。可以进一步用awk统计IP出现次数。分析异常状态查看是否有大量异常状态连接如SYN-RECV半连接。ss -tan state syn-recv大量SYN-RECV可能是SYN Flood攻击的迹象。此时需要结合netstat -s | grep -i listen或ss -s中的SYN-RECV计数和系统日志进一步判断。关联进程如果怀疑不是Nginx而是其他进程建立了大量连接可以用ss -tanp查看所有连接的进程信息或者用lsof -iTCP来交叉验证。4.4 实操心得关于 TIME-WAIT 的误解与处理很多运维新手看到服务器上有成千上万的TIME-WAIT连接就非常紧张认为这耗尽了资源。实际上TIME-WAIT状态是TCP协议为了保证可靠关闭而设计的每个TIME-WAIT连接只占用一个四元组源IP、源端口、目的IP、目的端口和少量内存约1KB左右。对于现代服务器来说几万个TIME-WAIT连接通常不是问题。真正需要关注的是端口耗尽的可能性。如果服务器作为客户端频繁地用同一个本地端口段向同一个远程服务相同IP和端口发起短连接可能会因为本地端口来不及回收而耗尽。这时可以考虑以下方案启用端口复用和快速回收需谨慎评估可能违反RFC# 允许将TIME-WAIT套接字重新用于新的TCP连接 sysctl -w net.ipv4.tcp_tw_reuse1 # 快速回收TIME-WAIT套接字在NAT环境下可能有问题 # sysctl -w net.ipv4.tcp_tw_recycle1 # 该参数在较新内核中已移除注意tcp_tw_recycle在存在NAT的网络中可能导致问题且在内核4.12之后已被移除。生产环境建议只开启tcp_tw_reuse并充分测试。调整本地端口范围sysctl -w net.ipv4.ip_local_port_range1024 65535这扩大了可用临时端口的数量。优化应用使用连接池避免频繁创建和关闭短连接这是最根本的解决方案。5. 脚本化监控与自动化排查手动敲命令适合临时排查但对于常态化监控和自动化运维我们需要脚本。5.1 监控监听端口变化一个简单的脚本记录当前监听端口并与之前记录对比发现新增或减少的端口可用于安全监控。#!/bin/bash # 保存当前监听端口列表 ss -tunlp | grep LISTEN | sort /tmp/current_listen_ports.txt # 如果存在历史记录则对比 if [ -f /tmp/last_listen_ports.txt ]; then echo “ 新增的监听端口 ” comm -13 /tmp/last_listen_ports.txt /tmp/current_listen_ports.txt echo “ 消失的监听端口 ” comm -23 /tmp/last_listen_ports.txt /tmp/current_listen_ports.txt fi # 更新历史记录 mv /tmp/current_listen_ports.txt /tmp/last_listen_ports.txt5.2 统计各状态的连接数将ss -s的输出进行解析提取关键指标便于接入监控系统如Zabbix, Prometheus。#!/bin/bash # 提取ss -s输出中的TCP连接数统计 ss_stats$(ss -s | grep -A 10 “^TCP:”) total_tcp$(echo “$ss_stats” | grep ‘estab’ | awk ‘{print $4}’) time_wait$(echo “$ss_stats” | grep ‘timewait’ | awk ‘{print $4}’ | sed ‘s/,//’) close_wait$(echo “$ss_stats” | grep ‘close-wait’ | awk ‘{print $4}’ | sed ‘s/,//’) echo “TCP_TOTAL $total_tcp” echo “TCP_TIME_WAIT $time_wait” echo “TCP_CLOSE_WAIT $close_wait”5.3 查找连接数最多的远程IP当怀疑有单IP攻击或异常爬虫时这个脚本非常有用。#!/bin/bash # 统计连接到本地80端口的ESTABLISHED连接按远程IP计数 ss -tan state established dport :80 | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -rn | head -20这个命令管道做了以下几件事ss -tan state established dport :80获取所有到80端口的已建立连接。awk ‘{print $5}’提取第五列Peer Address:Port。cut -d: -f1以冒号分隔取第一部分IP地址。sort排序为uniq -c做准备。uniq -c统计每个IP出现的次数。sort -rn按次数反向数字排序从大到小。head -20显示前20个。5.4 常见问题排查速查表现象/问题可能原因排查命令与思路“Address already in use”(端口被占用)1. 其他进程正在监听该端口。2. 该端口处于TIME-WAIT状态且未启用SO_REUSEADDR。1.ss -tlnp | grep :端口号或lsof -i :端口号查找占用进程。2.ss -tan state time-wait | grep :端口号查看是否有TIME-WAIT连接。服务无法连接但端口在监听1. 防火墙iptables, firewalld阻止。2. 服务只绑定在127.0.0.1本地环回。3. 应用层问题如进程僵死。1.ss -tlnp检查Local Address是0.0.0.0还是127.0.0.1。2. 检查防火墙规则。3. 检查进程状态和日志。大量SYN-RECV状态连接1. SYN Flood攻击。2. 客户端发送SYN后崩溃或网络问题。3. 服务器backlog队列满且未及时accept()。1.netstat -s | grep -i listen查看被丢弃的SYN包数量。2. 检查服务器负载和ss -tln的Recv-Q。3. 考虑启用tcp_syncookies。大量CLOSE-WAIT状态连接应用层Bug的典型标志本地应用没有及时调用close()关闭socket。1.ss -tanp state close-wait定位是哪个进程。2. 检查该进程的代码确认socket资源是否被正确释放。Send-Q或Recv-Q持续很大1. 网络拥塞或对端处理慢Send-Q大。2. 本地应用处理不过来Recv-Q大。1. 检查网络状况延迟、丢包。2. 检查应用进程的CPU、IO状态看是否有阻塞。连接数缓慢增长不释放1. 连接泄漏应用未关闭连接。2. 长连接场景属于正常。1. 定期执行ss -s监控趋势。2. 使用ss -tanp或lsof -p PID分析特定进程的连接生命周期。掌握这些命令和脚本你就能像拥有X光透视眼一样看清Linux系统内部网络通信的实时状况。从简单的端口查看到复杂的性能瓶颈分析这套方法论覆盖了绝大部分日常运维和故障排查场景。记住ss是你的主力工具lsof是精准的手术刀而理解TCP状态机则是你的核心诊断理论。多练多思考下次遇到网络问题你就能从容应对了。

相关新闻

性能提升计算与精度权衡:从理论到实践的量化评估指南

性能提升计算与精度权衡:从理论到实践的量化评估指南

1. 项目概述:性能提升的量化与精度权衡在技术迭代和项目优化的日常工作中,我们经常面临一个核心问题:如何客观、准确地评估一项改进措施带来的效果?无论是优化一段代码、升级一个硬件模块,还是调整一个算法参数&#x…

2026/10/13 23:30:23 阅读更多 →
Win11硬盘分区全攻略:从GPT/SSD原理到实战避坑指南

Win11硬盘分区全攻略:从GPT/SSD原理到实战避坑指南

1. 项目概述:为什么Win11用户需要重新审视硬盘分区?最近帮几个朋友处理新电脑,发现一个挺普遍的现象:很多人拿到预装Win11的新机器,看着那个孤零零的C盘,心里就有点发怵。系统、软件、文档、游戏全挤在一起…

2026/10/13 17:16:51 阅读更多 →
统一Radix缓存:多模型共享KV缓存的设计与工程实践

统一Radix缓存:多模型共享KV缓存的设计与工程实践

1. 先搞清楚“统一Radix缓存”到底要解决什么问题看到“统一Radix缓存”和“混合模型前缀缓存”这些词,第一反应可能是某个特定框架或库的内部优化。但如果你正在处理大语言模型推理、搜索建议或者任何需要高效前缀匹配的场景,这个概念就非常关键了。它本…

2026/10/12 1:08:23 阅读更多 →

最新新闻

等保2.0落地指南:从定级备案到整改自查的完整路线图

等保2.0落地指南:从定级备案到整改自查的完整路线图

简介:一份面向企业网络安全负责人、系统集成商及安全厂家的等保2.0三级基本要求深度解读资料,重点对照等级保护1.0梳理技术要求变化,特别剖析了安全通信网络、安全区域边界、安全计算环境等新增架构,以及合规分数由60分提升至75分…

2026/10/14 0:01:41 阅读更多 →
Agent-Reach:让AI Agent真正“有手有脚”的触达与调度中间层

Agent-Reach:让AI Agent真正“有手有脚”的触达与调度中间层

这两年我带过好几个Agent落地的项目,有个问题几乎每次都出现:模型本身挺聪明,可真到要让Agent替用户办点事,它就卡住了。卡点不在推理,在“触达”——Agent够不到该够的东西。项目Agent-Reach就是为了解决这个问题立项…

2026/10/14 0:01:41 阅读更多 →
Linux下Oracle 11g R2安装全攻略:环境准备到排错实战

Linux下Oracle 11g R2安装全攻略:环境准备到排错实战

简介:针对Linux环境安装Oracle 11gR2的详细图解文档,适合具备一定Linux命令行与数据库管理基础的运维工程师、DBA,或有部署需求的技术人员;因步骤拆解清晰,新手也能按图索骥完成单机环境搭建。资源为单个doc文档&#…

2026/10/14 0:01:41 阅读更多 →
Logistic回归在时间序列预测中的应用与实践

Logistic回归在时间序列预测中的应用与实践

1. 项目背景与核心价值时间序列预测在金融风控、医疗诊断、工业设备维护等领域具有广泛应用价值。传统线性回归在面对二分类预测问题时往往力不从心,而Logistic回归凭借其独特的Sigmoid函数转换,能够将线性回归结果映射到(0,1)区间,完美适配概…

2026/10/14 0:01:41 阅读更多 →
8种电弧模型MATLAB实现:从Mayr到Cassie的断路器仿真指南

8种电弧模型MATLAB实现:从Mayr到Cassie的断路器仿真指南

简介:8种电弧模型的MATLAB实现包,面向电气工程专业学生、研究人员及电力系统工程师,用于电弧放电现象的原理验证、特性分析与工况仿真。压缩包共6个文件,含2个Simulink模型可分别演示集成与单模型运行;2份PDF文献阐述大…

2026/10/14 0:01:41 阅读更多 →
SCORM课件演示与测试全解析:从API通信到自动化验证

SCORM课件演示与测试全解析:从API通信到自动化验证

简介:这是一套遵循SCORM标准的交互式课件演示与测试资源,面向E-Learning课程开发者、LMS平台测试人员及在线教学从业者,用于验证课件在不同学习管理系统中的识别、传递与跟踪能力。压缩包共28个文件,约12.07MB,以swf动…

2026/10/14 0:00:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →