Linux休眠与挂起究竟有何区别?

Linux休眠将系统状态保存到硬盘后完全断电,恢复时从硬盘加载;挂起则保持内存供电进入低功耗状态,可快速唤醒但持续耗电,休眠适合长时间断电,挂起适合短时离开。

在深入设置之前,明确 Linux 中两种主要的节能状态至关重要,因为它们的设置方式不同:

  1. 挂起 (Suspend / Sleep to RAM – suspend):

    • 原理: 将系统当前状态(内存内容)保存在 RAM 中,关闭除 RAM 之外的大部分硬件(CPU、硬盘、屏幕等)的供电,RAM 需要持续少量供电来保持数据。
    • 特点: 唤醒速度非常快(几秒钟),耗电量低(但并非为零),如果断电(如拔掉笔记本电源且电池耗尽),未保存的工作会丢失。
    • 常见操作: 合上笔记本盖子、按下电源按钮选择“睡眠”、系统设置中的“暂停”选项。
  2. 休眠 (Hibernate – hibernate):

    • 原理: 将系统当前状态(内存内容)完整地写入到硬盘(通常是 Swap 交换分区或 Swap 文件)中,然后完全关闭计算机电源。
    • 特点: 唤醒速度较慢(需要从硬盘读取数据回内存),但唤醒后能恢复到休眠前的精确状态,完全断电后数据也不会丢失,因为状态保存在硬盘上。
    • 常见操作: 系统设置中的“休眠”选项、特定命令。

用户通常关心的“休眠时间设置”主要涉及:

  1. 自动进入挂起/休眠的等待时间: 当系统闲置(无用户操作)一段时间后,自动触发挂起或休眠。
  2. 合上笔记本盖子时的行为: 合盖后是执行挂起、休眠还是什么都不做。
  3. 按下电源按钮时的行为: 短按电源按钮是执行挂起、休眠、关机还是弹出菜单。
  4. 当电池电量极低时的行为: 是执行挂起、休眠还是强制关机。

如何设置这些时间或行为?

设置方法主要取决于你使用的 桌面环境 (Desktop Environment, DE)系统管理工具,以下介绍主流方法:

通过图形化系统设置 (推荐给大多数桌面用户)

这是最简单直观的方式,适用于 GNOME, KDE Plasma, Xfce, Cinnamon, MATE 等主流桌面环境,具体路径大同小异:

  1. 打开“系统设置” (System Settings)。 通常在应用程序菜单中能找到。
  2. 寻找“电源管理” (Power Management)、“节能” (Energy Saving) 或“电源” (Power) 相关选项。
  3. 查找以下关键设置项:
    • 屏幕关闭时间 (Turn off the screen / Blank screen): 设置显示器在无操作后关闭的时间,这通常独立于挂起/休眠。
    • 自动挂起/暂停 (Automatic Suspend / Sleep):
      • 使用电池时 (On Battery Power): 设置笔记本在使用电池供电时,闲置多久后自动挂起。
      • 接通电源时 (Plugged In): 设置笔记本在连接电源适配器时,闲置多久后自动挂起。
      • 选项: 通常有“从不”、“5分钟”、“10分钟”、“15分钟”、“30分钟”、“1小时”、“2小时”等,选择你需要的时长。
    • 自动休眠 (Automatic Hibernate): 注意:并非所有发行版或桌面环境都直接在图形界面提供此选项。 如果提供,设置逻辑与自动挂起类似,但时间通常更长(在挂起一段时间后自动转入休眠以进一步省电)。
    • 合上盖子时的行为 (When the lid is closed):
      • 使用电池时: 选择合盖后执行的操作(如“挂起”、“休眠”、“关机”、“不执行任何操作”)。
      • 接通电源时: 同上。
    • 按下电源按钮时的行为 (When the power button is pressed): 设置短按电源按钮的操作(如“挂起”、“休眠”、“关机”、“弹出菜单”、“不执行任何操作”)。
    • 低电量操作 (Critical Battery Action): 设置当电池电量降至极低水平(如 3%-5%)时执行的操作(通常是“挂起”、“休眠”或“关机”),同时可以设置触发该操作的电量阈值

使用 systemdsleep.conf 文件 (适用于所有支持 systemd 的系统)

