Dopo l'aggiornamento a Ubuntu GNOME 15.04 (da 14.10), ho notato il mio pm-utils
hook in /etc/pm/sleep.d
non sono più in esecuzione su sospensione/ripresa.
Ho uno script personalizzato che salva la luminosità prima della sospensione e la ripristina dopo il ripristino. Se eseguo manualmente sudo pm-suspend
gli hook vengono eseguiti ma se chiudo il coperchio del laptop (che sospende Ubuntu) gli script non vengono eseguiti. Mi sono perso qualcosa?
Lo script di luminosità in /etc/pm/sleep.d è (funzionato il 14.04 e il 14.10):
#!/bin/bash
case "$1" in
suspend|suspend_hybrid|hibernate)
cat /sys/class/backlight/acpi_video0/brightness > /tmp/.brightness_level
# modprobe -r nvidiabl
;;
resume|thaw)
# modprobe nvidiabl
cat /tmp/.brightness_level > /sys/class/backlight/acpi_video0/brightness
rm /tmp/.brightness_level
;;
esac
Risposta accettata:
Aggiorna :Ho trovato una soluzione migliore usando systemd
senza script esterni. Crea e abilita il seguente servizio:
[Unit]
Description=Save brightness on suspend
DefaultDependencies=no
RequiresMountsFor=/var/lib/systemd/backlight
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-backlight save acpi_video0
ExecStop=/lib/systemd/systemd-backlight load acpi_video0
TimeoutSec=90s
[Install]
WantedBy=sleep.target
Ubuntu 16.04 Nota :Il nome del dispositivo di retroilluminazione di destinazione deve essere preceduto da "backlight:" (ad es. backlight:acpi_video0
).
Abilita eseguendo:systemctl enable suspend-save-backlight.service
(o come lo chiami). Nota che acpi_video0 è il nome del collegamento simbolico della retroilluminazione in /sys/class/backlight
utilizzato per controllare la luminosità del display, potrebbe variare su diversi sistemi.
Quanto sopra utilizza systemd-backlight
di systemd eseguibile per salvare e caricare la luminosità rispettivamente prima della sospensione e dopo la ripresa (ispirato da /lib/systemd/system/[email protected]
che salva/carica la luminosità al riavvio/avvio).
Vecchia soluzione (collega un systemd
servizio al mio gancio di sospensione pm-utils)
Trovato il problema. Secondo questo articolo di ArchWiki:
systemd non usa pm-utils per mettere la macchina in stato di stop quando si usa systemctl suspend, systemctl hibernate o systemctl hybrid-sleep; Gli hook pm-utils, inclusi gli hook personalizzati, non verranno eseguiti. Tuttavia, systemd fornisce due meccanismi simili per eseguire script personalizzati su questi eventi.
Quindi il modo giusto per farlo con systemd
(usato per impostazione predefinita in 15.04) è creare i seguenti file di servizio che eseguono il mio script di controllo della luminosità in /etc/pm/sleep.d/
come segue:
-
/etc/systemd/system/root-suspend.service
:[Unit] Description=Local system suspend actions Before=sleep.target [Service] Type=simple ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness suspend [Install] WantedBy=sleep.target
-
/etc/systemd/system/root-resume.service
:[Unit] Description=Local system resume actions After=suspend.target [Service] Type=simple ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness resume [Install] WantedBy=suspend.target
Quindi esegui quanto segue per abilitare questi servizi:
systemctl enable root-suspend.service
systemctl enable root-resume.service
Fare riferimento all'articolo collegato per maggiori dettagli.
Correlati:in quale ordine vengono eseguiti i comandi reindirizzati?