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操作系统中,使用浏览器是日常工作和娱乐的重要需求,无论是桌面环境还是服务器环境,都有多种浏览器选择和使用方式,Linux系统下的浏览器使用不仅包括图形界面(GUI)下的操作,也涵盖命令行环境下的轻量级浏览器应用,同时涉及安装、配置、优化等全流程操作,默认浏览器的使用大多数Linux发行版会预装默认浏……

    2025年9月22日
    4400
  • 如何正确删除Linux系统中的用户账户?

    在Linux系统中,用户管理是系统维护的重要环节,当用户离职、账户闲置或需要清理系统时,删除多余的用户是必要操作,删除用户看似简单,但涉及用户信息、家目录、权限配置等多个方面,若操作不当可能导致数据丢失或系统异常,本文将详细介绍Linux系统中删除用户的完整流程、注意事项及不同场景下的处理方法,帮助管理员安全……

    2025年9月20日
    4200
  • 软件包如何拷到Linux系统?

    在Linux系统中,将软件包拷贝到本地是常见的操作,无论是安装开源程序、部署应用还是迁移数据,都需要掌握多种拷贝方法,本文将详细介绍通过外部存储设备、网络协议、云存储及命令行工具等不同场景下的软件包拷贝方式,并分析各方法的优缺点及操作步骤,帮助用户根据实际需求选择合适的方案,通过本地外部存储设备拷贝软件包对于离……

    2025年9月28日
    3900
  • Linux如何覆盖同名文件夹?

    在Linux系统中,“覆盖同名文件夹”通常指用新文件夹的内容完全替换旧文件夹,或直接替换整个目录节点,由于Linux的文件系统特性(如目录本质是索引节点),直接“覆盖”需通过删除、移动或同步操作实现,以下是具体方法及注意事项,常用覆盖方法及操作步骤使用mv命令直接替换(适用于同目录场景)当新文件夹(new_fo……

    2025年9月10日
    4900
  • Linux文件权限设置的具体方法是什么?

    Linux文件权限是系统安全的核心机制,通过控制不同用户对文件的访问和操作能力,确保数据不被未授权访问或篡改,本文将详细讲解Linux文件权限的设置方法,包括基本概念、表示方式、命令操作及注意事项,Linux文件权限的基本概念Linux文件权限分为三类,分别针对不同用户群体:读(Read,r):允许查看文件内容……

    2025年9月20日
    4800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信