現在、GNOME電源管理でタイムアウトを設定していますが、その後システムが停止します。
一時停止中に一定期間アクティビティがない場合は、システムがシャットダウンするように追加のタイムアウトを追加したいと思います。
したがって、次のようになります。
- 15分間アクティビティがない場合は一時停止します。
- 12時間活動がなければ終了します。
答え1
休止状態が正常な場合は、systemdを使用してください。これにより、suspend-then-hibernate
タイムアウト後に停止したシステムが休止状態になります。希望の値sleep.conf
に設定してください。HibernateDelaySec=
源泉公式システムマニュアル。
編集する:
休止状態機能を使用するには、Fedoraを再構成して有効にする必要があります。
- まずスワップパーティションが必要です少なくともRAMサイズ - 休止状態はRAMの内容をスワップパーティションに格納することを意味するため、サイズは説明を必要としません。通常、これは現在のパーティションを縮小し、新しいスワップパーティションを作成することを意味します。
これに関するガイドは次のとおりです。
- 例えばリアルタイムでshinkパーティションを起動するたとえば、cfdiskを介してスワップパーティションを作成します。
- またはこれはLVMを介して管理されます。
スワップパーティションを追加し/etc/fstab
、アクティベーションを通じて使用することを忘れないでくださいswapon -a
。 fstabエントリの例:
# swap:
UUID=abc123-this-is-a-uuid none swap sw 0 0
- initramfsに回復オプションを追加します。この目的のためにFedoraに
dracut
従ってください。このガイド。
/etc/dracut.conf.d/resume.conf
この行を使用してファイルを作成しますadd_dracutmodules+=" resume "
(スペースを忘れないでください)。- 走る
dracut -f
- grubにスワップパーティションを追加して、復元する場所を知ることができます。
/etc/default/grub
ルートを探すGRUB_CMDLINE_LINUX=
- 追加
resume=UUID=abc123-this-is-a-uuid
(例:UUID交換) - グラップアップデート:
grub2-mkconfig -o /boot/grub2/grub.cfg
またはgrub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
必ず必要だとは思わないけど、痛くないと思います。休止状態を有効にする
/etc/systemd/sleep.conf
:[Sleep] AllowHibernation=yes HibernateMode=shutdown
再起動と休止状態テスト:いくつかのウィンドウを開き、実行します
systemctl hibernate
。再起動すると、ウィンドウが閉じて再起動します。
答え2
Fedoraはsystemd
システムの完全な管理者として機能し、Gnomeはスリープ/スタンバイ/一時停止を操作しますsystemd
。
「一時停止」とは「RAMの一時停止」(「ディスクの一時停止」とは反対)を意味し、「終了」とは文字通り「マシンの電源を切る」を意味し、マシンにシステムを起動させることができ、したがって許容可能なウェイクアップデバイスとしてBIOS / EFIでハードウェアクロックを有効にすることは、指定された時間後に「一時停止」状態で自己電源遮断を達成するように細かく設計されたいくつかのsystemd
「デバイス」(言い換えれば)を介して設定できます。systemd
時間が経過しました。また、変換中に休止状態モードはまったく含まれていません(専用のスワップ/パーティションを含む)。
これらのカスタマイズさsystemd
れたデバイスは、デフォルトで「一時停止」状態に入る直前に目覚め[Timer]
、アラームがトリガーされるとシステムも起動し、同じことを行います[Service]
。デバイスが別の方法で起動し、タイマーが期限切れになっていない場合、自動シャットダウンは実行されず、完全にキャンセルされます。[Timer]
[Service]
systemd
この種のロジックを実装するために私が思いついたユニットがかなり多いので、ここにすべてインストールするシェルスクリプトがあります。スクリプトは「sudo
root」で一度だけ実行できます(システム全体(ユーザー範囲ではない) 構成systemd
:
#!/bin/sh --
sysd=/etc/systemd/system
set -e
mkdir -p "$sysd/systemd-suspend.service.d"
cat > "$sysd/systemd-suspend.service.d/99-trigger-system-back-after-suspend.conf" <<'EOF'
[Service]
ExecStopPost=-/bin/systemctl --no-block start system-is-back-after-suspend.target
EOF
cat > "$sysd/cancel-self-poweroff.service" <<'EOF'
[Unit]
Description=Cancel self-poweroff after suspend
After=system-is-back-after-suspend.target
Conflicts=self-poweroff.timer
[Service]
Type=oneshot
ExecStart=/bin/rm -f /run/systemd/system/self-poweroff.timer
[Install]
WantedBy=system-is-back-after-suspend.target
EOF
cat > "$sysd/self-poweroff.service" <<'EOF'
[Unit]
Description=Actual self-poweroff after suspend
After=suspend.target
Before=system-is-back-after-suspend.target
RefuseManualStart=true
[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block poweroff
# Uncomment the following line while commenting out the above line for testing.
#ExecStart=/bin/echo poweroff
# Note the echoed string goes to systemd journal log.
# Do a `systemctl daemon-reload` after modifying this file.
EOF
cat > "$sysd/schedule-self-poweroff.service" <<'EOF'
[Unit]
Description=Schedulation of self-poweroff after some time spent in suspend state
Before=systemd-suspend.service
Requisite=suspend.target
[Service]
Type=oneshot
EnvironmentFile=/etc/self-poweroff.conf
ExecStartPre=/bin/sh -c 'printf -- %%s\\\\n "[Timer]" "Persistent=yes" "OnCalendar=$(date -d "now + ${MY_SUSPEND_TIMEOUT}" "+%%Y-%%m-%%d %%H:%%M:%%S")" "AccuracySec=1s" "WakeSystem=yes" >| /run/systemd/system/self-poweroff.timer'
ExecStart=/bin/systemctl start self-poweroff.timer
# On systemd 237 onwards (Fedora 28 onwards) you may uncomment the line below while commenting out the above ExecStart and ExecStartPre lines
#ExecStart=/bin/sh -c 'systemd-run --on-calendar="$(date -d "now + ${MY_SUSPEND_TIMEOUT}" "+%%Y-%%m-%%d %%H:%%M:%%S")" --timer-property=AccuracySec=1s --timer-property=WakeSystem=yes --timer-property=Persistent=yes --unit=self-poweroff.service'
# Do a `systemctl daemon-reload` after modifying this file.
[Install]
WantedBy=suspend.target
EOF
cat > "$sysd/system-is-back-after-suspend.target" <<'EOF'
[Unit]
Description=Synchronization point for self-poweroff after suspend
DefaultDependencies=no
After=suspend.target
StopWhenUnneeded=yes
EOF
cat > /etc/self-poweroff.conf <<'EOF'
MY_SUSPEND_TIMEOUT=12 hours
EOF
systemctl enable schedule-self-poweroff.service cancel-self-poweroff.service
systemctl daemon-reload
デバイスをインストールするためにスクリプトを実行した後、スクリプトによって/etc/self-poweroff.conf
生成された特殊ファイルのタイムアウトを変更できます。ここでMY_SUSPEND_TIMEOUT
変数を希望の時間に設定でき、コマンドの日付解析機能に応じて、時間をhours
分()および/または秒()で表示できます。mins
secs
date -d
答え3
回答全体がわからない場合でも、/etc/systemd/logind.conf
次の行を編集して追加すると検索に役立ちます。
IdleAction=poweroff
IdleActionSec=720min
これにより、12時間の「アイドル」時間が経過するとシステムの電源が切れます。ただし、セッションが中断されるとアイドル状態で報告されるかどうかはわかりません。