Linux Suspend

Posted by Adam on August 24, 2022
在 Ubuntu (以及大多數現代 Linux 發行版) 中,要透過指令達到「低耗電」效果,主要有兩種模式:**暫停 (Suspend)** 與 **休眠 (Hibernate)**。 由於 Ubuntu 預設通常只開啟「暫停」,而「休眠」需要額外的硬體與 Swap 空間設定,以下為您整理的指令與說明: --- ### 1. 暫停模式 (Suspend to RAM) 這是最常見的「睡眠」方式。系統會將狀態儲存在記憶體 (RAM) 中,並關閉大部分硬體的電源。 * **優點:** 喚醒速度極快(秒開)。 * **缺點:** 仍會消耗微量電力以維持記憶體資料;若電池耗盡,未儲存的資料會遺失。 **執行指令:** ```bash systemctl suspend ``` --- ### 2. 休眠模式 (Suspend to Disk) —— 真正達到最低耗電 這是您提到的「最低耗電」方案。系統會將記憶體內容寫入硬碟(Swap 分割區或檔案),然後完全關閉電源。 * **優點:** **零耗電**(與關機相同),且回來後能恢復原本的工作視窗。 * **缺點:** 喚醒速度較慢;Ubuntu 預設**通常不支援**,需要手動配置。 **檢查是否支援休眠:** ```bash systemctl can-hibernate ``` * 若回傳 `yes`,代表可以直接使用。 * 若回傳 `no`,則需要配置 Swap 空間與 Kernel 參數。 **執行指令:** ```bash systemctl hibernate ``` --- ### 3. 混合睡眠 (Hybrid Sleep) 結合了上述兩者。系統會同時將資料存入 RAM 和硬碟,然後進入暫停模式。 * **效果:** 正常情況下喚醒很快;若電力意外中斷,仍可從硬碟恢復資料。 **執行指令:** ```bash systemctl hybrid-sleep ``` --- ### 📊 睡眠模式比較表 | 模式 | 指令 | 電力消耗 | 恢復速度 | 資料安全性 | | --- | --- | --- | --- | --- | | **暫停 (Suspend)** | `systemctl suspend` | 極低 | 非常快 | 若斷電則遺失 | | **休眠 (Hibernate)** | `systemctl hibernate` | **零** | 較慢 | 極高 | | **混合 (Hybrid)** | `systemctl hybrid-sleep` | 極低 | 快 | 極高 | --- ### 💡 為什麼我的 `systemctl hibernate` 無法執行? 在 Ubuntu 上,執行休眠通常會失敗或直接跳回登入畫面,主因有二: 1. **Swap 空間不足:** 您的 Swap(置換空間)大小必須**大於等於**您的物理記憶體 (RAM) 大小。 2. **Secure Boot:** 如果您的電腦開啟了 UEFI Secure Boot,Linux 核心為了安全性通常會禁用休眠功能。 ### 🚀 進階:設定蓋上筆電蓋子時的行為 如果您希望「下指令」以外,蓋上蓋子也能自動執行特定動作,可以編輯此檔案: ```bash sudo nano /etc/systemd/logind.conf ``` 找到 `HandleLidSwitch` 這一行,可以修改為: * `HandleLidSwitch=suspend` (預設,暫停) * `HandleLidSwitch=hibernate` (休眠) **需要我幫您檢查您的 Swap 空間大小,看看是否具備開啟「休眠」功能的條件嗎?**