システムの一時停止から目覚めたときにスクリプトが実行されないのはなぜですか?

システムの一時停止から目覚めたときにスクリプトが実行されないのはなぜですか?

次のようなhttps://wiki.archlinux.org/index.php/Power_management#Hooks_in_/usr/lib/systemd/system-sleep、実行権限を持つシステムスリープフックでシェルスクリプトを追加しました(手動で作成し、/usr/lib/systemd/system-sleep/デフォルトでは存在しません)。

$ ls /usr/lib/systemd/system-sleep/ -l
total 4
-rwxr-xr-x 1 root root 322 Dec  2 19:28 systemd_suspend_cpu_freq.sh

その内容は

#!/bin/sh

case "$1/$2" in
    post/*)
    echo "systemd_suspend hook" >>/tmp/mylog
    ;;
esac

初めてLubuntu 18.04を一時停止しました。

$ systemctl suspend 
User testme is logged in on seat0.
User testme is logged in on sshd.
User testme is logged in on seat0.
User testme is logged in on seat0.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl suspend -i'.
$ systemctl suspend  -i
$

その後、目を覚ますと、/tmp/mylog私のスクリプトで書く必要があるものは何も見つかりません。

$ journalctl -b -u systemd-suspend.service

-- Logs begin at Mon 2018-11-12 13:25:27 EST, end at Sun 2018-12-02 19:30:04 EST. --
Dec 02 18:38:05 ocean systemd[1]: Starting Suspend...
Dec 02 18:38:05 ocean systemd-sleep[17888]: Suspending system...
Dec 02 18:51:16 ocean systemd[1]: Started Suspend.
Dec 02 19:29:30 ocean systemd[1]: Starting Suspend...
Dec 02 19:29:30 ocean systemd-sleep[20436]: Suspending system...
Dec 02 19:29:42 ocean systemd-sleep[20436]: /dev/sda:
Dec 02 19:29:42 ocean systemd-sleep[20436]:  setting Advanced Power Management level to 0xfe (254)
Dec 02 19:29:42 ocean systemd-sleep[20436]:  APM_level        = 254
Dec 02 19:29:35 ocean systemd-sleep[20436]: System resumed.
Dec 02 19:29:42 ocean systemd[1]: Started Suspend.

一時停止中に目が覚めると、なぜ私のスクリプトが実行されないのか疑問に思います。

ありがとうございます。


修正する

注釈の次の提案は、覚醒時にフックが実行されないようにします。

  • mkdir /home/t/tmpdir; chmod 777 /home/t/tmpdir
  • スクリプトにリダイレクト/home/t/tmpdir/mylog (以下にファイルは生成されません/home/t/tmpdir/

ベストアンサー1

同じエラーが発生しました。これArch Linux Wiki現在のスクリプトを配置する場所が正しくありません。/lib/systemd/system-sleep/代わりにスクリプトを置く必要があります/usr/lib/systemd/system-sleep/

また見てくださいman systemd-suspend.service

システムの一時停止および/または休止状態に入る前に、systemd-suspens.service(および上記の他のデバイス)は、/lib/systemd/system-sleep/にあるすべての実行可能ファイルを実行し、2つの引数を渡します。

おすすめ記事