コンピュータの復元時に実行されるスクリプトをどこに配置しますか?

コンピュータの復元時に実行されるスクリプトをどこに配置しますか?

コンピュータがメモリ停止状態で目を覚ますと、画面をロックする必要があります。

だから私は次のスクリプトを入れました/usr/lib/pm-utils/sleep.dが、/etc/pm/sleep.d実行されませんでした。

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        vlock -ans
        ;;
    *) exit $NA
        ;;
esac

PSこれはpm-suspend本当ではありませんpm-hibernate

編集する

また、成功せずにsystemdサービスを試しました。

# /etc/systemd/system/[email protected]
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=root
Type=simple
ExecStart=vlock -ans

[Install]
WantedBy=suspend.target

私も電話しましたが、vlockはまだ電話を受けていません。systemctl enable [email protected]

答え1

AFAIKはExecStart実行可能ファイルのフルパスを望んでいます。

ExecStart=/usr/bin/vlock -ansあなたの試み/etc/systemd/system/[email protected]

答え2

権限と所有者を次のように設定しましたか?Wikipediaに説明がありますか?

スクリプトが実行可能で(chmod 755)、root:rootが所有していることを確認してください。

答え3

あなたは自分だけのフックを作ろうとしているんですよね? pm-utils(下のリンク)からArch Linuxのドキュメントを読んでいますが、次の点を最初に確認します。

  • スクリプト名(2桁の数字で始まり、文書のスキームに従います)
  • スクリプトの場所:/etc/pm/sleep.dが正しい場所です。
  • スクリプトモード: chmod +x /etc/pm/sleep.d/66scriptname

これらすべてが正しいと確信している場合は、スクリプト自体について考えてみてください。

これについて私が読んでいる文書へのリンクは次のとおりです。 https://wiki.archlinux.org/index.php/pm-utils#Creating_your_own_hooks

あなたのスクリプトはそこに示されているものとは異なります。 /bin/bash の代わりに /bin/sh を呼び出します。 $ 1の周りに二重引用符を使用しますが、そうではありません。オプションを組み合わせましたが、そうではありませんでした。これらすべてしなければならない大丈夫ですか? shとbashを除いて。

ちょっと入れてみてはいかが?記録計または、echoステートメントを使用してデバッグし、ログを確認してスクリプトが起動していることを確認してください。では、どの程度進行したのでしょうか?

答え4

次のようにしてすべてのディレクトリを見つけました。"sudo strace pm-hibernate 2>/root/myfile.log"あるいは、pm-hibernateをpm-suspensionに置き換えることもできます。しばらくすると、機械の電源が切れます。次に、再起動/復元するときにアクセス/作成されたすべてのスクリプト、設定、ログファイルを含むmyfile.logを読みます。

私のFedora 20の場合:

/usr/lib64/pm-utils/pm-functions
/usr/lib64/pm-utils/defaults
/usr/lib64/pm-utils/module.d
/etc/pm/config.d
/etc/pm/pm-suspend.config.d
/var/run/pm-utils/locks/pm-suspsnd.lock
/var/run/pm-utils/pm-suspend/storage/parameters

などと他のいくつかのディレクトリ。

特定のバージョンの特定のディストリビューションを使用するのに役立ちます(Btw、Fedora 20はsystemdを使用します)。

関連情報