Como desativar temporariamente suspensão e hibernação na linha de comando


10

Parece que existem muitas maneiras pelas quais as configurações do Ubuntu podem ser permanentemente manipuladas para dormir quando desejado, desde que sejam cumpridas condições predeterminadas. No entanto, essas são soluções mais permanentes que não levam em conta tarefas raras que podem querer temporariamente adotar uma política padrão. O problema que eu estou enfrentando é que eu tenho um script de execução muito longo para fazer alguns backups e não quero que o computador entre em suspensão ou hiberne enquanto esse processo específico estiver em execução, que geralmente leva de 30 a 50 minutos. Portanto, existe um comando que eu poderia incluir no meu script de backup que impediria o sistema de hibernar / inativo enquanto o script de backup estiver em execução e também há um comando para restaurar a política de energia padrão normal após a conclusão 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

Respostas:


10

No Ubuntu 16.04 LTS, usei com êxito 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

2
Passar --runtimepara systemctltornará a máscara temporária, redefinindo na próxima inicialização.
sircolinton

3

Você pode usar gsettingsem seu script para desativar a suspensão automática nas configurações de energia e restaurar novamente o comportamento padrão da configuração de energia.

Aqui está uma configuração simples que primeiro obtém o tempo limite atual para suspensão, 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

3

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

Você pode tentar o Keep.Awake https://launchpad.net/keep.awake. Ele pode monitorar a carga da CPU, o tráfego de rede e a atividade do usuário em busca de limites mínimos.

Ainda não consegui criar um snap ou deb para isso. No entanto, temporariamente, você pode baixar o programa no Launchpad aqui

A versão atual é estável e funciona em todas as versões do Ubuntu, de 14.04 até 16.04. Dito isto, estou melhorando continuamente e adicionando 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 executar como um serviço em segundo plano:

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

Para executar como serviço em segundo plano e definir 15 min (900 segundos) 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 em segundo plano e definir a carga mínima da CPU como 13%:

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

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

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

Para executar 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 &

1

Aqui está como fazer isso no Xfce. (Obrigado a g_p pela resposta que fez a bola rolar 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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.