鸟哥Linux私房菜第四版基础篇:从CPU内存到SELinux实战避坑
简介《鸟哥的Linux私房菜-基础篇》第四版是一份面向Linux初学者的入门电子书适合具备基本计算机操作能力、希望系统掌握Linux概念与常用工具的读者也可供有一定经验的IT技术人员查漏补缺。内容从计算机组成与操作系统原理讲起逐步延伸到man页与info页等文档查看方法、常见实用文档的位置与使用技巧并涵盖nano文本编辑器操作及SELinux安全管理等知识点配合大量实际操作讲解帮助读者培养独立解决常见问题的能力。资源包为1个PDF文件大小约17.5MB单文件结构便于在电脑或移动设备上随时翻阅。目前已有1232人学习下载说明其在Linux入门群体中具有一定认可度。对于想打牢Linux基础、为后续深入研究类Unix系统做准备的读者这份资料可作为系统学习的起点。1. 从一台“内存不够用”的服务器说起这份第四版基础篇到底能帮你解决什么上周帮朋友排查一台测试机现象很典型跑个编译任务系统没报 OOM但free -h一看available 只剩几十兆swap 被吃得干干净净键盘敲下去要等两三秒才有回显。他问我是不是得换 CPU我说先别急把内存加上去再说。结果从 8G 加到 32G同样的任务时间直接砍半。这事让我又翻出了手边那份《鸟哥的Linux私房菜-基础篇》第四版——它开篇第零章讲计算机概论时就反复强调“所有数据都要经过主存储器再转出去”CPU 再快内存不够系统效能就是上不去。这份资源不是那种速查手册它从计算机硬件五大单元讲起一路铺到 Linux 文档查看、nano 编辑器、SELinux 安全管理适合那些不想只背命令、想弄明白“为什么这条命令要这么敲”的从业者。如果你刚接触 Linux或者用了几年但总觉得底层概念是团浆糊这份第四版基础篇值得你花时间拆一遍。2. 先搞懂 CPU 架构与内存带宽为什么你的命令跑得比别人慢2.1 RISC 与 CISC 的分野以及 x86_64 到底意味着什么书里第零章花了不少篇幅讲 CPU 的两种设计理念精简指令集 RISC 和复杂指令集 CISC。很多新手看到这里会直接跳过觉得跟敲命令没关系。但实际排查性能问题时这个背景知识很关键。RISC 架构比如 ARM 系列每条指令做的事很单纯执行时间短但复杂操作要靠多条指令拼CISC 架构比如 Intel、AMD 的 x86 系列单条指令能处理的工作更丰富但指令长度不一执行时间也长。你手头那台跑 Linux 的机器如果是个人计算机或常见云服务器大概率是 x86_64 架构。这个“64”指的是 CPU 一次能读写 64 位数据而 32 位 CPU 一次只能读 32 位所以 32 位系统最大只能支持到 4GB 左右内存。这就是为什么现在装系统都推荐 64 位——不是时髦是内存上限卡在那里。书里还提到一个容易混淆的点CPU 频率不能跨型号直接比。i7-4790 的 3.6GHz 和另一颗不同架构的 3.6GHz实际运算效能可能差很远因为微指令集、第二层快取、每次频率能执行的指令数都不同。我一般跟新人说看 CPU 参数时频率只在同代同系列里比才有意义跨代跨架构比频率就是玄学。2.2 内存带宽的计算方式以及多通道为什么有效书里给了一个很实在的公式带宽 工作频率 × 数据宽度。以 DDR3-1600 为例工作频率 1600MHz每次传输 64 位8 字节带宽就是 1600M × 8B 12.8GB/s。这个数字直接决定了 CPU 从内存拿数据的速度。如果你跑的是数据库、编译或者数值模拟内存带宽不够CPU 再强也得干等。多通道设计就是为了解决这个瓶颈。主板上的内存插槽通常分两组颜色就是为了让你把两根内存插到不同通道上让带宽翻倍。我见过不少人把两根内存插在同一边结果只跑单通道性能白白损失。书里虽然没有手把手教你怎么插内存但把原理讲透了你自然就知道该翻主板手册确认插槽顺序。提示用dmidecode -t memory可以查看当前内存的型号、频率和已安装的通道数确认是否跑在多通道模式。2.3 从硬件概念落到 Linux 命令用 lscpu 和 free 验证书里的理论书里讲完理论最终要落到操作上。我一般会用两个命令来验证上面这些概念# 查看 CPU 架构、核心数、频率、缓存等信息 lscpu # 查看内存总量、已用、可用、swap 使用情况 free -h # 查看内存硬件详情包括频率和通道 sudo dmidecode -t memory | grep -E Size|Speed|Locatorlscpu输出里的 “Architecture” 会告诉你是不是 x86_64“CPU(s)” 是逻辑核心数“Model name” 是具体型号“CPU MHz” 是当前频率。free -h的 “available” 列比 “free” 列更值得关注它估算的是还能给新进程用的内存。dmidecode需要 root 权限能看到每根内存插在哪个槽、频率多少、是否 ECC。这三个命令组合起来就能把书里第零章讲的 CPU 和内存概念对应到实际机器上。3. 文档查看与 nano 编辑器把 man 和 info 用成自己的外挂大脑3.1 man 页的章节划分与搜索技巧书里讲 Linux 文档查看时重点提了 man 页和 info 页。很多人敲man ls只看个开头就关了其实 man 页分章节不同章节对应不同类型的内容。比如man 1 ls看的是用户命令man 5 passwd看的是文件格式man 8 mount看的是系统管理命令。当你搜一个关键词出现多个结果时用man -f keyword或whatis keyword先列出所有相关 man 页再决定看哪个章节。搜索也有技巧。在 man 页里按/然后输入关键词按n跳下一个匹配N跳上一个。我经常用man -k来搜包含某个关键词的所有 man 页相当于对 man 页数据库做全文检索。比如man -k disk usage会列出 du、df 等相关命令。# 列出所有包含 password 的 man 页 man -k password # 查看 passwd 文件格式的 man 页第5章 man 5 passwd # 在 man 页中搜索 example 并跳转 # 进入 man 页后输入 /example 然后按 n3.2 info 页与 /usr/share/doc 的实战用法info 页比 man 页更结构化像一本带超链接的书。用info coreutils可以看 GNU 核心工具集的完整文档按Tab在节点间跳转按Enter进入子节点。不过说实话我平时用 man 更多info 只在查 GNU 工具详细说明时才用。另一个常被忽略的文档来源是/usr/share/doc。很多软件包会把自己的示例配置、FAQ、变更日志放在这里。比如你装了 nginx/usr/share/doc/nginx/下面可能有示例配置和 README。我一般会先ls /usr/share/doc/看看有哪些目录再进去翻 README 或 examples。# 列出 /usr/share/doc 下的目录 ls /usr/share/doc/ # 查看某个软件的文档目录 ls /usr/share/doc/nginx/ # 用 zless 查看压缩的变更日志 zless /usr/share/doc/nginx/changelog.Debian.gz3.3 nano 编辑器的快捷键与配置文件修改书里提到 nano 作为入门编辑器虽然功能不如 vim 强大但胜在快捷键都显示在屏幕底部不用记太多。我一般用 nano 改配置文件因为不容易误操作。几个常用快捷键CtrlO保存CtrlX退出CtrlW搜索CtrlK剪切当前行CtrlU粘贴。如果要跳转到指定行按Ctrl_然后输入行号。nano 的配置文件在/etc/nanorc可以设置自动缩进、显示行号、语法高亮等。我一般会取消set linenumbers的注释来显示行号改配置文件时方便定位。# 用 nano 编辑 nanorc 配置文件 sudo nano /etc/nanorc # 找到并取消以下行的注释 # set linenumbers # set autoindent # include /usr/share/nano/*.nanorc改完保存退出再打开文件就能看到行号和语法高亮了。注意include那行是加载语法高亮规则不同发行版路径可能不同用ls /usr/share/nano/确认一下。4. SELinux 避坑实录从“服务起不来”到“策略放行”的四条血泪经验4.1 现象改了端口服务死活起不来有次帮人部署一个内部服务配置文件里把监听端口从默认的 8080 改成 9090systemctl start就是失败日志里只写 “Permission denied”。查了半天用户权限、文件权限都没问题最后ausearch -m avc -ts recent一看SELinux 把绑定端口的操作拒了。原因是 SELinux 策略里只允许这个服务绑定特定端口你换端口就得额外放行。原因SELinux 的 targeted 策略为每个服务定义了允许的操作包括可以绑定的端口类型。默认端口在策略里已标记换端口就超出允许范围。解决用semanage port -a -t http_port_t -p tcp 9090把 9090 端口加入允许列表或者用semanage port -l | grep http先看哪些端口已允许。4.2 现象文件放对目录了服务还是读不到另一个常见坑把网站文件从/var/www/html挪到/data/www权限给了 755属主也对了nginx 就是 403。ls -Z一看新目录的 SELinux 上下文是default_t而 nginx 需要httpd_sys_content_t。原因SELinux 不仅看传统权限还看安全上下文。文件挪了位置上下文不会自动跟着变。解决用semanage fcontext -a -t httpd_sys_content_t /data/www(/.*)?添加规则然后restorecon -Rv /data/www恢复上下文。注意semanage fcontext只是加规则restorecon才真正改标签。4.3 现象临时关 SELinux 能跑重启后又不行有人排查时习惯setenforce 0临时关 SELinux服务确实起来了但重启后 SELinux 恢复 enforcing问题重现。更麻烦的是如果直接改/etc/selinux/config永久关闭系统安全性下降而且有些服务在 disabled 状态下会有奇怪行为。原因setenforce 0只对当前运行时生效重启后失效。永久关闭需要改配置文件并重启但不推荐。解决正确做法是查 audit 日志用ausearch或sealert分析具体拒绝原因然后针对性放行。sealert -a /var/log/audit/audit.log会给出人类可读的建议。4.4 现象策略放行了但服务还是报错有时候按 audit 日志加了策略服务还是起不来但这次日志里没有 AVC 拒绝了。可能是布尔值没开。比如 httpd 要访问网络需要httpd_can_network_connect布尔值为 on。原因SELinux 布尔值是策略里的开关控制某些特定功能是否允许默认可能是 off。解决用getsebool -a | grep httpd查看所有相关布尔值用setsebool -P httpd_can_network_connect on永久开启。-P参数让设置写入策略重启后仍生效。注意排查 SELinux 问题时先看/var/log/audit/audit.log或dmesg | grep avc确认是不是 SELinux 拒绝。不要一上来就关 SELinux那等于把黑匣子扔了。5. 进阶技巧用 audit2allow 生成策略模块以及一套我常用的验证流程前面讲的都是手动放行但遇到复杂场景手动加规则容易漏。audit2allow可以从 audit 日志自动生成策略模块省去逐条分析的麻烦。流程是先让服务在 enforcing 模式下跑一遍触发所有拒绝记录然后用audit2allow生成.te文件编译成.pp模块加载。# 从 audit 日志生成策略模块 sudo ausearch -m avc -ts recent | audit2allow -M mypolicy # 查看生成的策略内容 cat mypolicy.te # 加载策略模块 sudo semodule -i mypolicy.pp # 确认模块已加载 semodule -l | grep mypolicyausearch -m avc -ts recent提取最近的 AVC 拒绝记录audit2allow -M mypolicy生成mypolicy.te和mypolicy.pp两个文件。.te是策略源码.pp是编译后的模块。加载前一定先cat mypolicy.te看一眼确认生成的规则合理别把不该放行的也放了。我自己的验证流程是先在 permissive 模式下跑一遍完整业务流程收集所有 AVC 记录然后用audit2allow生成策略加载策略后切回 enforcing再跑一遍确认无拒绝最后用sealert复查日志。这套流程走下来基本不会漏。# 临时切 permissive 模式 sudo setenforce 0 # 跑一遍业务流程触发所有潜在拒绝 # ... 执行业务操作 ... # 收集 AVC 记录并生成策略 sudo ausearch -m avc -ts today | audit2allow -M myapp # 检查策略内容 cat myapp.te # 加载策略 sudo semodule -i myapp.pp # 切回 enforcing 模式 sudo setenforce 1 # 再跑一遍业务流程确认无拒绝 # ... 再次执行业务操作 ... # 复查日志 sudo ausearch -m avc -ts today如果第二次跑还有 AVC 记录说明策略没覆盖全重复生成加载步骤。注意audit2allow生成的规则可能比较宽泛生产环境要人工审核别直接照搬。从那以后我每次动 SELinux 相关配置都强制走一遍“permissive 收集 → audit2allow 生成 → 审核 → enforcing 验证”的流程再也没出现过服务莫名其妙起不来的情况。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Spring Boot电商库存管理系统设计与优化实践

