Linux系统管理进阶-源码安装与进程调度
Linux 系统管理进阶源码安装、计划任务与进程调度 学习日期2026-07-29 系统环境CentOS 7 作者Linux 运维学习者 目录源码安装软件自建 YUM 仓库计划任务管理进程调度管理文件系统基本管理1. 源码安装软件在 Linux 世界里虽然yum/dnf能搞定大多数软件但源码编译安装依然是运维工程师的必修课。它能让你自定义安装路径和功能模块获取最新版本而不是仓库里的旧版本深入理解软件的构建过程1.1 源码安装 NginxNginx 是一个高性能的 HTTP 和反向代理 web 服务器官方地址nginx.org标准的源码安装三部曲配置 → 编译 → 安装Step 1安装依赖yuminstallgccmakepcre-devel zlib-develgcc和make是编译工具链pcre-devel和zlib-devel是 Nginx 依赖的库。Step 2下载 解压wgethttps://nginx.org/download/nginx-1.24.0.tar.gztar-xfnginx-1.24.0.tar.gzcdnginx-1.24.0/Step 3配置最关键的一步./configure--prefix/usr/local/nginx--prefix指定安装目录所有 Nginx 相关文件都会存放在/usr/local/nginx下。Step 4编译 安装makemakeinstall⚡make负责编译make install负责安装。用串联编译成功才会执行安装。Step 5配置环境变量exportPATH$PATH:/usr/local/nginx/sbin/echoexport PATH$PATH:/usr/local/nginx/sbin/~/.bashrcNginx 常用命令命令作用nginx启动服务nginx -s quit优雅停止处理完当前请求后退出nginx -s stop强制停止直接 kill 进程nginx -s reload重新加载配置文件将 Nginx 注册为系统服务手写一个 systemd 服务文件让 Nginx 像系统自带服务一样管理# /etc/systemd/system/nginx.service [Unit] DescriptionNginx server daemon [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit [Install] WantedBymulti-user.targetsystemctl daemon-reload systemctlenablenginx.service--now# 开机启动 立即运行1.2 源码安装 Cmatrix —— 打造黑客帝国同款屏幕 Cmatrix 是一款 Linux 环境下炫酷的屏保软件效果类似于《黑客帝国》电影中的代码雨。项目地址github.com/abishekvashok/cmatrix安装步骤# 安装依赖yum-yinstallgccmakeautoconf ncurses-devel# 下载 解压wgethttp://192.168.50.200/class/course-materials/softwares/stage01/cmatrix-1.2.tar.gztar-xfcmatrix-1.2.tar.gzcdcmatrix-1.2/# 配置 → 编译 → 安装./configure--prefix/usr/local/cmatrixmakemakeinstall# 配置环境变量exportPATH$PATH:/usr/local/cmatrix/bin 运行效果# 基础运行cmatrix# 加粗红色代码雨速度设为 3cmatrix-b-u3-Cred参数含义-b加粗字体-u 0-10滚动速度默认 4-C color字体颜色green / red / blue / white / yellow / cyan / magenta / black-s屏保模式按任意键退出-a异步滚动 运行时骚操作无需重启就能随时改变颜色按键盘上的对应键位即可颜色按键对应数字键 红色!Shift1 绿色Shift2 黄色#Shift3 蓝色$Shift4 洋红色%Shift5 青色^Shift6⚪ 白色Shift7⚫ 黑色)Shift8按数字键0~9还能随时调整滚动速度2. 自建 YUM 仓库当内网环境无法访问公网仓库或者需要统一管理团队内部的软件包版本时自建 YUM 仓库就是你的救星。自建仓库四步走准备软件包 → 创建仓库索引 → 发布仓库 → 客户端配置Step 1准备软件包mkdirrpmscdrpms# 使用 --downloadonly 只下载不安装保留依赖包yuminstall--downloadonly--downloaddir.vimopen-vm-tools vsftpd\lrzsz bash-completion nginx httpd mariadb-server# 移动到 Nginx 发布目录mkdir/usr/local/nginx/html/toolsmvrpms /usr/local/nginx/html/tools/PackagesStep 2创建仓库索引yuminstall-ycreaterepo createrepo /usr/local/nginx/html/tools/️createrepo会扫描 Packages 目录生成repodata/索引文件YUM 客户端就是靠它找到软件包的。Step 3通过 Nginx 发布在 Nginx 配置中启用目录浏览# /usr/local/nginx/conf/nginx.conf http { autoindex on; # ← 开启文件清单功能方便浏览器查看 ... }systemctl reload nginxStep 4客户端配置# 备份原仓库mkdir/etc/yum.repos.d/oldmv/etc/yum.repos.d/*repo /etc/yum.repos.d/old# 创建新仓库配置catEOF/etc/yum.repos.d/tools.repo[tools] namecentos7 tools from server.laoma.cloud baseurlhttp://server.laoma.cloud/tools/ enabled1 gpgcheck0 EOF# 测试安装yuminstall-yhttpd 同步仓库把远程仓库搬回家reposync--repoidtools# 同步所有 RPM 包createrepo tools# 重建本地索引3. 计划任务管理Linux 中的计划任务分为两类一次性任务和周期性任务。掌握它们运维自动化就迈出了一大步。3.1 一次性计划任务at “下午 5 点把这份日志发邮件给老板” —— 这种只做一次的事交给at。at 依赖atd后台服务运行yuminstallat systemctl status atd# 确认 active (running)基本用法# 5 分钟后执行at now 5 minutes atechohello world/tmp/hello.log atEOT# ← 按 CtrlD 完成输入# 从脚本文件读取命令at now 5 minutesmyscript.sh at now 100 minutes-fmyscript.sh时间表达大全timespec表达式含义now 5 minutes5 分钟后now 5 hours5 小时后teatime tomorrow明天下午 4 点 (teatime 16:00)noon 4 days4 天后的中午 (noon 12:00)5pm august 3 20262026 年 8 月 3 日下午 5 点 完整时间表达参考/usr/share/doc/at/timespec任务管理命令命令作用atq或at -l查看任务队列at -c job号查看任务详细内容atrm job号或at -d删除任务at -q 字母指定队列 (a~z越靠后优先级越低)权限控制# /etc/at.allow 存在 → 只有文件中的用户能用 at# /etc/at.allow 不存在 → /etc/at.deny 中的用户被禁止# 两个文件都不存在 → 只有 root 能用 at3.2 用户周期性计划任务crontab “每周一早上 9 点生成周报” —— 这种重复执行的活交给crontab。依赖crond服务运行使用crontab命令管理。crontab 语法速查* * * * * command │ │ │ │ │ │ │ │ │ │ │ └── 要执行的命令 │ │ │ │ └─────── 星期几 (0-7, 0和7都表示周日) │ │ │ └──────────── 月份 (1-12) │ │ └───────────────── 几号 (1-31) │ └────────────────────── 小时 (0-23) └─────────────────────────── 分钟 (0-59)时间字段规则符号含义示例*每…* * * * *→ 每分钟x-y范围1-5→ 1 到 5x,y列表1,3,5→ 第 1、3、5*/x每隔 x*/5→ 每隔 5分钟/小时等实战示例# 每年 2 月 2 日上午 9 点运行备份0922* /usr/local/bin/yearly_backup# 7 月每周五 9:00-16:00每 5 分钟响一声*/59-16 * Jul5echoChime# 每个工作日周一至周五23:58 运行日报5823* *1-5 /usr/local/bin/daily_reportcrontab 常用命令命令作用crontab -l查看当前用户的计划任务crontab -e编辑计划任务默认 vicrontab -r删除所有计划任务crontab -u user -eroot 管理其他用户的任务crontab filename从文件导入任务替换现有任务 综合练习编写一个定时监控脚本需求让一个程序运行 20 秒后自动终止在 11 月份的奇数日 11:00-18:00每 2 分钟执行一次。# 1. 编写脚本 /usr/local/bin/myjob#!/bin/bashmd5sum /dev/zero# 后台启动会吃满 CPUsleep20# 等 20 秒pkillmd5sum# 干掉它chmodx /usr/local/bin/myjob# 2. 配置 crontab# */2 11-18 */2 11 *# 解读11 月奇数日11-18 点之间每 2 分钟执行crontab-e*/211-18 */211* /usr/local/bin/myjob 验证方法journalctl -f监控 cron 日志top观察 md5sum 出现又消失。3.3 系统级周期性计划任务系统管理员通过配置文件定义系统级任务crond 从三个地方读取配置文件用途/etc/crontab系统主配置文件比用户 crontab 多一个 “执行用户” 字段/etc/cron.d/第三方应用存放任务的推荐位置不会被更新覆盖/etc/anacrontab定义每日/每周/每月任务保证即使关机也能补执行# /etc/crontab 格式多一个 user-name 字段* * * * * user-namecommand# 示例每小时执行一次 cron.hourly 下的所有脚本01 * * * * root run-parts /etc/cron.hourlyanacron错过不怕醒了就补period(days) delay(min) job-id command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly monthly 45 cron.monthly nice run-parts /etc/cron.monthlyRANDOM_DELAY45会给任务加随机延迟最多 45 分钟防止所有机器同时执行造成负载尖峰。START_HOURS_RANGE3-22限定任务在凌晨 3 点到晚上 10 点之间运行。4. 进程调度管理 操作系统里运行的进程永远比 CPU 核心数多那 Linux 是怎么做到看起来同时运行的答案是——进程调度器。4.1 两类调度器┌────────────────────────────┐ │ Linux 进程调度器 │ └───────────┬────────────────┘ │ ┌───────────────┴───────────────┐ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ 实时调度器 │ │ 非实时调度器 │ │ (抢占力强) │ │ (抢占力弱) │ └──────┬──────┘ └──────┬──────┘ │ │ ┌─────┴─────┐ ┌─────────┼─────────┐ ▼ ▼ ▼ ▼ ▼ SCHED_RR SCHED_FIFO SCHED_NORMAL SCHED_BATCH SCHED_IDLE (轮询) (先入先出) (标准分时) (批处理) (极低优先级)关键结论⚡优先级最低的实时进程 优先级最高的非实时进程实时调度器进程优先级1 ~ 99非实时调度器 nice 值-20最高 ~ 19最低实时调度器安全阀为防止实时进程霸占所有 CPU导致 SSH 都连不上内核有两个保护参数# kernel.sched_rt_period_us 1000000 (1秒CPU分配周期)# kernel.sched_rt_runtime_us 950000 (0.95秒实时进程能用的上限)# → 剩余 0.05 秒留给非实时进程保证系统可响应4.2 管理进程优先级nice renicenice 值规则nice -20 ←──── 优先级最高抢 CPU 最猛 ... nice 0 ←──── 默认值 ... nice 19 ←──── 优先级最低最佛系没有 CPU 资源竞争时nice 值再高的进程也能拿到足够 CPU。只有资源紧张时nice 值才起决定性作用。nice命令启动时设置优先级# 默认 nice 值为 10nicemd5sum /dev/zero# 指定 nice 值nice-n5md5sum /dev/zero# ⛔ 普通用户只能设置正数 nice 值降低自己的优先级nice-n-5md5sum /dev/zero# 报错Permission denied# ✅ root 可以设置任意 nice 值nice-n-10md5sum /dev/zerorenice命令运行时修改优先级# 查看进程 PID 和 nice 值ps-opid,nice,command# 调整 nice 值renice-n555782# 55782 是进程 PID# ⛔ 普通用户只能升高 nice 值降低优先级不能降低renice-n-255782# 普通用户Permission deniedrenice-n-255782# root 用户成功在top中操作在top界面按r键 → 输入 PID → 输入新 nice 值即可动态调整4.3 实时调度策略chrtchrt是操作实时进程调度的利器# 查看各调度策略的优先级范围chrt-m# SCHED_OTHER min/max: 0/0 ← 非实时用 nice 值# SCHED_FIFO min/max: 1/99 ← 实时# SCHED_RR min/max: 1/99 ← 实时# SCHED_BATCH min/max: 0/0# SCHED_IDLE min/max: 0/0# 以 SCHED_RR 策略、优先级 5 启动进程chrt-r5md5sum /dev/zero# 查看进程的调度策略和实时优先级ps-opid,cls,rtprio,command# PID CLS RTPRIO COMMAND# 56225 RR 5 md5sum /dev/zero# 修改为 SCHED_FIFO、优先级 10chrt-f--pid1056225# 改回非实时调度chrt-o--pid0562255. 文件系统基本管理5.1 识别设备和文件系统Linux 中一切皆文件存储设备也不例外接口类型设备名示例SATA/SAS/USB/dev/sda,/dev/sdb虚拟磁盘 (virtio)/dev/vda,/dev/vdbNVMe SSD/dev/nvme0n1,/dev/nvme1n1SD/MMC/dev/mmcblk0,/dev/mmcblk1分区命名规则SATA/dev/sda1,/dev/sda2NVMe/dev/nvme0n1p1,/dev/nvme0n1p2虚拟磁盘/dev/vda1,/dev/vda2三大查看命令命令用途lsblk查看块设备结构树磁盘 → 分区 → LVM → 挂载点df -hT查看文件系统使用情况容量、已用、类型du -sh dir查看目录占用磁盘空间 实战揪出占用磁盘的胖子文件# 问题根分区快满了是谁干的# 方法一逐层排查du-sk/*|sort-n# 看根目录下谁最大 → /usr 最大du-sk/usr/*|sort-n# → /usr/share 最大du-sk/usr/share/*|sort-n# → /usr/share/doc 最大# ... 层层递进最终定位到罪魁祸首# 方法二一步到位查找 100M 的文件find/-size100M2/dev/nullLinux 哲学用各种小工具的灵活组合解决复杂问题而不是一个巨型程序包办一切。5.2 挂载和卸载文件系统挂载mount# 查看设备 UUIDblkid /dev/sdb# 三种挂载方式效果一样mount/dev/sdb /datamountUUIDf20547b2-df53-46e5-b526-a8744be26231/data# 验证df-h/data卸载umountumount/dev/sdb# 按设备卸载umount/data# 按挂载点卸载 “target is busy” 怎么办# umount 提示设备忙说明有进程正在用这个目录# 方法一lsof 查找占用进程lsof/data# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME# bash 1508 root cwd DIR 8,17 156 64 /data# 方法二fuser 查找占用进程fuser-m/data# /data: 1508c ← PID 1508c 表示当前目录在此# 退出目录后重新卸载cd~umount/data5.3 查找文件locate vs find特性locatefind速度⚡ 极快查数据库 实时扫描实时性❌ 依赖 updatedb 更新✅ 实时权限控制只显示用户有权限的需读取和执行权限适用场景按文件名模糊搜索复杂条件组合搜索locate 速查yuminstall-ymlocate updatedb# 先更新数据库locatepasswd# 模糊搜索locate-bpasswd# 只匹配文件名不含路径locate-ipasswd# 忽略大小写locate-cpasswd# 只显示计数locate-rhttp.*conf# 正则匹配find 完全指南find[路径][条件][动作]常用条件条件示例说明-name-name *.log按文件名区分大小写-iname-iname passwd按文件名忽略大小写-type-type d/-type f按类型目录/文件-user/-group-user laoma按属主/属组-perm-perm 764/-perm -4000按权限- 至少满足/ 任意满足-size-size 100M按大小 大于- 小于-mtime-mtime -7按修改时间-7 7天内条件组合# 逻辑与默认find.-name*.log-size1M# .log 文件 且 1M# 逻辑或find/-nouser-o-nogroup# 无属主 或 无属组# 逻辑非find/!-size-200M# 不小于 200M即 ≥200M常用动作# 直接删除find/-name*.tmp-delete# 详细列表find/etc-name*.conf-ls# 对找到的文件执行命令{} 代表找到的文件\; 表示命令结束find/-name*.log-execgzip{}\;# 批量复制find/-inum67160130-execcp-a{}./findfiles\; 今日总结今天的学习覆盖了 Linux 系统管理的四大核心领域┌─────────────────────────────────────────────────────┐ │ Linux 系统管理进阶 │ ├───────────────┬───────────────┬──────────────────────┤ │ 软件管理 │ ⏰ 任务调度 │ ⚙️ 系统底层 │ │ │ │ │ │ • 源码编译安装 │ • at 一次性 │ • 进程调度策略 │ │ • 自建YUM仓库 │ • crontab 周期│ • nice/renice 优先级 │ │ │ • 系统级任务 │ • chrt 实时调度 │ │ │ │ • 文件系统挂载/查找 │ └───────────────┴───────────────┴──────────────────────┘从能用到会用再到精通每一条命令背后都是对系统运行原理的理解。Keep Learning, Keep Hacking!

