Як тимчасово відключити сон і перезимувати з командного рядка


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

Я досі не збирався створити оснащення або дебют для цього. Однак тимчасово можна завантажити програму з Launchpad тут

Поточна версія стабільна і працює на всіх версіях Ubuntu з 14.04 до 16.04. Це сказав, що я постійно вдосконалюю це і додаватиму нові функції.

Це працює як правильна команда. Введіть - допомогти, щоб побачити повний перелік того, що можна зробити. Прикладів нижче:

./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.