systemd 是现代 Linux 发行版的核心系统和服务管理器,它可以更精细地控制挂起和休眠的行为,包括设置挂起延迟后自动转入休眠的时间(这是实现“休眠时间”的关键之一)。

  1. 创建或编辑配置文件: 使用具有管理员权限的文本编辑器(如 sudo nanosudo gedit)打开或创建文件:

    sudo nano /etc/systemd/sleep.conf
  2. 配置关键参数: 在文件中添加或修改 [Sleep] 部分,最重要的参数是:

    • HibernateDelaySec=: 指定系统在挂起 (suspend) 状态持续多少秒后,自动转入休眠 (hibernate),这对于希望挂起一段时间后彻底断电省电非常有用。
      • HibernateDelaySec=1h (1小时后转入休眠), HibernateDelaySec=30min (30分钟后转入休眠)。
    • 其他可能相关的参数(根据需求):
      • SuspendMode=: 指定挂起模式 (suspend, deep, shallow – 取决于硬件支持)。
      • SuspendState=: 指定挂起时进入的 ACPI 状态 (mem, standby – 通常用 mem)。
      • HibernateMode=: 指定休眠模式 (platform, shutdown – 通常用 platform)。
      • HibernateState=: 指定休眠时进入的 ACPI 状态 (disk)。

    示例 /etc/systemd/sleep.conf 片段:

    [Sleep]
    # 挂起后 2 小时自动转入休眠
    HibernateDelaySec=2h
    # 使用深度挂起 (如果硬件支持)
    SuspendMode=deep
    SuspendState=mem
    HibernateMode=platform
    HibernateState=disk
  3. 保存并退出编辑器。

  4. 重启 systemd-logind 服务使更改生效 (通常不是必须,但有时需要):

    sudo systemctl restart systemd-logind.service

使用 systemdlogind.conf 文件 (控制用户会话行为)

这个文件控制当用户执行特定操作(如合盖、按电源键)或系统处于特定状态(如空闲)时,systemd-logind 服务的行为。

  1. 创建或编辑配置文件:

    sudo nano /etc/systemd/logind.conf
  2. 配置关键参数: 找到并取消注释(删除行首的 )或添加以下行,并设置所需的值:

    • 处理盖子开关:
      • HandleLidSwitch=: 合上盖子时的操作 (suspend, hibernate, poweroff, ignore 等)。
      • HandleLidSwitchExternalPower=: 当连接外部电源时合上盖子的操作(覆盖 HandleLidSwitch)。
      • HandleLidSwitchDocked=: 当系统被认为处于“Docked”(扩展坞)状态时合上盖子的操作。
    • 处理电源键:
      • HandlePowerKey=: 按下电源键时的操作 (suspend, hibernate, poweroff, reboot, halt, kexec, ignore 等)。
    • 处理挂起键和休眠键 (如果有):
      • HandleSuspendKey=, HandleHibernateKey=: 类似。
    • 空闲行为 (与图形界面设置类似):
      • IdleAction=: 当系统检测到空闲时执行的操作 (suspend, hibernate, poweroff, reboot, halt, ignore 等)。
      • IdleActionSec=: 系统空闲多少秒后执行 IdleActionIdleActionSec=15min
    • 低电量处理:
      • HandleLowPower=: 当电池电量达到 LowPowerPercentageLowPowerVoltage 时执行的操作 (suspend, hibernate, poweroff, ignore 等)。
      • LowPowerPercentage=, LowPowerVoltage=: 定义“低电量”的阈值。
      • CriticalPowerAction=: 当电池电量达到 CriticalPowerPercentageCriticalPowerVoltage 时执行的操作 (suspend, hibernate, poweroff, ignore 等)。
      • CriticalPowerPercentage=, CriticalPowerVoltage=: 定义“严重低电量”的阈值。

    示例 /etc/systemd/logind.conf 片段:

    [Login]
    # 合盖时休眠
    HandleLidSwitch=hibernate
    # 连接电源时合盖也休眠 (明确指定)
    HandleLidSwitchExternalPower=hibernate
    # 短按电源键弹出操作菜单
    HandlePowerKey=ignore  # 或者设置为 poweroff/shutdown 等
    # 空闲 30 分钟后挂起
    IdleAction=suspend
    IdleActionSec=30min
    # 电量低于 10% 时挂起,低于 5% 时强制休眠
    HandleLowPower=suspend
    LowPowerPercentage=10
    CriticalPowerAction=hibernate
    CriticalPowerPercentage=5
  3. 保存并退出编辑器。

  4. 重启 systemd-logind 服务使更改生效:

    sudo systemctl restart systemd-logind.service

重要前提:确保休眠功能正常工作

  • 足够的 Swap 空间: 休眠要求 Swap 空间(分区或文件)的大小至少等于或大于你当前系统的物理内存 (RAM) 大小,使用 free -hswapon --show 检查 Swap 大小和内存大小。
  • 内核参数配置 (通常自动): 大多数现代发行版会自动配置内核参数 (resume=...resume_offset=... 对于 Swap 文件) 来指向正确的 Swap 位置,如果休眠失败,可能需要检查 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 行是否包含类似 resume=UUID=your-swap-uuid 的参数,然后运行 sudo update-grub (或发行版对应的命令),使用 sudo findmnt -no UUID -T /swapfile (如果是 Swap 文件) 或 sudo blkid 查找 Swap 分区的 UUID。
  • 内核支持: 确保内核启用了休眠支持(通常默认开启)。
  • 硬件支持: 极少数老旧或特殊硬件可能对休眠支持不佳。

测试休眠

在依赖休眠功能前,务必手动测试:

  1. 保存所有工作。
  2. 打开一个终端,运行 sudo systemctl hibernate
  3. 系统应该将内存写入 Swap 并关机。
  4. 重新开机,如果一切正常,系统应该恢复到休眠前的状态。

设置 Linux 的“休眠时间”或节能行为,核心在于理解需求是设置自动挂起/休眠的等待时间,还是特定触发事件(合盖、按键、低电量)的行为

  • 桌面用户首选: 使用图形化的“系统设置” > “电源管理”进行配置,最直观方便。
  • 需要挂起后延迟休眠: 配置 /etc/systemd/sleep.conf 中的 HibernateDelaySec=
  • 需要精细控制事件触发行为或系统级空闲策略: 配置 /etc/systemd/logind.conf 中的相关参数 (HandleLidSwitch, IdleAction, IdleActionSec, HandleLowPower 等)。
  • 基础前提: 务必确保 Swap 空间足够大且休眠功能已正确配置和测试通过。

请根据你的具体需求和使用场景选择合适的方法进行配置,修改系统配置文件时请谨慎操作。

引用与参考说明:

  • systemd 官方文档是这些配置的权威来源:
    • systemd-sleep(8) 手册页 (man systemd-sleep) – 详细说明 /etc/systemd/sleep.conf 的选项。
    • logind.conf(5) 手册页 (man logind.conf) – 详细说明 /etc/systemd/logind.conf 的所有选项及其含义。
    • systemd-logind(8) 手册页 (man systemd-logind) – 概述 systemd-logind 服务及其功能。
  • 主流桌面环境 (GNOME, KDE Plasma 等) 的官方文档或帮助中心通常会说明其图形化电源设置的具体位置和选项。
  • Linux 内核文档 (Documentation/power/ 目录) 提供了关于挂起和休眠机制的低层细节(适合高级用户或开发者)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4909.html

(0)
酷番叔酷番叔
上一篇 2025年6月18日 14:18
下一篇 2025年6月18日 14:51

相关推荐

  • Linux系统如何关闭端口?

    Linux系统中,端口的开放与关闭是服务器安全管理的核心操作之一,无论是防止未授权访问,还是优化服务资源配置,都需掌握正确的端口关闭方法,关闭端口前,需先明确端口的占用情况,再根据场景选择通过防火墙规则拦截或终止监听进程的方式,以下是具体操作步骤和注意事项,查看端口占用情况关闭端口前,需确认当前哪些进程正在监听……

    2025年10月1日
    1900
  • Linux终端如何暂停执行?

    在Linux系统中,终端暂停是常见的操作需求,无论是脚本执行中等待用户交互、临时锁定终端防止误操作,还是控制任务执行节奏,都需要灵活运用暂停命令,以下是不同场景下的终端暂停方法及具体实现,脚本执行中的暂停方法在Shell脚本中,暂停通常分为“等待用户输入”和“定时暂停”两类,需根据需求选择合适命令,等待用户输入……

    2025年9月19日
    2000
  • Linux下vi编辑器如何实现上下翻页的具体操作方法?

    在Linux系统中,vi(或其增强版vim)作为最常用的文本编辑器之一,掌握其翻页操作对于高效浏览和编辑长文件至关重要,无论是查看配置文件、阅读代码还是编辑文档,灵活运用翻页命令能显著提升操作效率,本文将详细介绍vi中各类翻页命令的功能、使用场景及注意事项,帮助用户快速掌握这一核心技能,普通模式是vi的默认模式……

    2025年9月18日
    2500
  • 为什么Makefile装不上?

    检查是否已安装 make打开终端执行:make -v若显示版本信息(如 GNU Make 4.3),说明已安装;若提示 command not found,请继续以下步骤,安装 make 工具根据您的 Linux 发行版选择命令:发行版安装命令Ubuntu/Debiansudo apt update &amp……

    2025年6月18日
    5400
  • drwxr-xr-x权限代表什么意思?

    命令行创建文件夹(高效精准)适用场景:服务器管理、批量操作、自动化脚本核心命令:mkdir(make directory)基础创建mkdir 文件夹名称示例:在当前位置创建名为 docs 的文件夹:mkdir docs验证:使用 ls 命令查看新文件夹:ls -l“`#### **2. 创建多级嵌套文件夹……

    2025年7月17日
    4500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信