web-dev-qa-db-ja.com

Systemdは/ etc / pm / .....を読み取りますか?

systemdを使用するシステムは、/etc/pm/sleep.d/のスクリプトを読み取って実行しますか?

答えは、systemdはこれらのスクリプトを無視するということです。これが正しい場合、代替品は何ですか?

更新:man systemd-sleepは、スクリプトを/lib/systemd/system-sleep/に追加できることを示しています。詳細は私には不十分でしたが、 Arch wiki example の修正を試み、/lib/systemd/system-sleep/root-resume.serviceを作成しました。

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

私の意図は、ネットワークマネージャーが再開された後に再起動することです。

これは私がしたいことをしていないようです。

14
Sean

/etc/pm/config.d|power.d|sleep.d内のスクリプトはsystemdでは無視されます。代わりに、systemd「ユニット」(サービス)を作成して有効にする必要があります。

システムがスリープから復帰した後にネットワークを再起動するには、ファイル/lib/systemd/system/root-resume.serviceを作成しました:

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

次に、Sudo systemctl enable root-resume.serviceでサービスを有効にしました。サービスを有効にすると、/etc/systemd/system/suspend.target.wants/にファイルのシンボリックリンクが作成されます

man systemd-sleepに配置された/lib/systemd/system-sleep/サービスファイルとは異なり、無視されます。

13
Sean

いいえ、また/usr/lib/pm-utils/sleep.dのそれらも。ただし、実行可能ビットが設定された/lib/systemd/system-sleep/ですべてのスクリプト(サービスファイルではない)を実行します。

以下は、/usr/lib/pm-utils/sleep.d/00powersaveから変更されたpm-powersaveを呼び出すための例です。

#!/bin/sh

# do not run pm-powersave on ARM during suspend; the 1.5 seconds that it takes
# to run it don't nearly compensate the potentially slightly slower suspend
# operation in low power mode
Arch=`uname -m`

case $1 in
    pre)  [ "$Arch" != "${Arch#arm}" ] || pm-powersave false ;;          
    post) pm-powersave ;;
esac
exit 0

$ 1は再開時に「投稿」、それ以外は「前」です。どちらの場合も$ 2には、「suspend」、「hibernate」、または「hybrid-sleep」のいずれかが含まれます。

2
Martin Thornton