web-dev-qa-db-ja.com

systemctlサスペンドはどのように機能しますか?

Systemctlマンページから:

サスペンド

システムを一時停止します。これにより、特別なターゲットユニットのsuspend.targetのアクティブ化がトリガーされます。このコマンドは非同期であり、サスペンド操作が正常にキューに入れられた後に戻ります。一時停止/再開サイクルが完了するのを待ちません。

私のシステムでは、_suspend.target_は次のようになります。

_[Unit]
Description=Suspend
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-suspend.service
After=systemd-suspend.service
StopWhenUnneeded=yes
_

そこにリストされているman:systemd.special(7)を見ると、次のことがわかります。

suspend.targetシステムを一時停止するための特別なターゲットユニット。これにより、sleep.targetが取り込まれます。

_systemd-suspend.service_をさらに掘り下げると、次のようになります。

systemd-suspend.serviceは、suspend.targetによってプルされ、実際のシステムの中断を担当するシステムサービスです。

...

内部的には、このサービスは「mem」のような文字列を/ sys/power/stateにエコーし、実際のシステムの一時停止をトリガーします。 /etc/systemd/sleep.confまたはsleep.conf.dファイルの「[Sleep]」セクションで構成できる場所を正確に記述します。

_sleep.conf_のドキュメントは私に伝えています:

デフォルトの構成はコンパイル時に定義されるため、構成ファイルは、それらのデフォルトから逸脱する必要がある場合にのみ必要です。

私のシステムには_sleep.conf_がないため、コンパイルされたデフォルトを使用する必要があります。私はそれらが何であるか理解できません。

デフォルトで_/sys/power/state_によって_systemctl suspend_および友達に送信される正確なコマンドは何ですか?

3
Gregory Arenius

デフォルトは "mem", "standby", "freeze" です(最後の2つとスリープモードを構成する機能は 2013年に追加されました なので、古いセットアップでは使用できない場合があります)。
引用したマニュアルページには、その方法、つまりsystemd-suspend.serviceの記述方法が記載されています

... "mem"のような文字列を/sys/power/stateに挿入して、実際のシステムの一時停止をトリガーします。

スリープ状態と、それらの状態を制御するためにユーザー空間で使用できるsysfsインターフェイスの詳細については、公式ドキュメントを参照してください。 System Sleep States

4
don_crissti