Ubuntu

為什麼我的筆記型電腦會掛起兩次/三次?

  • July 19, 2015

合上蓋子時awesomeWM 不會自動暫停,所以我按照一些說明讓它工作。我只是添加了一個/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 &lt;&lt;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 -fs2disk工作,我更新/usr/lib/pm-utils/sleep.d/00powersave為 read /usr/sbin/s2ram -f,它在關閉時暫停,但在打開後再次暫停。

在您的帶領下,我將以下內容添加到00powersave

echo "$1" &gt;&gt; /home/user/lid.log
cat /proc/acpi/button/lid/LID0/state &gt;&gt; /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

它檢查腳本是否被“恢復”呼叫以及蓋子是否打開,如果滿足這兩個條件,則什麼也不做。

多謝你們!抱歉,如果這是不好的禮儀,但解決起來很痛苦,我想發布這個,這樣下一個人會更輕鬆。

引用自:https://unix.stackexchange.com/questions/63986