存在する復元時にanacronを起動するためのDebianバグレポート、一部では、システムの依存関係がどのように機能するかによって、このコードスニペット(簡潔さのために簡略化)が再開ではなく一時停止時にトリガーされる可能性があると主張しています。 systemd 文書と systemd に付属の単位ファイルを使用して表示される競合状態を理解できません。
[Unit]
Description=Do something at resume
After=suspend.target
[Service]
ExecStart=/bin/do-something
[Install]
WantedBy=suspend.target
systemd-suspend.service
この記事の著者は、次のステートメントを含むを引用します(再び関連するステートメントに圧縮されています)。
[Unit]
After=sleep.target
Requires=sleep.target
2つ目は、2つの異なる単位(両方とも後でソートされる)が並列にsleep.target
実行されるため、2つのユニット間にソートがないことです。私はこの言葉に完全に同意しますが、両方に依存する2つのユニットはありません。sleep.target
、私が知っている限り。宣言はスリープモードの前に完全に開始され、すべての従属デバイスが起動することをsystemd-suspend.service
保証します。しかし、(元のユニットファイルが実際に依存するターゲット)を見てみると、次のような内容が見つかりました。sleep.target
sleep.target
suspend.target
[Unit]
BindsTo=systemd-suspend.service
After=systemd-suspend.service
suspend.target
私はこのファイルが成功したリリース後に成功したリリースのみをsystemd-suspend.service
宣言することを理解しています。もう一度見てみると、systemd-suspend.service
ファイルに次の文を見つけることができます。
[Service]
Type=oneshot
Exec=/lib/systemd/systemd-sleep suspend
私が理解している限り、ワンタイムサービスはExec
コマンドが完了するまで「開始」状態に移行しません。したがって、このサービスに対して注文したすべてのタスクはAfter
完了するまで開始できません。最後に、システムが再び機能するまでブロックするsystemd-sleep
文字列を魔法のように書くsystemd-sleepを見てください。これにより、後で開始したいすべてのタスクが復元前に実際に開始されないように/sys/power/state
する必要があります。systemd-suspend.service
私がブロックが記録されたと主張する理由/sys/power/state
は、書き込みが次のように行われるからです。このファイルのsysfs保存機能、これは呼び出されます。pm_suspend
非睡眠モードでは、順番にenter_state
(同じソースファイルから直接pm_suspend
)呼び出され、明らかに再開する前に返されません。
答え1
あなたは正しいです。投稿 #124間違った。
人々は時々単位を書くのが問題ですWantedBy=sleep.target
After=sleep.target
。これにより、寝る前にデバイスが起動してから完了するのを待たずにスリープ状態になります。これはほとんど確かに彼らが望む仕事ではありません。おそらく、これはポスターが念頭に置いているでしょう。
権限:同様の分析に基づいて、履歴書でhdparmを実行するユニットを独立して作成しました。応答のようにうまく機能します投稿 #129説明する。私のデバイスは毎回うまく動作します。私は知っているので、私が走るならいいえハードドライブがカチッという音がします。以前はわかりました。udevエラーこれによりクリック音が聞こえるため、以前のソリューションを信頼できなくなりました。