Spring Boot电商库存管理系统设计与优化实践

1. 项目概述这个库存管理系统是我去年为一家中型电商企业开发的内部管理工具,核心目标是解决他们长期存在的库存数据不准确、人工盘点效率低下问题。系统采用Spring Boot框架开发,前后端分离架构,对接了企业现有的ERP系统,实现了从…

2026/10/15 8:05:10 阅读更多 →
diagram-design:用工程化思维管理图表,告别散乱与重复劳动

diagram-design:用工程化思维管理图表,告别散乱与重复劳动

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到 “diagram-design” 这个词,很多人会下意识觉得它只是“画图”的另一种说法。但真正在项目里被图表折磨过的人都知道,画图本身从来不是难点,难的是让图“能…

2026/10/15 8:05:10 阅读更多 →
Jev架构:面向高可靠性AI决策的类型安全契约范式

Jev架构:面向高可靠性AI决策的类型安全契约范式

1. 这不是又一个AI玩具:Jev到底在解决什么真实问题?“Jev”这个词最近在技术圈里冒得有点快,但翻遍主流文档、开源仓库和行业白皮书,你会发现它既不是某个大厂刚发布的模型代号,也不是某家创业公司注册的商标——它更像…

2026/10/15 8:05:10 阅读更多 →

最新新闻

T3 Stack 全栈开发实战:类型安全架构从入门到避坑指南

T3 Stack 全栈开发实战:类型安全架构从入门到避坑指南

在前后端分离大行其道的今天,TypeScript 全栈方案已经不是什么新鲜词。但有一个技术组合,从 2022 年开始就在海外开发者圈子里持续霸榜,直到现在依然是很多团队做中大型项目的首选架构,就是 t3code 背后这套技术栈——更准确地说&…

2026/10/15 8:58:11 阅读更多 →
Spring无参构造器Bean实例化机制详解

Spring无参构造器Bean实例化机制详解

1. 无参构造器场景下的Spring Bean创建机制解析在Spring框架的核心实现中,createBean方法作为Bean实例化的关键入口,其构造器选择逻辑直接影响着依赖注入的行为模式。今天我们就来深入探讨Spring在无参构造器场景下的实例化策略,这是理解Spri…

2026/10/15 8:58:11 阅读更多 →
7件做了必定后悔的人生决策与预防策略

7件做了必定后悔的人生决策与预防策略

1. 项目概述"老王-7件事做了必定后悔"这个标题看似简单,却蕴含着丰富的人生经验总结。作为一个长期关注个人成长与决策优化的实践者,我发现在日常生活中确实存在一些看似平常但后果严重的决策陷阱。这些决策往往在当时显得合情合理&#xff0c…

