高いCPUアクティビティがある場合にPCがスリープ状態にならないようにする簡単な方法はありますか?長いプロセスを一晩実行する必要があるので、ユーザーアクティビティなしでプロセスの実行中にPCを稼働させておきたいのですが、処理が完了すると、PCはスリープタイムアウト後にスリープ状態になるはずです。
私のコード(理想的にはPython)から呼び出すことができる「resetSleepTimer」関数を使用したソリューションも受け入れられます。
A clarification WinEunuuchs2UnixとJoaquínAyuso dePaúlからのコメントに続く:残念ながら、ソリューションは単一のプロセスがある場合にのみ機能しますが、通常は複数のプロセスが実行され、可変の継続時間があるため、1つのプロセスが終了します。短いスリープタイムアウトを再度有効にすると、まだ実行中の他のものよりもsc * @ wになります。 resetSleepTimer関数の場合、一時停止タイマーをリセットするために定期的に呼び出されるものを意味します。ユーザー入力をシミュレートするという以前の(削除された)提案は、画面もオンにしておくため機能しません。
編集:OPのコメントで言及されている要件:
これはずっと画面から離れますか?私が探しているものではありません。また、スクリーンセーバーを操作すると、スリープ/サスペンドのタイムアウトにも影響しますか?
これに基づいて スレッド を呼び出すと、プログラムの期間中、スリーププロセスを無効にできます DBus経由のアイドル禁止 :
org.freedesktop.ScreenSaver.Inhibit
または、定期的にpingすることもできます。
org.freedesktop.ScreenSaver.SimulateUserActivity
コンピュータがまったくスリープしないようにする必要がある場合は、一時的に(ここでもdBusで)動作を無効にしてから、元に戻すことができます。これはスクリーンセーバーを起動しますが、コンピューターをスリープさせません。
$ Sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
これであなたの現在の睡眠設定を発見してください:
$ gsettings list-recursively | grep sleep
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'
org.gnome.settings-daemon.plugins.power button-sleep 'suspend'
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'
私のシステムはスリープ状態にならないように設定されていますが、システムが5分(300秒)に設定されている場合、次のようになります。
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 300
pythonプログラムが起動したら、次のコマンドを発行します。
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
pythonプログラムが終了したら、以前の設定を復元します:
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 300
スクリーンセーバーの設定は、時々関連しています。
$ gsettings list-recursively | grep top.screensaver
org.gnome.desktop.screensaver picture-opacity 100
org.gnome.desktop.screensaver logout-enabled false
org.gnome.desktop.screensaver lock-enabled false
org.gnome.desktop.screensaver logout-delay uint32 7200
org.gnome.desktop.screensaver embedded-keyboard-enabled false
org.gnome.desktop.screensaver primary-color '#023c88'
org.gnome.desktop.screensaver idle-activation-enabled true
org.gnome.desktop.screensaver secondary-color '#5789ca'
org.gnome.desktop.screensaver logout-command ''
org.gnome.desktop.screensaver color-shading-type 'solid'
org.gnome.desktop.screensaver embedded-keyboard-command ''
org.gnome.desktop.screensaver show-notifications false
org.gnome.desktop.screensaver picture-options 'zoom'
org.gnome.desktop.screensaver lock-delay uint32 0
org.gnome.desktop.screensaver show-full-name-in-top-bar true
org.gnome.desktop.screensaver picture-uri 'file:///usr/share/backgrounds/gnome/adwaita-lock.jpg'
org.gnome.desktop.screensaver status-message-enabled true
org.gnome.desktop.screensaver ubuntu-lock-on-suspend false
org.gnome.desktop.screensaver user-switch-enabled true
OPはニーズを明確にしました。複数のジョブを実行できます。最初に終了するとスリープが再びアクティブになり、残りのジョブが完了できなくなります。
このスクリプト の縮小版が必要です:
次に、xprintidle
(キーボードとマウスの未使用時間)を使用するコードをヤンクアウトして、次のものと置き換える必要があります。
$ uptime
08:08:54 up 9 days, 3:38, 1 user, load average: 0.30, 0.47, 0.71
負荷平均は、1分間、5分間、15分間印刷されます。 5分または15分がしきい値を下回ると、システムを一時停止します。
テストを開始するには、ターミナルでこれを実行します。
$ while true ; do uptime; sleep 300; done
08:20:36 up 9 days, 3:50, 1 user, load average: 0.36, 0.50, 0.64
5分ごとに負荷平均が表示され、しきい値を一時停止する場所がわかります。
プログラムが実装された後、使用状況を監査することができます。サスペンドアクティビティ(省電力?) を追跡するには、このスクリプト を使用できます。
$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
(... SNIP ...)
Nov 08 07:24:31 to Nov 08 09:28:44 lasting 7,453 seconds
Nov 08 23:26:19 to Nov 09 07:38:50 lasting 29,551 seconds
Linux uptime 791,119 seconds (9 days, 3 hours, 45 minutes, 19 seconds)
18 Suspends 494,551 seconds (5 days, 17 hours, 22 minutes, 31 seconds)
Real uptime 296,568 seconds (3 days, 10 hours, 22 minutes, 48 seconds)