So deaktivieren Sie vorübergehend den Ruhezustand und den Ruhezustand über die Befehlszeile

9

Es scheint, dass es viele Möglichkeiten gibt, die Einstellungen eines Ubuntu permanent zu ändern, um auf Wunsch in den Ruhezustand zu wechseln, solange vorgegebene Bedingungen erfüllt sind. Hierbei handelt es sich jedoch um dauerhaftere Lösungen, bei denen seltene Aufgaben nicht berücksichtigt werden, bei denen möglicherweise vorübergehend auf Standardrichtlinien verzichtet werden soll. Das Problem, auf das ich stoße, ist, dass ich ein sehr lang laufendes Skript habe, um einige Sicherungen durchzuführen, und ich möchte nicht, dass der Computer in den Ruhezustand versetzt oder in den Ruhezustand versetzt wird, während dieser bestimmte Prozess ausgeführt wird, der normalerweise 30-50 Minuten dauert. Gibt es daher einen Befehl, den ich in mein Sicherungsskript aufnehmen könnte, der verhindern würde, dass das System in den Ruhezustand versetzt wird, während das Sicherungsskript ausgeführt wird, und gibt es auch einen Befehl zum Wiederherstellen der normalen Standard-Energierichtlinie nach Abschluss der Sicherung?

etwas wie

#!/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
quelle

Antworten:

10

Unter Ubuntu 16.04 LTS habe ich Folgendes erfolgreich verwendet, um suspend auszuschalten:

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

Und dies, um es wieder zu aktivieren:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Dustin Kirkland
quelle
2
Wenn Sie --runtimean übergeben, systemctlwird die Maske vorübergehend und beim nächsten Start zurückgesetzt.
Sircolinton
3

Sie können gsettingsin Ihrem Skript verwenden, um die automatische Unterbrechung in den Energieeinstellungen zu deaktivieren und das Standardverhalten der Energieeinstellungen wieder herzustellen.

Hier ist eine einfache Konfiguration, bei der zuerst das aktuelle Zeitlimit für den Ruhezustand abgerufen, deaktiviert und nach Ausführung einer Aufgabe erneut aktiviert wird.

#!/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
quelle
3

Ich hatte letztes Jahr genau das gleiche Problem mit Backups, die mehrere Stunden dauerten!

Sie können Keep.Awake https://launchpad.net/keep.awake ausprobieren. Es kann die CPU-Auslastung, den Netzwerkverkehr und die Benutzeraktivität auf Mindestschwellenwerte überwachen.

Ich bin immer noch nicht dazu gekommen, einen Snap oder ein Deb dafür zu erstellen. Sie können das Programm jedoch vorübergehend vom Launchpad hier herunterladen

Die aktuelle Version ist stabil und funktioniert auf allen Ubuntu-Versionen vom 14.04 bis 16.04. Das heißt, ich verbessere es kontinuierlich und werde neue Funktionen hinzufügen.

Es funktioniert wie ein richtiger Befehl. Geben Sie --help ein, um eine vollständige Liste der möglichen Aktionen anzuzeigen. Die folgenden Beispiele sind nur einige:

./keepawake.py --help

Interaktiv laufen:

./keepawake.py

So führen Sie einen Hintergrunddienst aus:

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

So führen Sie es als Hintergrunddienst aus und legen 15 Minuten (900 Sekunden) als Leerlaufzeit für die Benutzeraktivität fest, bevor festgestellt wird, dass der Benutzer im Leerlauf ist:

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

So führen Sie es als Hintergrunddienst aus und legen die minimale CPU-Auslastung auf 13% fest:

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

So führen Sie einen Hintergrunddienst aus und legen den minimalen Netzwerkverkehr auf 5 KB (5120 Byte) fest:

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

So führen Sie alle drei oben genannten Einstellungen (Netzwerk, CPU, Benutzerleerlauf) auf einmal aus:

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

Hier erfahren Sie, wie Sie dies in Xfce tun. (Danke an g_p für ihre Antwort, die den Ball für mich ins Rollen gebracht hat.)

#!/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
quelle