解释路径、权限、进程与文件描述符
TECH-08 · TECHNOLOGY FIELD GUIDE
Linux 命令与系统诊断
从文件、身份与进程建立心智模型,用管道组织证据,用日志和分层检查解决真实故障。
面向日常开发与自有 Linux 主机的可搜索命令手册,覆盖文件、权限、进程、网络、systemd、包管理、Shell 管道、排错和安全;优先提供只读观察命令,破坏性操作不提供一键复制。
LAB BOUNDARY / 实验边界
先固定范围,再打开工具
默认只在自有 Linux 虚拟机、容器或明确授权主机练习。复制前读懂路径、通配符、重定向、变量与权限;涉及 sudo、删除、递归改权、磁盘、网络或服务变更时先快照并手工输入。
OUTCOMES / 完成标准
用可审阅的产出证明掌握
路线、实验与里程碑都围绕这四项能力收敛。
用只读命令形成故障证据链
安全阅读 systemd 与网络状态
写出带验证和回滚的个人运行手册
ROUTE MAP / 路线索引
七个维度形成完整闭环
选择节点快速跳转;搜索和筛选会保留上下文。
FIELD LIBRARY / 技术知识库
搜索概念、方法、工具与故障
只有经过内容审阅的本地命令、模板和清单提供复制按钮。
文件与 Shell 打底,权限和进程进阶,最后做系统排错
每阶段先预测输出,再运行命令,最后用自己的话写一条回忆锚点。
阶段 1 · 路径、文本与帮助
掌握绝对/相对路径、工作目录、隐藏文件、标准输入输出错误、引用与展开;形成 man → --help → info 的查阅习惯。
阶段 2 · 身份、权限与进程
理解 UID/GID、模式位、ACL、umask、进程树、信号、作业和文件描述符;先观察再变更。
阶段 3 · 网络、服务与软件包
沿 DNS—路由—监听—连接—TLS—应用分层诊断;把 systemd unit、journal 与发行版包管理器连成证据链。
阶段 4 · Shell 脚本与运行手册
用小管道处理文本,以退出码、set -u、pipefail、临时目录和明确清理提升可靠性;为常见故障写可验证清单。
回忆锚点 · 六问诊断法
我在哪台机器/命名空间?以谁的身份?操作哪个路径/对象?当前状态是什么?刚才改变了什么?怎样证明恢复?
一切围绕名称、身份、进程、描述符与数据流
记住对象关系比背命令更耐久;命令只是查询和改变模型的接口。
路径名不是文件本体
目录把名称映射到 inode;硬链接共享 inode,符号链接保存另一条路径。删除名称不一定立即释放仍被进程打开的文件。
权限由身份与路径共同决定
访问文件要穿过每一级目录;所有者/组/其他模式位、ACL、umask、挂载选项和安全模块共同影响结果。root 也不等于可以忽略系统边界。
进程继承环境与打开对象
进程有 PID/PPID、凭据、工作目录、环境、文件描述符和命名空间;服务故障常源于交互 Shell 与服务环境不同。
管道传字节,工具解释记录
管道把前一进程 stdout 接到后一进程 stdin;stderr 默认仍去终端。文本分隔、区域设置、文件名中的换行和退出码会影响可靠性。
服务管理不是进程列表
systemd unit 描述依赖、生命周期、环境和重启策略;一个 unit 可启动多个进程,进程退出也可能被策略拉起。
先用只读观察命令建立机器画像
以下复制项不会修改系统;仍需确认命令存在、输出是否含主机名、地址或其他敏感信息。
环境与发行版
记录 Shell、内核、架构、发行版和虚拟化背景;排错时不要把发行版版本与内核版本混为一谈。
printf 'shell=%s\n' "$SHELL"
uname -a
printf '%s\n' '--- /etc/os-release ---'
cat /etc/os-release文件与挂载画像
pwd/ls/stat/file 回答路径、目录项、元数据和类型;findmnt 解释目标路径落在哪个文件系统及其挂载选项。
pwd
ls -la -- .
stat -- .
findmnt --target .身份与权限画像
id 显示真实/有效身份与组;namei 沿路径展示每一级权限,比只看最终文件更适合 Permission denied。
id
namei -l -- "$HOME"进程与端口画像
先看进程关系、状态和运行时间,再看监听地址;-p 的进程信息可能受权限限制。
ps -eo pid,ppid,user,stat,etime,comm --sort=-etime | head -n 20
ss -lntup内置帮助梯度
type 说明名称是别名、函数、内置还是可执行文件;然后用 help、--help、man 或 info 查当前机器上的版本。
type -a printf
help printf
man 1 printf文件、权限、进程、网络、systemd、包管理与管道速查
复制项只做读取或在标准输出中转换文本;需要权限或会改变系统的动作留给人工审阅。
文件 · 小范围、显式类型
用 maxdepth 限定探索范围,以 -type 明确对象;文件名可含空格和换行,脚本批处理优先 NUL 分隔,不解析 ls 输出。
find . -maxdepth 2 -type f -print
find . -maxdepth 2 -type d -print权限 · 先解释再改变
对目标路径组合 id、namei、stat 与 getfacl;把缺少的是目录 x、文件 r/w、组成员还是 ACL 说清楚,再设计最小修复。
id
namei -l -- .
stat -c '%A %a %U:%G %n' -- .
getfacl -p -- . 2>/dev/null || true进程 · 从症状到树和描述符
ps/pgrep 定位身份、父子关系、状态与启动时间;/proc 与 lsof/lsfd 可解释打开文件和端口,但输出可能受权限限制。
ps -eo pid,ppid,user,stat,%cpu,%mem,etime,comm --sort=-%cpu | head -n 20
pgrep -a -u "$USER" . | head -n 20网络 · 解析到应用逐层验证
先看地址和路由,再看 DNS 配置、监听/连接、TLS 与 HTTP;不要从 ping 一项推断“网络正常”或“网络故障”。
ip -brief address
ip route show
ss -lntup
getent hosts example.comsystemd · unit 状态与本次启动日志
status 给出当前摘要,journalctl -b 限定本次启动;将 UNIT 替换为自有服务名,先读取 unit 文件和日志,再决定是否重启。
UNIT='example.service'
systemctl --no-pager --full status "$UNIT"
journalctl --no-pager -b -u "$UNIT" -n 100包管理 · 先识别所有权和候选版本
发行版命令不同。先查询文件属于哪个包、已装版本、仓库候选和变更预览;不要混用第三方脚本和系统包管理器。
command -v apt dnf rpm pacman zypper 2>/dev/null
command -v bash
bash --version | head -n 1管道 · 小步骤、保留错误、检查退出码
先对合成文本练过滤、排序与计数;复杂脚本使用 pipefail,避免前段失败却被最后一个成功命令掩盖。
printf '%s\n' beta alpha beta gamma alpha beta | sort | uniq -c | sort -nr
printf 'pipeline_status=%s\n' "$?"从错误原文和当前状态出发,一层层缩小范围
先保存时间、身份、命令、退出码和 stderr;不要边排错边大范围改权限或重装软件。
命令不存在或行为不同
用 type -a 与 command -V 确认解析到什么,检查 PATH、Shell、发行版与工具版本;同名命令在 BusyBox、BSD 和 GNU 上参数可能不同。
type -a -- sh bash ls 2>/dev/null
printf 'PATH=%s\n' "$PATH"Permission denied
高风险 · 手工复核记录身份,逐级查看路径权限、ACL、挂载选项与安全模块日志;不要用 chmod -R 777 作为诊断。
磁盘满但 df/du 对不上
分别检查块空间与 inode、挂载边界、稀疏文件、快照,以及已删除但仍被进程打开的文件;不要先删除未知日志。
df -hT
df -i
findmnt --df服务启动失败
保存 systemctl status、unit 文件、依赖和本次启动 journal;检查 ExecStart 路径、服务身份、环境、工作目录、端口冲突和速率限制。
域名或连接失败
区分名称解析、路由、监听、端口可达、TLS 与应用状态;在代理/VPN/容器环境中明确命名空间和观察点。
脚本静默成功或静默失败
检查每段退出码、stderr 重定向、set -e 的上下文和管道状态;为外部命令显式验证输出,不把“没有打印错误”当成功。
高风险命令必须脱离“复制—粘贴—祈祷”
以下类别刻意不显示复制按钮;需要变更时先缩小范围、预演、备份并准备验证与回滚。
删除、覆盖与磁盘工具
高风险 · 手工复核递归删除、强制覆盖、dd、mkfs、分区、LVM 和文件系统修复可能造成不可逆数据损失。先确认设备/挂载/备份,在可销毁实验机手工输入;本站不提供一键复制。
递归权限与所有权
高风险 · 手工复核chmod/chown 的 -R 可穿过巨大目录树并破坏服务、安全边界或密钥权限。先用 find/stat 列出精确集合,再只改变必要对象;不要使用 777 万能修复。
远程脚本、仓库与软件供应链
高风险 · 手工复核不要把 curl/wget 输出直接管给 shell,也不要忽略签名或仓库来源。下载后核对官方来源、HTTPS、签名/哈希与内容,再在最小权限环境执行。
sudo、SSH、防火墙与服务变更
高风险 · 手工复核这些操作可能扩大权限或把自己锁在服务器外。保留独立恢复会话、控制台入口、配置验证、超时回滚和维护窗口,再逐项手工实施。
秘密不会因为在终端里就安全
注意边界令牌可能进入历史、进程参数、日志和录屏。使用专用秘密存储或安全提示输入,不把真实密码写进命令行、脚本、截图和第二大脑。
把命令记忆升级为四份可复用运行手册
练习只使用自有虚拟机和合成数据,每一步都写预期、观察、结论与恢复证明。
M1 · 文件与权限实验
在临时目录创建文件、目录、硬/软链接与两个测试组,预测并验证路径遍历、umask 和 ACL;最后只删除自己的临时目录。
M2 · 本地服务观测
运行一个仅绑定 localhost 的自写服务,画出进程树、端口、文件描述符和日志流;不开放公网端口。
M3 · 用户级 systemd 单元
为无特权示例程序编写 user unit,验证启动、失败、重启限制、日志与环境;提交 unit、测试和卸载清单。
M4 · 分层故障包
人为制造路径权限、端口占用、错误 DNS 名称和磁盘配额四类安全故障,用只读命令形成时间线、根因、最小修复与恢复证据。
长期成果 · 个人命令卡
每张卡只收一个任务:适用条件、只读探针、预期输出、危险边界、变更步骤、验证、回滚和官方来源;季度复核过期参数。
尝试更短的关键词,或清空分类后重新搜索。
REFERENCE SOURCES / 参考资料
优先回到标准、厂商与官方项目
外部页面可能更新;进入后核对版本、修订日期、平台与许可。
GNU Bash Reference Manual
Shell 语法、引用、展开、管道、重定向、作业控制和退出状态的上游手册。
打开原始资料 ↗(新窗口打开)GNU Coreutils Manual
ls、cp、mv、rm、chmod、chown、sort、uniq 等 GNU 基础工具的原始说明。
打开原始资料 ↗(新窗口打开)Linux man-pages Project
Linux 系统调用、库函数、文件格式与管理命令的上游手册页项目。
打开原始资料 ↗(新窗口打开)systemd Project & Documentation
systemctl、journalctl、unit、service 与 journald 的上游项目和手册入口。
打开原始资料 ↗(新窗口打开)Linux Kernel Documentation · Administration
内核参数、设备、cgroup、安全、文件系统与系统管理的官方文档入口。
打开原始资料 ↗(新窗口打开)Debian Reference · Package management
Debian 官方的 APT/dpkg 基础、依赖、仓库与恢复参考;其他发行版应回到各自文档。
打开原始资料 ↗(新窗口打开)Red Hat Enterprise Linux · Managing software
DNF 软件包、模块与仓库管理的厂商文档。
打开原始资料 ↗(新窗口打开)SOURCE CHECK · 外部资料核验日期:2026-08-23