相关新闻

边缘AI系统端到端延迟预算分配模型:从传感器曝光到结果输出的时隙分解框架

边缘AI系统端到端延迟预算分配模型:从传感器曝光到结果输出的时隙分解框架

边缘AI系统端到端延迟预算分配模型:从传感器曝光到结果输出的时隙分解框架 一、问题定义:端到端延迟不是"推理时间" 边缘 AI 系统的性能指标不是单点推理速度,而是端到端延迟——从传感器曝光采集到结果输出(执行器动…

2026/10/17 23:10:30 阅读更多 →
《论单元测试及其应用》

《论单元测试及其应用》

《论静态测试方法及其应用》 测试驱动开发方法(TDD)在之前的考试中并没有考过,但我感觉未来还是有考察的可能性的,因为它是一种可以有效提高软件质量的开发方法。万一考到了,我们要有方法应对。应对方法也很简单&#…

2026/10/16 6:44:20 阅读更多 →
Jenkins与Gitee Webhook配置实战:实现代码推送自动部署

Jenkins与Gitee Webhook配置实战:实现代码推送自动部署

1. 项目概述与核心价值上次我们聊了Jenkins和Gitee对接的基础配置,把代码拉取和构建的架子搭起来了。但很多朋友在实际操作时,发现从“构建成功”到“服务上线”这最后一步,才是真正考验人的地方。今天这篇,我们就来啃这块硬骨头&…

2026/10/16 22:18:30 阅读更多 →

最新新闻

NPDP备考核心:从产品创新工具到组合管理的实战指南

NPDP备考核心:从产品创新工具到组合管理的实战指南

简介:《NPDP Body of Knowledge-2nd》是产品开发与管理协会(PDMA)官方出版的产品创新与产品管理知识体系指南,主要面向备战NPDP认证考试的产品经理和产品开发从业者,也适合希望系统构建产品创新方法论的初中级产品人员…

2026/10/17 23:10:03 阅读更多 →
Raymarching 入门:SDF 与光线步进实现实时渲染

Raymarching 入门:SDF 与光线步进实现实时渲染

1. 从零理解 raymarching:它到底在解决什么问题第一次接触 raymarching 的人,多半是被 Shadertoy 上那些炫酷的实时渲染画面吸引过来的——一个纯片元着色器,没有模型文件,没有顶点数据,却能渲染出体积云、无限分形、流…

2026/10/17 23:10:03 阅读更多 →
Excel数据透视表实战:从数据清洗到多维分析全链路

Excel数据透视表实战:从数据清洗到多维分析全链路

简介:本资源是一份面向Excel初学者与办公人员的《数据透视表应用大全》系统教程,聚焦企业数据分析场景下的核心技能提升。文档全面解析数据透视表的创建逻辑、字段布局规则、多维汇总技巧及常见结构优化方法,覆盖销售分析、区域对比、产品统计…

2026/10/17 23:10:03 阅读更多 →
Python图像处理全流程:从像素操作到连通域分析的避坑指南

Python图像处理全流程:从像素操作到连通域分析的避坑指南

简介:这是一份Python图像处理入门PDF,面向对图像分析与处理感兴趣的初学者,也适合需要快速回顾常用工具方法的技术人员。文档从图像在计算机中的表示讲起:单通道灰度图像对应8位无符号整型矩阵,多通道图像则由红绿蓝三…

2026/10/17 23:10:03 阅读更多 →
无损验证环的秘密:NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 中 Mamba-2 递归状态回滚机制解析

无损验证环的秘密:NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 中 Mamba-2 递归状态回滚机制解析

【免费下载链接】NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 点击查看 免费下载 NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 是…

2026/10/17 23:10:03 阅读更多 →
Python Flask + MySQL学生成绩管理系统源码全解析

Python Flask + MySQL学生成绩管理系统源码全解析

简介:面向需要完成数据库课程设计的高校学生,这份MySQL学生成绩管理系统课设报告提供了一套完整的系统设计与实现方案。该系统基于Python Flask与MySQL构建,覆盖管理员、教师、学生三类用户角色,实现选课、成绩录入、修改、删除、…

2026/10/17 23:09:02 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →