2. Linux 基础 1:文件系统、权限、进程与常用命令

把“会用服务器”变成“能排障与自动化”的基础。

本章目标

把 Linux 从“会敲命令”升级为“能理解系统、能排障、能自动化”。

你将掌握

文件系统与路径、权限模型、进程与信号、日志与排障的基本套路。

真实收益

当部署失败、服务挂了、权限报错时,你能快速定位“到底卡在哪一层”。

Linux 对 DevOps 的意义很像“人体解剖学”对医生:你可以先靠经验救急,但要想越做越稳、越做越快,最终都要回到结构与机制。
这章我们用一个朴素的目标来推进:让你能把“系统为什么这样表现”讲清楚,并能用一套稳定的排障路径把问题切开。

1) 先把地图铺开:Linux 的“四层理解”

  1. 文件(Files):配置、日志、制品、脚本,最终都会落成文件。
  2. 权限(Permissions):“能不能做”比“怎么做”更常导致故障。
  3. 进程(Processes):服务运行就是进程与资源的组合。
  4. 网络(Network):请求能不能到、数据能不能回,决定系统能不能“活”。
DevOps 的一个小秘诀:排障不要先猜“应用坏了”。先把问题归类到四层之一,再用最短命令验证假设。
你会发现,很多故障其实是“路径不对 / 权限不够 / 进程没起来 / 端口没通”。

2) 文件系统:路径、层级与“你到底在操作哪一台机器?”

在服务器上做事,第一件事不是“跑命令”,而是确认你在正确的位置、对正确的对象动手。

你最常用的一组“定位命令”

3) 权限模型:Linux 的“安检口”

权限不是为了刁难你;它是为了让系统在多人协作与自动化下仍然可控。

图 1:权限三元组(u/g/o)+ r/w/x 的真正含义(动态)

很多权限问题不是“缺少 sudo”,而是你没把对象与动作对上:读/写/执行在文件与目录上含义不同。

示例:-rwxr-x--- 把权限拆成三段:u(owner)/ g(group)/ o(others) u (owner) 文件:读/写/执行 目录:列出/创建/进入 r 读取内容 w 修改内容 x 执行/进入 g (group) 用“组”把权限从个人升级成团队 常见:服务用户 + 运维组 正确姿势:最小权限 + 可审计 o (others) “其他人”通常是风险来源 避免:777 / world-writable 优先:组权限 + ACL(必要时) 排障口诀:看对象(文件/目录)→ 看属主/属组 → 看权限位 → 再看运行用户是谁

权限相关的高频命令(能救命)

目录上的 x 是“进入权”:很多人以为“我有 r 就能读取目录里的文件”。其实你需要目录的 x 才能穿过这个目录。排障时经常卡在这一点。

4) 进程:服务到底是怎么“活着”的?

服务不神秘:就是一个或一组进程,在某个用户身份下运行,占用 CPU/内存/文件句柄/端口,按约定读配置、写日志、对外提供服务。

图 2:进程生命周期与状态(动态)

从“启动 → 运行 → 阻塞 → 退出/崩溃”的路径,决定了你该看哪里:日志?资源?权限?信号?

Start 启动/加载配置 权限/路径常见坑 Running 处理请求/任务 CPU/内存/句柄 Blocked 等待 IO/锁/网络 排查:日志+指标 Exit 正常退出/崩溃 信号/异常/ OOM 小技巧:先用 ps/top 看“活没活”,再用日志确认“为什么”。

进程排查的最短路径(实用)

5) 信号:让进程“优雅停止”,避免发布变成事故

CI/CD 里最常见的“坑”之一:发布时直接 kill -9,请求被硬切、数据不一致、下一次启动还要回收现场。

你需要记住三类信号:

发布的黄金法则:先让进程收到“可优雅退出”的信号,给它清理与完成请求的时间;如果超时再升级手段。
这就是为什么很多生产系统会配置 graceful-timeout、preStop hook、drain connections。

6) 一套通用排障流程:从现象到根因(动态)

图 3:DevOps 排障“漏斗”(动态)

从“是否可达”到“是否有权限”再到“是否有进程”,把问题快速收敛到一层。

1. 可达性 DNS / 端口 / 路由 2. 身份与权限 user/group/secret 3. 进程与资源 CPU/内存/句柄 4. 日志与证据链 把“猜测”变成“可复现的证据” 定位根因 → 修复 → 加护栏(自动化/门禁/监控) 目标:把问题从“玄学”收敛成“某一层的确定性错误”。

本章小结:你应该带走的“工具箱”

← 上一章:DevOps 是什么 下一章:Linux 基础 2(systemd / 日志)→