コマンドラインから一時的にスリープと休止状態を無効にする方法


10

所定の条件が満たされている限り、Ubuntuの設定を永続的に操作して、必要に応じてスリープ状態にする方法はたくさんあるようです。ただし、これらは一時的な解決策であり、一時的に標準のポリシーに移行することを望む可能性のあるまれなタスクを考慮に入れていません。私が実行している問題は、いくつかのバックアップを実行する非常に長い実行スクリプトがあり、通常30〜50分かかる特定のプロセスの実行中にコンピューターをスリープまたは休止状態にしたくないことです。したがって、バックアップスクリプトの実行中にシステムが休止状態またはスリープ状態になるのを防ぐコマンドをバックアップスクリプトに含めることはできますか?また、バックアップの完了後に通常のデフォルトの電源ポリシーを復元するコマンドもありますか?

何かのようなもの

#!/usr/bin/bash
#disable normal powerpolicy
disable-power-policies
backup /dev/sda /dev/sdb /dev/fioa /dev/fiob
#enable power policies.
enable-power-policies

回答:


10

Ubuntu 16.04 LTSでは、サスペンドを無効にするために次を使用することに成功しました:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

そして、これを再び有効にするには:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

2
--runtimeto systemctlを渡すと、マスクが一時的になり、次回の起動時にリセットされます。
シルコリントン

3

gsettingsスクリプトでを使用して、電源設定の自動サスペンドを無効にし、電源設定のデフォルトの動作を再び復元できます。

以下は、最初にスリープの現在のタイムアウトを取得し、それを無効にし、いくつかのタスクを実行した後、再度有効にする単純な構成です。

#!/bin/bash   

#get the current timeout for automatic suspend both for on battey power and when plugged in.
a=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout)
b=$(gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout)


#Disable automatic suspend 
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0

#Your task here
sleep 5

#Enable the automatic suspend
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout $a
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout $b

3

昨年、数時間かかったバックアップでまったく同じ問題が発生しました。

Keep.Awakeを試すことができますhttps://launchpad.net/keep.awake CPU負荷、ネットワークトラフィック、ユーザーアクティビティを監視して、最小しきい値を確認できます。

私はまだそれのためのスナップまたはdebを作成することに慣れていません。ただし、一時的にここからLaunchpadからプログラムをダウンロードできます

現在のバージョンは安定しており、14.04から16.04までのすべてのUbuntuバージョンで動作します。それは私が継続的にそれを改善していて、新しい機能を追加するつもりであると述べました。

それは適切なコマンドのように機能します。--helpと入力して、実行できることの完全なリストを表示します。下の例はほんの数例です。

./keepawake.py --help

インタラクティブに実行するには:

./keepawake.py

バックグラウンドサービスとして実行するには:

nohup ./keepawake.py -r > /dev/null 2>&1 &

バックグラウンドサービスとして実行し、ユーザーがアイドル状態であると判断する前に、ユーザーアクティビティのアイドル時間として15分(900秒)を設定するには、次のようにします。

nohup ./keepawake.py -u 900 -r > /dev/null 2>&1 &

バックグラウンドサービスとして実行し、最小CPU負荷を13%に設定するには:

nohup ./keepawake.py -c 13 -r > /dev/null 2>&1 &

バックグラウンドサービスとして実行し、最小ネットワークトラフィックを5KB(5120バイト)に設定するには:

nohup ./keepawake.py -s 5120 -r > /dev/null 2>&1 &

上記の3つの設定(ネットワーク、CPU、ユーザーアイドル)を1つで実行するには:

nohup ./keepawake.py -s 5120 -c 13 -u 900 -r > /dev/null 2>&1 &

1

これはXfceでこれを行う方法です。(私自身のためにボールが転がるようにした彼らの答えのためのg_pに感謝します。)

#!/bin/bash

# Grab current sleep timeout on battery and ac
a=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
b=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery)

# Set sleep to never on battery and ac
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s 14

# Your task here
sleep 5

# Reset sleep to what it was before on battery and ac
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s "$a"
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-battery -s "$b"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.