首页/系统/Linux 运维命令速查/场景:用 rescue/emergency 目标恢复系统
systemd 与服务42 条

场景:用 rescue/emergency 目标恢复系统

系统服务大面积异常时进入 rescue 目标(单用户)做维护:只启基础服务、不拉网络与多用户业务,修完再切回。

Linux 运维命令速查系统更新于 2026-10-13

这条路径解决什么

当系统启动到一半卡住,或服务大面积异常、多用户模式下无法正常操作时,可以切到 rescue.target(对应传统 runlevel 1 的单用户模式)做最小化维护:它只挂载本地文件系统、只拉起基础单元,不进入多用户业务。emergency.target 更极端,基本不挂载根以外的文件系统、也不启动服务,直接给一个 root 救援 shell,用于根分区或 fstab 严重损坏的场景。

基本信息

适用平台Linux(systemd)
进入方式运行中 systemctl rescue;启动阶段在内核参数加 systemd.unit=rescue.target;或在引导菜单里选救援条目
退出方式systemctl isolate multi-user.target 或直接 reboot
前置条件需要 root 口令(救援 shell 会要求认证)
常用动作systemctl --failed、journalctl -xb、文件系统检查与修复

典型使用场景

  • fstab 写错导致启动卡住:进 rescue 后修正,再用 findmnt --verify 自检
  • 根分区元数据异常:进 rescue 卸载后做文件系统检查
  • 服务互相拖死:只拉起基础单元,逐个手工启动定位元凶
  • 误改关键配置:用救援模式改回,避免正常模式下被其他服务干扰
  • 忘记 root 口令:借助内核参数或引导条目进入维护 shell 重置

进入与退出

进入与退出
systemctl rescue                     # 运行中切换,会要求 root 口令
systemctl get-default                # 确认默认目标仍是多用户模式
systemctl isolate multi-user.target  # 修复完成后先切回多用户验证
reboot                               # 重启做最终的完整验证

救援模式常用动作

救援模式常用动作
systemctl --failed                       # 列出失败单元
journalctl -xb -p err | tail -n 50       # 本次启动的错误日志
findmnt --verify -F /etc/fstab           # 校验 fstab 是否可解析
fsck -f /dev/sdb1                        # 数据盘检查:确认该盘已卸载
mount | grep '/data'                     # 确认没有残留挂载再动手

两种救援目标对比

维度rescue.targetemergency.target
挂载情况挂载 fstab 里的本地文件系统基本只挂载根,其余不挂载
启动的服务拉起基础与必要单元几乎不启动任何服务
适用场景单用户维护、服务排障根分区或 fstab 严重损坏
进入方式systemctl rescue 或内核参数 systemd.unit=rescue.targetsystemctl emergency 或内核参数 systemd.unit=emergency.target
远程 isolate rescue 会断开 SSH 会话:必须提前确认带外通道(IPMI、云控制台、虚拟机控制台)可用。另外 rescue shell 要求输入 root 口令,如果 root 被锁定或口令丢失,需要改用内核参数 init=/bin/bash 或 rd.break 之类的方案,而那是另一套更危险的操作。
救援模式下不要急着启动全部服务:先用 systemctl --failed 与 journalctl -xb 看清失败原因,修好一处再验证一处。做完后 isolate 回 multi-user.target 或重启完整验证,只有重启都没问题才算真正修好。
如果系统已经起不来,日志要在别处看:能进救援模式就用 journalctl -xb 看本次启动,起不来时用 journalctl --list-boots 列出历史启动并回看上一次的记录,或用另一台机器挂载这块盘取证。动手前把信息留全,避免反复重启把现场冲掉。

易错点

  • rescue 会停掉不在依赖链里的服务(是否包含 SSH 取决于配置),操作前确认带外通道可用
  • emergency 比 rescue 更极端,几乎不挂载文件系统,只适合处理根相关的严重问题
  • 救援 shell 需要 root 口令,root 被锁定或口令丢失时进不去,要提前准备带外方案
  • 在 rescue 模式下对已挂载的分区做 fsck 或 xfs_repair 是禁忌,必须先确认卸载
  • 修完不重启验证就认为结束,容易漏掉开机阶段才暴露的问题

数据来源与参考

  • man 5 systemd.special(rescue/emergency target)
  • man 1 systemctl(isolate)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