Après la mise à niveau vers Ubuntu GNOME 15.04 (à partir de 14.10), j'ai remarqué mon pm-utils
crochets dans /etc/pm/sleep.d
ne s'exécutent plus lors de la suspension/reprise.
J'ai un script personnalisé qui enregistre la luminosité avant la suspension et la restaure après la reprise. Si j'exécute manuellement sudo pm-suspend
les crochets s'exécutent mais si je ferme le couvercle de l'ordinateur portable (qui suspend Ubuntu), les scripts ne sont pas exécutés. Ai-je raté quelque chose ?
Le script de luminosité dans /etc/pm/sleep.d est (travaillé sur 14.04 et 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
Réponse acceptée :
Mettre à jour :Trouvé une solution plus agréable en utilisant systemd
sans scripts externes. Créez et activez le service suivant :
[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
Remarque Ubuntu 16.04 :Le nom du périphérique de rétroéclairage cible doit être précédé de "rétroéclairage :" (par exemple, backlight:acpi_video0
).
Activez en exécutant :systemctl enable suspend-save-backlight.service
(ou peu importe comment vous l'appelez). Notez que acpi_video0 est le nom du lien symbolique de rétroéclairage dans /sys/class/backlight
qui est utilisé pour contrôler la luminosité de l'écran, peut varier sur différents systèmes.
Ce qui précède utilise le systemd-backlight
de systemd exécutable pour enregistrer et charger la luminosité avant la suspension et après la reprise respectivement (inspiré de /lib/systemd/system/[email protected]
qui enregistre/charge la luminosité au redémarrage/démarrage).
Ancienne solution (relie un systemd
service à mon hook de suspension pm-utils)
Trouvé le problème. D'après cet article d'ArchWiki :
systemd n'utilise pas pm-utils pour mettre la machine en veille lors de l'utilisation de systemctl suspend, systemctl hibernate ou systemctl hybrid-sleep ; Les crochets pm-utils, y compris les crochets personnalisés, ne seront pas exécutés. Cependant, systemd fournit deux mécanismes similaires pour exécuter des scripts personnalisés sur ces événements.
Donc, la bonne façon de le faire avec systemd
(qui est utilisé par défaut dans 15.04) consiste à créer les fichiers de service suivants qui exécutent mon script de contrôle de la luminosité dans /etc/pm/sleep.d/
comme suit :
-
/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
Exécutez ensuite la commande suivante pour activer ces services :
systemctl enable root-suspend.service
systemctl enable root-resume.service
Reportez-vous à l'article lié pour plus de détails.
En relation :Dans quel ordre les commandes canalisées s'exécutent-elles ?