Cómo deshabilitar temporalmente la suspensión e hibernación desde la línea de comando

10

Parece que hay muchas formas en que la configuración de Ubuntu se puede manipular permanentemente para que se suspenda cuando se desee, siempre que se cumplan las condiciones predeterminadas. Sin embargo, estas son soluciones más permanentes que no tienen en cuenta las tareas raras que pueden desear abandonar temporalmente la política estándar. El problema con el que me estoy encontrando es que tengo un script de ejecución muy larga para hacer algunas copias de seguridad y no quiero que la computadora se suspenda o hiberne mientras se ejecuta ese proceso en particular, que generalmente demora entre 30 y 50 minutos. Por lo tanto, ¿hay algún comando que pueda incluir en mi script de respaldo que evite que el sistema hiberne / duerma mientras se ejecuta el script de respaldo y hay también un comando para restaurar la política de energía predeterminada normal después de que finalice el respaldo?

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
Weber oxidado
fuente

Respuestas:

10

En Ubuntu 16.04 LTS, utilicé con éxito lo siguiente para deshabilitar la suspensión:

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

Y esto para volver a habilitarlo:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Dustin Kirkland
fuente
2
Pasar --runtimea systemctlhará que la máscara sea temporal, restableciéndose en el próximo arranque.
sircolinton
3

Puede usar gsettingsen su secuencia de comandos para deshabilitar la suspensión automática en la configuración de energía y restaurar nuevamente el comportamiento predeterminado de la configuración de energía.

Aquí hay una configuración simple que primero obtiene el tiempo de espera actual para dormir, deshabilítelo y luego de realizar alguna tarea, vuelva a habilitarlo.

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

¡Tuve exactamente el mismo problema el año pasado para las copias de seguridad que tomaron varias horas!

Puede probar Keep.Awake https://launchpad.net/keep.awake Puede monitorear la carga de la CPU, el tráfico de red y la actividad del usuario para umbrales mínimos.

Todavía no he podido crear un complemento o deb para ello. Sin embargo, temporalmente puede descargar el programa desde Launchpad aquí

La versión actual es estable y funciona en todas las versiones de Ubuntu desde 14.04 hasta 16.04. Dicho esto, lo estoy mejorando continuamente y agregaré nuevas funciones.

Funciona como un comando adecuado. Escriba --help para ver una lista completa de lo que se puede hacer. Los ejemplos debajo son solo algunos:

./keepawake.py --help

Para ejecutar de forma interactiva:

./keepawake.py

Para ejecutar como un servicio en segundo plano:

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

Para ejecutar como servicio en segundo plano y establecer 15 minutos (900 segundos) como el tiempo de inactividad de la actividad del usuario antes de determinar que el usuario está inactivo:

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

Para ejecutar como servicio en segundo plano y establecer la carga mínima de CPU como 13%:

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

Para ejecutar como servicio en segundo plano y establecer el tráfico de red mínimo como 5 KB (5120 bytes):

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

Para ejecutar las tres configuraciones anteriores (red, CPU, usuario inactivo) de una vez:

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

Aquí se explica cómo hacer esto en Xfce. (Gracias a g_p por su respuesta, que hizo que la pelota rodara por mi cuenta).

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