Como desativar temporariamente o modo de suspensão e hibernação a partir da linha de comando

7

Parece que há muitas maneiras em que as configurações do Ubuntu podem ser permanentemente manipuladas para dormir quando desejado, desde que as condições predeterminadas sejam atendidas. No entanto, estas são soluções mais permanentes que não levam em conta tarefas raras que podem querer temporariamente passar para a política padrão. O problema que estou correndo é que eu tenho um script muito longo para fazer alguns backups e eu não quero o computador para dormir ou hibernar enquanto esse processo específico está em execução, que normalmente leva 30-50 minutos. Portanto, há um comando que eu poderia incluir no meu script de backup que impediria o sistema de hibernar / suspender enquanto o script de backup estivesse em execução e há também um comando para restaurar a política de energia padrão normal após o término do backup?

algo como

#!/usr/bin/bash
#disable normal powerpolicy
disable-power-policies
backup /dev/sda /dev/sdb /dev/fioa /dev/fiob
#enable power policies.
enable-power-policies
    
por Rusty Weber 26.01.2015 / 02:32

4 respostas

5

No Ubuntu 16.04 LTS, usei com sucesso o seguinte para desativar a suspensão:

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

E isso para reativá-lo:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
por Dustin Kirkland 09.12.2016 / 01:49
3

Eu tive exatamente o mesmo problema no ano passado para backups que levaram várias horas!

Você pode tentar o Keep.Awake link Ele pode monitorar a carga da CPU, o tráfego da rede e a atividade do usuário para limites mínimos.

Eu ainda não consegui criar um snap ou deb por isso. No entanto, temporariamente você pode baixar o programa a partir do Launchpad aqui

A versão atual é estável e funciona em todas as versões do Ubuntu de 14.04 até 16.04. Dito isso, estou melhorando continuamente e adicionarei novos recursos.

Funciona como um comando adequado. Digite --help para ver uma lista completa do que pode ser feito. Os exemplos abaixo são apenas alguns:

./keepawake.py --help

Para executar interativamente:

./keepawake.py

Para ser executado como um serviço de segundo plano:

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

Para executar como serviço em segundo plano e definir 15 min (900 seg) como o tempo ocioso da atividade do usuário antes de determinar que o usuário está ocioso:

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

Para executar como serviço de segundo plano e definir uma carga mínima de CPU de 13%:

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

Para executar como serviço de segundo plano e definir um tráfego de rede mínimo como 5 KB (5120 bytes):

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

Para executar todas as três configurações acima (rede, CPU, usuário ocioso) de uma só vez:

nohup ./keepawake.py -s 5120 -c 13 -u 900 -r > /dev/null 2>&1 &
    
por DanglingPointer 11.06.2016 / 16:48
2

Você pode usar gsettings em seu script para desativar as configurações automáticas de suspensão nas configurações de energia e restaurar novamente o comportamento padrão de configuração de energia.

Aqui está uma configuração simples que primeiro obtém o tempo limite atual para o sono, desativa-o e depois de executar alguma tarefa, reativa-o.

#!/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
    
por g_p 26.01.2015 / 06:16
1

Aqui está como fazer isso no Xfce. (Obrigado a g_p pela sua resposta, que deu o pontapé de saída para mim.)

#!/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"
    
por jbrock 10.10.2015 / 23:33