Po upgradu na Ubuntu GNOME 15.04 (z 14.10) jsem si všiml svého pm-utils
háčky v /etc/pm/sleep.d
již neběží při pozastavení/obnovení.
Mám vlastní skript, který ukládá jas před pozastavením a obnovuje jej po obnovení. Pokud ručně spustím sudo pm-suspend
háčky se provedou, ale pokud zavřu víko notebooku (což pozastaví Ubuntu), skripty se nespustí. Uniká mi něco?
Skript jasu v /etc/pm/sleep.d je (fungoval 14.04 a 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
Přijatá odpověď:
Aktualizovat :Našel jsem hezčí řešení pomocí systemd
bez externích skriptů. Vytvořte a povolte následující službu:
[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
Poznámka k Ubuntu 16.04 :Název cílového zařízení s podsvícením by měl mít předponu „podsvícení:“ (např. backlight:acpi_video0
).
Aktivujte provedením:systemctl enable suspend-save-backlight.service
(nebo jak to nazvat). Všimněte si, že acpi_video0 je název symbolického odkazu podsvícení v /sys/class/backlight
který se používá k ovládání jasu displeje, se může v různých systémech lišit.
Výše uvedené používá systemd-backlight
systemd spustitelný pro uložení a načtení jasu před pozastavením a po obnovení (inspirováno z /lib/systemd/system/[email protected]
který ukládá/načítá jas při restartu/bootu).
Staré řešení (odkazuje na systemd
služba mému pm-utils suspend hook)
Nalezen problém. Podle tohoto článku ArchWiki:
systemd nepoužívá pm-utils k uspání počítače při použití uspání systemctl, hibernace systemctl nebo hybridního spánku systemctl; Háky pm-utils, včetně jakýchkoli vlastních háčků, nebudou spuštěny. Systemd však poskytuje dva podobné mechanismy pro spouštění vlastních skriptů na tyto události.
Takže správný způsob, jak to udělat s systemd
(který se ve výchozím nastavení používá v 15.04) je vytvořit následující soubory služeb, které spouštějí můj skript ovládání jasu v /etc/pm/sleep.d/
takto:
-
/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
Poté spusťte následující a povolte tyto služby:
systemctl enable root-suspend.service
systemctl enable root-resume.service
Další podrobnosti naleznete v odkazovaném článku.
Související:V jakém pořadí se spouštějí pipetované příkazy?