Jak tymczasowo wyłączyć tryb uśpienia i hibernacji z wiersza polecenia

10

Wygląda na to, że istnieje wiele sposobów, w jakie ustawienia Ubuntu można trwale modyfikować w celu uśpienia w razie potrzeby, o ile spełnione są określone warunki. Są to jednak bardziej trwałe rozwiązania, które nie biorą pod uwagę rzadkich zadań, które mogą chcieć tymczasowo przejść na standardowe zasady. Problem, na który się natrafiam, polega na tym, że mam bardzo długi skrypt do wykonywania kopii zapasowych i nie chcę, aby komputer był w trybie uśpienia lub hibernacji, gdy ten konkretny proces działa, co zwykle zajmuje 30-50 minut. Czy w związku z tym istnieje polecenie, które mógłbym dołączyć do skryptu tworzenia kopii zapasowej, który uniemożliwi hibernację / uśpienie systemu podczas działania skryptu tworzenia kopii zapasowej, czy też istnieje polecenie przywrócenia normalnej domyślnej zasady zasilania po zakończeniu tworzenia kopii zapasowej?

coś jak

#!/usr/bin/bash
#disable normal powerpolicy
disable-power-policies
backup /dev/sda /dev/sdb /dev/fioa /dev/fiob
#enable power policies.
enable-power-policies
Rusty Weber
źródło

Odpowiedzi:

10

W systemie Ubuntu 16.04 LTS z powodzeniem użyłem następujących opcji, aby wyłączyć zawieszanie:

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

Aby to ponownie włączyć:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Dustin Kirkland
źródło
2
Przejście --runtimedo systemctlspowoduje, że maska ​​będzie tymczasowa, zresetuje się przy następnym uruchomieniu.
sircolinton
3

Możesz użyć gsettingsw skrypcie, aby wyłączyć automatyczne zawieszanie w ustawieniach zasilania i ponownie przywrócić domyślne zachowanie ustawień zasilania.

Oto prosta konfiguracja, która najpierw pobiera bieżący limit czasu uśpienia, wyłącza go, a po wykonaniu jakiegoś zadania ponownie go włącza.

#!/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
g_p
źródło
3

W ubiegłym roku miałem dokładnie ten sam problem z kopiami zapasowymi, które trwały kilka godzin!

Możesz wypróbować Keep.Awake https://launchpad.net/keep.awake Może monitorować obciążenie procesora, ruch sieciowy i aktywność użytkownika pod kątem minimalnych progów.

Nadal nie udało mi się stworzyć przystawki ani debiutu. Jednak tymczasowo możesz pobrać program z Launchpad tutaj

Obecna wersja jest stabilna i działa na wszystkich wersjach Ubuntu od 14.04 do 16.04. Powiedziałem, że ciągle go ulepszam i będę dodawał nowe funkcje.

Działa jak prawidłowe polecenie. Wpisz --help, aby zobaczyć pełną listę tego, co można zrobić. Przykłady poniżej to tylko kilka:

./keepawake.py --help

Aby uruchomić interaktywnie:

./keepawake.py

Aby uruchomić jako usługę w tle:

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

Aby uruchomić jako usługę w tle i ustawić 15 minut (900 sekund) jako czas bezczynności użytkownika, zanim określi, że użytkownik jest bezczynny:

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

Aby uruchomić jako usługę w tle i ustawić minimalne obciążenie procesora na 13%:

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

Aby uruchomić jako usługę w tle i ustawić minimalny ruch sieciowy na 5 KB (5120 bajtów):

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

Aby uruchomić wszystkie trzy powyższe ustawienia (sieć, procesor, bezczynność użytkownika) za jednym razem:

nohup ./keepawake.py -s 5120 -c 13 -u 900 -r > /dev/null 2>&1 &
DanglingPointer
źródło
1

Oto jak to zrobić w Xfce. (Podziękowania dla g_p za odpowiedź, która sprawiła, że ​​piłka sama się potoczyła.)

#!/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"
jbrock
źródło