Как временно отключить сон и спящий режим из командной строки


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 я успешно использовал следующее для отключения suspend:

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
Переход --runtimeк systemctlделает маску временной, сбрасывается при следующей загрузке.
sircolinton

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. Он может отслеживать нагрузку на процессор, сетевой трафик и активность пользователя на предмет минимальных порогов.

Я до сих пор не удосужился создать оснастку или деб для этого. Однако временно вы можете скачать программу с Launchpad здесь

Текущая версия стабильна и работает на всех версиях Ubuntu с 14 по 16 апреля. Тем не менее, я постоянно совершенствуюсь и буду добавлять новые функции.

Это работает как правильная команда. Введите --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 &

Чтобы запустить в качестве фоновой службы и установить минимальную нагрузку на процессор как 13%:

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

Для запуска в качестве фоновой службы и установки минимального сетевого трафика в 5 КБ (5120 байт):

nohup ./keepawake.py -s 5120 -r > /dev/null 2>&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"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.