Después de actualizar a Ubuntu GNOME 15.04 (desde 14.10), noté que mi pm-utils
ganchos en /etc/pm/sleep.d
ya no se ejecutan en suspender/reanudar.
Tengo un script personalizado que guarda el brillo antes de suspenderlo y lo restaura después de reanudarlo. Si ejecuto manualmente sudo pm-suspend
los ganchos se ejecutan, pero si cierro la tapa de la computadora portátil (que suspende Ubuntu), los scripts no se ejecutan. ¿Me estoy perdiendo algo?
El script de brillo en /etc/pm/sleep.d es (funciona en 14.04 y 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
Respuesta aceptada:
Actualizar :Encontré una mejor solución usando systemd
sin guiones externos. Cree y habilite el siguiente servicio:
[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
Nota de Ubuntu 16.04 :El nombre del dispositivo de retroiluminación de destino debe tener el prefijo "backlight:" (por ejemplo, backlight:acpi_video0
).
Habilite ejecutando:systemctl enable suspend-save-backlight.service
(o como lo llames). Tenga en cuenta que acpi_video0 es el nombre del enlace simbólico de retroiluminación en /sys/class/backlight
que se utiliza para controlar el brillo de la pantalla, puede variar en diferentes sistemas.
Lo anterior usa systemd-backlight
de systemd ejecutable para guardar y cargar el brillo antes de suspender y después de reanudar respectivamente (inspirado en /lib/systemd/system/[email protected]
que guarda/carga el brillo al reiniciar/arrancar).
Solución antigua (enlaza un systemd
servicio a mi gancho de suspensión pm-utils)
Encontré el problema. Según este artículo de ArchWiki:
systemd no usa pm-utils para poner la máquina en suspensión cuando usa systemctl suspend, systemctl hibernate o systemctl hybrid-sleep; Los ganchos pm-utils, incluidos los ganchos personalizados, no se ejecutarán. Sin embargo, systemd proporciona dos mecanismos similares para ejecutar scripts personalizados en estos eventos.
Entonces, la forma correcta de hacerlo con systemd
(que se usa de forma predeterminada en 15.04) es crear los siguientes archivos de servicio que ejecutan mi secuencia de comandos de control de brillo en /etc/pm/sleep.d/
de la siguiente manera:
-
/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
Luego ejecute lo siguiente para habilitar estos servicios:
systemctl enable root-suspend.service
systemctl enable root-resume.service
Consulte el artículo vinculado para obtener más detalles.
Relacionado:¿En qué orden se ejecutan los comandos canalizados?