Sudo
防止通過服務暫停喚醒
我的意思是避免我的筆記型電腦在暫停後立即喚醒。我設法做到了,如此處所示。
disable_devices_from_wakeup.sh
我正在使用的腳本的內容是#!/bin/bash declare -a devices=(EHC1 EHC3 OHC1 OHC3) for device in "${devices[@]}" ; do sudo sh -c "echo $device > /proc/acpi/wakeup" done
現在我想讓我的更改在引導期間永久生效。所以我按照這里和這裡的描述設置了一個服務。服務放在一起是
$ cat /etc/systemd/system/wakeup_disable_devices.service [Unit] Description=Disable devices for wakeup, as a fix to prevent system from waking immediately after suspend [Service] ExecStart=/home/user1/Documents/soft-hard-ware/linux-ubuntu/disable_devices_from_wakeup.sh #ExecStart=/bin/sh -c '/bin/echo EHC1 > /proc/acpi/wakeup' Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target
但是在重新啟動後,設備仍然可以喚醒。該服務沒有按(我猜)它應該執行:
$ systemctl status wakeup_disable_devices.service wakeup_disable_devices.service - Disable devices for wakeup, as a fix to prevent system from waking immediately after suspend Loaded: loaded (/etc/systemd/system/wakeup_disable_devices.service; disabled; vendor preset: enabled) Active: inactive (dead)
我不確定如何繼續使更改永久化,並自動應用它們。我不知道問題是否源於
sudo
我的腳本和/或其他。我也嘗試了使用註釋行的服務,但它也不起作用,因為cat /proc/acpi/wakeup
仍然顯示EHC1
為enabled
.相關:
- https://askubuntu.com/questions/252743/how-do-i-prevent-mouse-movement-from-waking-up-a-suspended-computer
- https://askubuntu.com/questions/152403/how-do-i-make-changes-to-proc-acpi-wakeup-permanent
- 永久更改
/proc/acpi/wakeup
- https://answerbun.com/
- https://mitjafelicijan.com/disable-mouse-wake-from-suspend-with-systemd-service.html
我錯過了一個簡單的步驟
$ sudo systemctl enable wakeup_disable_devices.service
另外,我改為(蠻力)命令
ExecStart=sh -c 'echo EHC1 > /proc/acpi/wakeup ; echo EHC3 > /proc/acpi/wakeup ; echo OHC1 > /proc/acpi/wakeup ; echo OHC3 > /proc/acpi/wakeup'
因為更“精緻”
ExecStart=sh -c 'devs=(EHC1 EHC3 OHC1 OHC3) ; for dev in "${devs[@]}"; do echo $dev > /proc/acpi/wakeup ; done'
沒用。我沒有花時間調試它。現在我不再需要外部腳本了。
我認為該服務不應該“執行”,因為它不是真正的服務。這是一個在開始時發生然後終止的一次性動作。因此,我懷疑“RemainAfterExit”讓它仍然出現在 systemctl 狀態,儘管它是“非活動(死)”。如果您在腳本中添加一些說明,您可以查看它是否實際執行。sudo 是否有問題尚不清楚。服務不會以您的普通使用者身份執行。它們可能以 root 身份執行(因此 sudo 是多餘但無害的)或無人身份(沒有 sudo 權限,因此它將失敗)。但是,我不是 Ubuntu 使用者,我發現 systemd 比它的價值更麻煩。我知道如何在 OpenRC 上解決這個問題,但這對你沒有幫助。