2. Linux 基础 1:文件系统、权限、进程与常用命令
把“会用服务器”变成“能排障与自动化”的基础。
本章目标
把 Linux 从“会敲命令”升级为“能理解系统、能排障、能自动化”。
你将掌握
文件系统与路径、权限模型、进程与信号、日志与排障的基本套路。
真实收益
当部署失败、服务挂了、权限报错时,你能快速定位“到底卡在哪一层”。
Linux 对 DevOps 的意义很像“人体解剖学”对医生:你可以先靠经验救急,但要想越做越稳、越做越快,最终都要回到结构与机制。
这章我们用一个朴素的目标来推进:让你能把“系统为什么这样表现”讲清楚,并能用一套稳定的排障路径把问题切开。
这章我们用一个朴素的目标来推进:让你能把“系统为什么这样表现”讲清楚,并能用一套稳定的排障路径把问题切开。
1) 先把地图铺开:Linux 的“四层理解”
- 文件(Files):配置、日志、制品、脚本,最终都会落成文件。
- 权限(Permissions):“能不能做”比“怎么做”更常导致故障。
- 进程(Processes):服务运行就是进程与资源的组合。
- 网络(Network):请求能不能到、数据能不能回,决定系统能不能“活”。
DevOps 的一个小秘诀:排障不要先猜“应用坏了”。先把问题归类到四层之一,再用最短命令验证假设。
你会发现,很多故障其实是“路径不对 / 权限不够 / 进程没起来 / 端口没通”。
你会发现,很多故障其实是“路径不对 / 权限不够 / 进程没起来 / 端口没通”。
2) 文件系统:路径、层级与“你到底在操作哪一台机器?”
在服务器上做事,第一件事不是“跑命令”,而是确认你在正确的位置、对正确的对象动手。
- 绝对路径 vs 相对路径:部署脚本里优先用绝对路径,减少“当前目录”导致的隐形坑。
- 常见目录语义:
/etc配置、/var/log日志、/var/lib状态数据、/opt第三方软件、/home用户目录。 - 一个现实陷阱:容器里看到的
/app,可能是挂载来的;权限与属主可能和宿主机不一致。
你最常用的一组“定位命令”
pwd:我在哪?ls -lah:这里有什么?是谁的?大小多少?stat:更精确的文件元数据(权限、属主、时间戳)。find/whereis:文件/命令在哪里?(谨慎使用,范围要小)
3) 权限模型:Linux 的“安检口”
权限不是为了刁难你;它是为了让系统在多人协作与自动化下仍然可控。
图 1:权限三元组(u/g/o)+ r/w/x 的真正含义(动态)
很多权限问题不是“缺少 sudo”,而是你没把对象与动作对上:读/写/执行在文件与目录上含义不同。
权限相关的高频命令(能救命)
id:我是谁?属于哪些组?ls -l:属主/属组/权限位chmod/chown/chgrp:改权限/属主/属组(谨慎)sudo -u <user> -H bash:模拟服务用户,复现权限问题
目录上的 x 是“进入权”:很多人以为“我有 r 就能读取目录里的文件”。其实你需要目录的
x 才能穿过这个目录。排障时经常卡在这一点。
4) 进程:服务到底是怎么“活着”的?
服务不神秘:就是一个或一组进程,在某个用户身份下运行,占用 CPU/内存/文件句柄/端口,按约定读配置、写日志、对外提供服务。
图 2:进程生命周期与状态(动态)
从“启动 → 运行 → 阻塞 → 退出/崩溃”的路径,决定了你该看哪里:日志?资源?权限?信号?
进程排查的最短路径(实用)
- 活没活:
ps aux/Get-Process(Windows) - 占啥资源:
top/htop,看 CPU、内存、负载 - 端口开没开:
ss -lntp/netstat -ano - 日志说啥:应用日志 + systemd/journal + 容器日志
5) 信号:让进程“优雅停止”,避免发布变成事故
CI/CD 里最常见的“坑”之一:发布时直接 kill -9,请求被硬切、数据不一致、下一次启动还要回收现场。
你需要记住三类信号:
- SIGTERM:“请优雅退出”(默认的 stop 方式)
- SIGKILL:“立刻结束”(最后手段,几乎不给清理机会)
- SIGHUP:很多服务用它来“重载配置”(不一定通用)
发布的黄金法则:先让进程收到“可优雅退出”的信号,给它清理与完成请求的时间;如果超时再升级手段。
这就是为什么很多生产系统会配置 graceful-timeout、preStop hook、drain connections。
这就是为什么很多生产系统会配置 graceful-timeout、preStop hook、drain connections。
6) 一套通用排障流程:从现象到根因(动态)
图 3:DevOps 排障“漏斗”(动态)
从“是否可达”到“是否有权限”再到“是否有进程”,把问题快速收敛到一层。
本章小结:你应该带走的“工具箱”
- 定位三连:
pwd(位置)→ls -lah(对象)→id(身份) - 权限心法:对象(文件/目录)不同,r/w/x 含义不同;目录的 x 是“通行证”。
- 进程心法:服务就是进程 + 资源 + 配置;先确认“活没活”,再找“为什么”。
- 发布心法:优雅停机靠信号与超时;不要轻易上来就
kill -9。 - 排障心法:按层收敛:可达性 → 权限 → 进程/资源 → 日志证据链。