GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu15.04サスペンドは`pm-suspend`を実行しませんか?

Ubuntu GNOME 15.04(14.10から)にアップグレードした後、pm-utilsに気づきました。 /etc/pm/sleep.dのフック 一時停止/再開時に実行されなくなりました。

一時停止する前に明るさを保存し、再開後に明るさを復元するカスタムスクリプトがあります。 sudo pm-suspendを手動で実行した場合 フックは実行されますが、ラップトップの蓋(Ubuntuを一時停止します)を閉じると、スクリプトは実行されません。何か足りないのですか?

/etc/pm/sleep.dの明るさスクリプトは次のとおりです(14.04および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

承認された回答:

更新systemdを使用してより良い解決策を見つけました 外部スクリプトなし。次のサービスを作成して有効にします。

[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

Ubuntu16.04注 :ターゲットのバックライトデバイス名には、「backlight:」というプレフィックスを付ける必要があります(例:backlight:acpi_video0

次のコマンドを実行して有効にします:systemctl enable suspend-save-backlight.service (またはあなたがそれを呼ぶものは何でも)。 acpi_video0は、/sys/class/backlightのバックライトシンボリックリンクの名前であることに注意してください。 ディスプレイの明るさを制御するために使用されますが、システムによって異なる場合があります。

上記はsystemdのsystemd-backlightを使用しています 一時停止前と再開後にそれぞれ明るさを保存およびロードするための実行可能ファイル(/lib/systemd/system/[email protected]から発想を得たもの) 再起動/起動時に明るさを保存/ロードします。

古いソリューションsystemdをリンクします 私のpm-utilsサスペンドフックへのサービス)

問題が見つかりました。このArchWikiの記事によると:

systemdは、systemctl suspend、systemctl hibernate、またはsystemctl hybrid-sleepを使用している場合、pm-utilsを使用してマシンをスリープ状態にしません。カスタムフックを含むpm-utilsフックは実行されません。ただし、systemdは、これらのイベントでカスタムスクリプトを実行するための2つの同様のメカニズムを提供します。

したがって、systemdでそれを行う正しい方法 (15.04でデフォルトで使用されます)は、/etc/pm/sleep.d/で明るさ制御スクリプトを実行する次のサービスファイルを作成することです。 次のように:

  1. /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
    
  2. /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
    

次に、以下を実行してこれらのサービスを有効にします。

systemctl enable root-suspend.service
systemctl enable root-resume.service

詳細については、リンク先の記事を参照してください。

関連:パイプされたコマンドはどのような順序で実行されますか?
Ubuntu
  1. Ubuntu20.04にVagrantをインストールして実行する

  2. Ubuntuで.exeファイルを実行する方法は??

  3. UbuntuでSQLServerを実行しますか?

  1. Ubuntu – * .runファイルをアンインストールしますか?

  2. Ubuntu 16.04一時停止後にWi-Fiがありませんか?

  3. Nexus 7でUbuntuを実行することは可能ですか?

  1. Ubuntu 17.10でWiresharkを実行する方法は?

  2. サービスを設定する方法は?

  3. Catalyst 15.7:Ubuntu 15.04で実行できますか?