Come disabilitare temporaneamente la sospensione e l'ibernazione dalla riga di comando


10

Sembra che ci siano molti modi in cui le impostazioni di Ubuntu possono essere modificate in modo permanente in modalità sleep quando desiderato, purché siano soddisfatte condizioni predeterminate. Tuttavia, si tratta di soluzioni più permanenti che non tengono conto di attività rare che potrebbero voler temporaneamente precedere la politica standard. Il problema in cui mi imbatto è che ho uno script molto lungo per eseguire alcuni backup e non voglio che il computer sia in modalità di sospensione o ibernazione mentre è in esecuzione quel particolare processo che di solito impiega 30-50 minuti. Pertanto, esiste un comando che potrei includere nel mio script di backup che impedirebbe al sistema di ibernazione / sospensione mentre lo script di backup è in esecuzione e c'è anche un comando per ripristinare la normale politica di alimentazione predefinita al termine del backup?

qualcosa di simile a

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

Risposte:


10

Su Ubuntu 16.04 LTS, ho usato con successo quanto segue per disabilitare la sospensione:

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

E questo per riattivarlo:

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

2
Passare --runtimea systemctlrenderà temporanea la maschera, ripristinandola al prossimo avvio.
Sircolinton,

3

È possibile utilizzare gsettingsnel proprio script per disabilitare la sospensione automatica nelle impostazioni di risparmio energia e ripristinare nuovamente il comportamento predefinito delle impostazioni di risparmio energia.

Ecco una semplice configurazione che prima ottiene il timeout corrente per la sospensione, lo disabilita e dopo aver eseguito alcune attività riattivarlo.

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

L'anno scorso ho avuto lo stesso identico problema per i backup che hanno richiesto diverse ore!

Puoi provare Keep.Awake https://launchpad.net/keep.awake Può monitorare il carico della CPU, il traffico di rete e l'attività dell'utente per le soglie minime.

Non sono ancora riuscito a creare uno snap o deb per questo. Tuttavia temporaneamente è possibile scaricare il programma da Launchpad qui

La versione attuale è stabile e funziona su tutte le versioni di Ubuntu dal 14.04 al 16.04. Detto questo, lo sto continuamente migliorando e aggiungerò nuove funzionalità.

Funziona come un comando appropriato. Digita --help per visualizzare un elenco completo di ciò che può essere fatto. Gli esempi sottostanti sono solo alcuni:

./keepawake.py --help

Per eseguire in modo interattivo:

./keepawake.py

Per eseguire come servizio in background:

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

Per eseguire come servizio in background e impostare 15 min (900 sec) come tempo di inattività dell'attività dell'utente prima che determini che l'utente è inattivo:

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

Per eseguire come servizio in background e impostare il carico minimo della CPU al 13%:

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

Per eseguire come servizio in background e impostare il traffico di rete minimo su 5 KB (5120 byte):

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

Per eseguire tutte e tre le impostazioni sopra (rete, CPU, idle utente) in una volta sola:

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

1

Ecco come farlo in Xfce. (Grazie a g_p per la loro risposta che ha fatto rotolare la palla per conto mio.)

#!/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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.