2026/10/15 8:58:11 阅读更多 →
水波透射仿真:光学原理在海洋工程中的应用

水波透射仿真:光学原理在海洋工程中的应用

1. 项目背景与核心问题这个光学仿真项目研究的是水波在遇到多个垂直薄板时的透射行为。作为一名长期从事波动光学研究的工程师,我发现这类问题在海洋工程、声学屏障设计等领域有着广泛的应用价值。比如在设计防波堤时,我们需要精确预测波浪能量通过障碍物…

2026/10/15 8:58:11 阅读更多 →
Windows本地账户密码遗忘:安全重置全流程指南

Windows本地账户密码遗忘:安全重置全流程指南

1. 项目概述:当Windows登录界面变成一道锁,你手里的钥匙去哪儿了?“Windows系统遗忘密码怎么办”——这短短十个字,背后是数以百万计普通用户在清晨赶着开电脑写报告、深夜调试程序突然卡住、或是帮家里老人修电脑时最常遇到的窒息…

2026/10/15 8:58:11 阅读更多 →
膜反应器原理、应用与维护全解析

膜反应器原理、应用与维护全解析

1. 膜反应器概述膜反应器作为一种将反应与分离过程耦合的装置,在化工、生物、环境等领域已有超过50年的应用历史。我第一次接触这类设备是在2012年参与某制药废水处理项目时,当时使用的中空纤维膜组件至今仍在稳定运行。这种将化学反应与膜分离技术相结合…

2026/10/15 8:57:11 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →