菜鸟科技网

Ubuntu休眠命令怎么用?

休眠 vs 挂起到磁盘

需要明确两个关键概念:

Ubuntu休眠命令怎么用?-图1
(图片来源网络,侵删)
  1. 挂起到磁盘

    • 工作原理:将系统的所有状态(包括你打开的所有应用程序和文件)完整地保存到硬盘上的一个特殊文件(swap 分区或 swap 文件)中,然后完全切断电源,下次开机时,系统会从硬盘读取这个文件,恢复到休眠前的状态。
    • 优点功耗为零,和关机一样完全不耗电。
    • 缺点:需要和你的物理内存一样大或更大的 swap 空间,唤醒速度比睡眠慢。
    • 命令systemctl hibernate
  2. 挂起到内存

    • 工作原理:将系统状态保存到内存中,然后进入一个极低功耗状态,内存仍需少量电力来维持数据
    • 优点唤醒速度极快,几乎是瞬间恢复。
    • 缺点会持续耗电,和笔记本待机时耗电差不多,如果断电,所有未保存的工作都会丢失。
    • 命令systemctl suspend

在中文语境下,"休眠" 通常指 挂起到磁盘,而 "睡眠" 或 "待机" 指 挂起到内存,下面的命令将明确区分这两者。


使用 systemd 命令(推荐,现代 Ubuntu 版本)

这是目前最推荐、最标准的方法,适用于 Ubuntu 18.04 及更高版本。

Ubuntu休眠命令怎么用?-图2
(图片来源网络,侵删)

挂起到内存 (睡眠/待机)

这个命令会让电脑进入低功耗的睡眠状态。

systemctl suspend

挂起到磁盘 (休眠)

这个命令会将所有状态保存到硬盘并关机,实现真正的“休眠”。

systemctl hibernate

混合休眠

这是一个非常实用的选项,它会同时执行内存和磁盘的保存操作,唤醒时,系统会优先从内存中快速恢复;如果期间断电,系统会从硬盘恢复,保证数据安全。

systemctl hybrid-sleep

如何使用? 你可以直接在终端输入这些命令,或者创建桌面快捷方式、绑定到键盘快捷键。

Ubuntu休眠命令怎么用?-图3
(图片来源网络,侵删)

使用 pm-suspend 命令(旧版方法)

在较旧的 Ubuntu 版本(如 16.04 及之前)中,使用 pm-utils 工具包中的命令,这些命令现在仍然可用,但 systemctl 是首选。

# 挂起到内存 (睡眠)
pm-suspend
# 挂起到磁盘 (休眠)
pm-hibernate
# 混合休眠
pm-suspend-hybrid

通过图形界面 (GUI)

对于不习惯使用命令行的用户,图形界面是最简单的方式。

通过电源设置

  1. 点击屏幕右上角的电源图标(通常看起来像一个插头或电池)。
  2. 在弹出的菜单中,你通常会看到 “睡眠”“挂起” 选项。
  3. 注意:默认菜单中可能没有 “休眠” 选项,因为它需要特殊配置(见下文),如果看到“休眠”,点击它即可。

通过关机菜单

  1. 点击屏幕右上角的电源图标。
  2. 选择 “电源关闭” 或类似选项。
  3. 在弹出的二级菜单中,你可能会看到 “休眠” 选项。

重要前提:确保休眠功能可用

systemctl hibernate 能否成功,关键在于你的系统是否正确配置了休眠功能。

检查 Swap 空间

休眠需要将内存内容写入 swap 分区或文件,确保你的 swap 空间至少和你的物理内存一样大

# 查看内存和 swap 的大小
free -h

输出示例:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        4.2G        123M        1.4G        5.2G
Swap:          2.0G          0B        2.0G

在这个例子中,内存是 7.7G,但 Swap 只有 2.0G,这不足以支持休眠,你需要创建一个更大的 Swap 文件或调整 Swap 分区。

检查 kernel 启动参数

这是最常见的问题,系统需要通过 resume= 参数告诉内核要从哪个设备休眠恢复。

步骤:

  1. 找到你的 Swap 分区/设备名

    swapon --show

    输出可能是 /dev/nvme0n1p2/swapfile

  2. 编辑 GRUB 配置文件

    sudo nano /etc/default/grub
  3. 找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,它可能看起来像这样:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

    你需要在这一行末尾添加 resume= 参数,指向你的 Swap 设备。

    如果你的 Swap 设备是 /dev/nvme0n1p2,就修改为:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/nvme0n1p2"

    如果是 Swap 文件(比如在根分区 下的 /swapfile),则需要指定文件所在的分区 UUID 和文件路径。

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=xxxx-xxxx resume_offset=1234567"
    • UUID 是根分区的 UUID,可以用 blkid /dev/sdXn 查看。
    • resume_offset 是 Swap 文件在分区中的偏移量,可以用 filefrag -v /swapfile 查看。
  4. 更新 GRUB

    sudo update-grub
  5. 重启电脑

    sudo reboot

重启后,systemctl hibernate 命令就应该可以正常工作了。

检查 uswsusp(可选)

一些系统依赖 uswsusp 来实现更可靠的休眠,可以安装它:

sudo apt install uswsusp

安装后,系统可能会自动检测到合适的 Swap 空间,并使休眠功能可用。


功能 命令 (推荐) 命令 (旧版) GUI 位置 说明
睡眠 (挂起到内存) systemctl suspend pm-suspend 电源图标 -> 睡眠 快速唤醒,持续耗电
休眠 (挂起到磁盘) systemctl hibernate pm-hibernate 电源图标 -> 休眠 (可能需配置) 零功耗,唤醒较慢,需足够 Swap 空间
混合休眠 systemctl hybrid-sleep pm-suspend-hybrid 通常在 GUI 中不可用 兼顾速度和数据安全

对于大多数用户,最简单的流程是:

  1. 尝试在电源菜单中点击“休眠”。
  2. 如果没有此选项或失败,使用 free -h 检查 Swap 是否足够。
  3. Swap 不够,需要扩容。
  4. Swap 足够但命令失败,按照上面的步骤检查并修改 GRUB 配置。
分享:
扫描分享到社交APP
上一篇
下一篇