Linux 排障:权限、服务、空间与远程登录 · 服务变更失败的恢复与复盘
服务变更失败的恢复与复盘
以下演练将Linux 维护任务的变更、失败证据和恢复验收串起来;先熟悉配套示例中的服务账户、固定状态目录、flock 与 timer。演练未执行。
本篇用于巩固整个 Linux 课程,先独立回答,再看后面的参考解答。适用 GNU/Linux/systemd 教学族及 2026-10-17 核对范围;完整例子都未执行,需在目标环境核对权限与影响,答案是理论推导,不是服务实测证据。
故障场景与影响
维护任务手动执行成功,交给 systemd timer 后却没有生成报告。
先记录首次异常时间、受影响对象和最近变更,区分个别对象失败与整条管理链路异常。以下是排查演练,不是已发生事故的实测记录。
按证据定位原因
- 把计划触发时间、service 实际开始时间与报告批次放在同一时区,确认 timer 是否真的启动了目标单元。
- 检查 service 的执行用户、工作目录、EnvironmentFile 和 ExecStart 绝对路径;对比交互终端环境。
- 结合 Result、ExecMainStatus 与该次 journal 判断是未启动、执行失败还是产物写到了错误位置;保留变更前后的 unit 与 drop-in。
恢复步骤与验收
先暂停后续调度并确认当前任务状态,只恢复本任务已核对的配置或路径权限。修改 unit 后重载管理器定义;修改应用配置是否需要应用重载,应按该程序约定处理。
验收:以服务账户完成一次指定批次,退出码与报告内容一致;下一次计划触发也产生对应证据。日志轮转后仍能写入,恢复操作没有扩大其他目录权限。
将触发条件、直接原因、修复动作、恢复证据和后续检查写入同一份复盘,明确每项后续工作的负责人。机制参考:官方说明。
文件与身份自检
Linux 权限复习先回答三个问题:文件可写但父目录不可搜索,能否沿完整路径打开?文件只读但父目录可写可搜索,能否删除名字?umask=077 能否修好既有 0644 文件?请分别说出内容访问、目录项操作和创建权限的边界。
再判断:固定目录做一次 readlink 检查是否就能防御同 UID 进程不断替换对象?答案需要说明信任边界,而不只列出一个命令。路径解释与任务契约是核对位置。
服务与调度自检
Linux systemd 复习比较 start、enable、daemon-reload 与 reload。为什么一个成功的 oneshot 可以 inactive,为什么 timer 的 Persistent=true 不能称为所有历史任务的重放?同一 service 不并行激活,是否足够防止手动脚本竞争?
写出一次变更流程:暂停调度、确认任务结束、保存配置、发布脚本或环境、必要时 daemon-reload、手动检验一次、恢复调度。标明每步产生什么证据;实际结果应在独立测试环境记录。
网络与存储自检
Linux 网络存储复习要求解释:ping 成功而 HTTP 失败为何并不矛盾?监听在 127.0.0.1 为何不接受发往主机外部地址的连接?df 空闲字节足够却无法创建文件,还要看哪些约束?为什么删掉打开的日志,空间可能还没下降?
再想一层:load average 为 8 能否直接叫作“CPU 800%”?若对维护目录做 tar 并保留在同一盘,是否已经建立独立灾备?这些问题检验的是对象与统计口径,不是命令背诵。
综合维护练习
Linux 维护复习给出一个场景:MAX_BYTES=1,目录权限原本正确,凌晨一次任务超时,当前只剩 maintenance.log.1 和 maintenance.log.3。请写出安全恢复顺序、最多三个归档的含义、无法从本例保证的事项。要求不递归删除、不重建仍被持有的锁,不对真实业务日志做实验。
再提出一个聚焦的验证表,至少含正常首次追加、达到阈值、五次轮转、非法变量、符号链接、多硬链接、锁忙和中途失败。每项记录预期退出状态、允许变化的确切文件名及恢复方式。不要因为语法解析成功就填写实际结果为通过。
独立参考解答
文件题:完整路径需要每一级目录的搜索权限;删除名字主要受父目录和额外 sticky/ACL/强制策略影响;umask 只屏蔽新建对象的请求权限,不改旧文件。pathname 检查与使用之间仍有时间窗口,本例依赖 root 管理父目录、0700私有目录和可信同 UID 写者,不能对抗恶意同身份进程。
服务题:start 改当前运行状态,enable 改未来的启动关系;daemon-reload 重读单元定义,reload 由应用实现配置重读。oneshot 退出后 inactive 可正常,需看 Result 和退出码。Persistent 补一次漏触发,不保证每轮业务完成,也不排队重放。flock 仍需要覆盖手动入口,所有实例必须使用同一个锁 inode。
网络与存储题:ICMP 与 HTTP 是不同协议层和端口;回环绑定与外部地址不同。容量外还查 inode、配额、只读挂载和访问控制。unlink 不使已有描述符立即关闭。负载平均数包含可运行及某些等待任务,不能换算成 CPU 百分比。同盘归档只提供局部历史,不是独立备份,必须有独立副本与恢复检验。
综合题:先停止 timer,再确认 service 与所有手动实例结束,保存现有精确文件及日志,核对超时原因。序号缺口可能来自中断,不能假设归档内容按日完整;确认权限与文件对象后恢复变量和配置,日后另行验证一次再启用调度。最多三个是数量上限,当前文件另计;不保证天数、事务性、断电持久性或磁盘故障恢复。
验证表参考:正常退出 0 且只新增当前日志;阈值轮转最多修改四个日志名;非法变量/链接/权限返回 1;锁忙 75 且没有日志修改;中断可能留下缺口或部分追加,需保存现场。真正的实际结果必须以后在独立 Linux 环境执行后填写,本文不提供运行通过记录。
后续范围与查阅入口
首批覆盖文件权限、路径、进程与 systemd、网络和磁盘诊断、完整受限维护任务及恢复。没有交付内核调优、LVM/RAID实操、发行版安装、SELinux策略编写、企业备份系统或完整 Shell 课程;这些不能由一份小型脚本推定掌握。既有基础命令、进阶排障、SSH失败场景仍可查阅,历史 CentOS 与 OpenWrt 文须保留平台边界。
继续阅读
- 排错
- 排错
- 命令与系统观察