Ubuntu
為什麼我的筆記型電腦會掛起兩次/三次?
合上蓋子時
awesome
WM 不會自動暫停,所以我按照一些說明讓它工作。我只是添加了一個/etc/acpi/local/lid.sh.post
包含以下內容的文件:#!/bin/sh pm-suspend
暫停現在有效,但是在我打開蓋子並按下電源按鈕後,它會在幾分之一秒內顯示桌面,然後再次暫停!我第二次按下電源按鈕時,它會正常恢復。之後,任何時候我暫停我都必須按下電源按鈕並等待三下才能正常恢復。我已經嘗試連續掛起四次,而且似乎沒有變得更糟。
編輯:我使用的是簡單的螢幕鎖定服務,而不是原始腳本:
[Unit] Description=Lock X session Before=sleep.target [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xautolock -locknow [Install] WantedBy=sleep.target
解決了!如果其他人想要它,我在一個命令中編寫了一個腳本來執行此操作:
#!/usr/bin/env bash # # NAME # suspend-on-close.sh - Enable suspend when closing laptop lid # # SYNOPSIS # suspend-on-close.sh [options] # # DESCRIPTION # Adds a new "post" event to the ACPI lid close handler # # BUGS # https://github.com/l0b0/tilde/issues # # COPYRIGHT # Copyright © 2013-2014 Victor Engmark. License GPLv3+: GNU GPL # version 3 or later <http://gnu.org/licenses/gpl.html>. # This is free software: you are free to change and redistribute it. # There is NO WARRANTY, to the extent permitted by law. # ################################################################################ set -o errexit -o noclobber -o nounset -o pipefail directory="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PATH='/usr/bin:/bin' target_dir="/etc/acpi/local" target_file="${target_dir}/lid.sh.post" if [[ ! -d "$target_dir" ]] then mkdir "$target_dir" fi > "$target_file" cat <<EOF #!/bin/sh grep -q closed /proc/acpi/button/lid/*/state && pm-suspend EOF chmod u+x "$target_file"
我很確定每次蓋子關閉和打開時都會呼叫您的蓋子回調。
這裡的
sleep.sh
文件指出:# if launched through a lid event and lid is open, do nothing echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0
“蓋子打開”場景是您的腳本未檢查的場景…
您可以通過將一些參數回顯到日誌文件來快速測試這一點
我在 Dell Inspiron 11z 上執行帶有 Ubuntu 14.04 的 Awesome WM,並且遇到了類似的睡眠/掛起問題。
一旦我確認
s2ram -f
並s2disk
工作,我更新/usr/lib/pm-utils/sleep.d/00powersave
為 read/usr/sbin/s2ram -f
,它在關閉時暫停,但在打開後再次暫停。在您的帶領下,我將以下內容添加到
00powersave
echo "$1" >> /home/user/lid.log cat /proc/acpi/button/lid/LID0/state >> /home/user/lid.log
關閉並打開筆記型電腦後,輸出為:
suspend state: closed resume state: open
基於這些狀態,我將我的
00powersave
文件設置為:echo "$1" | grep "resume" && grep -q open /proc/acpi/button/lid/LID0/state && exit 0 /usr/sbin/s2ram -f
它檢查腳本是否被“恢復”呼叫以及蓋子是否打開,如果滿足這兩個條件,則什麼也不做。
多謝你們!抱歉,如果這是不好的禮儀,但解決起來很痛苦,我想發布這個,這樣下一個人會更輕鬆。