Comment désactiver temporairement la veille et la mise en veille prolongée à partir de la ligne de commande

10

Il semble qu'il existe de nombreuses façons dont les paramètres d'Ubuntu peuvent être manipulés de manière permanente pour dormir quand ils le souhaitent tant que les conditions prédéterminées sont remplies. Cependant, ce sont des solutions plus permanentes qui ne prennent pas en compte les tâches rares qui peuvent vouloir temporairement abandonner la politique standard. Le problème que je rencontre est que j'ai un script très long pour faire des sauvegardes et je ne veux pas que l'ordinateur se mette en veille ou en veille prolongée pendant que ce processus particulier s'exécute, ce qui prend généralement 30 à 50 minutes. Par conséquent, existe-t-il une commande que je pourrais inclure dans mon script de sauvegarde qui empêcherait le système d'hiberner / de dormir pendant l'exécution du script de sauvegarde et y a-t-il également une commande pour restaurer la politique d'alimentation par défaut normale après la fin de la sauvegarde?

quelque chose comme

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

Réponses:

10

Sur Ubuntu 16.04 LTS, j'ai utilisé avec succès les éléments suivants pour désactiver la suspension:

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

Et ceci pour le réactiver:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
Dustin Kirkland
la source
2
Le passage --runtimeà systemctlrendra le masque temporaire, se réinitialisant au prochain démarrage.
sircolinton
3

Vous pouvez utiliser gsettingsdans votre script pour désactiver la suspension automatique dans les paramètres d'alimentation et restaurer à nouveau le comportement par défaut du paramètre d'alimentation.

Voici une configuration simple qui obtient d'abord le délai d'expiration actuel pour le sommeil, le désactiver et après avoir effectué une tâche le réactiver.

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

J'ai eu exactement le même problème l'année dernière pour les sauvegardes qui ont pris plusieurs heures!

Vous pouvez essayer Keep.Awake https://launchpad.net/keep.awake Il peut surveiller la charge du processeur, le trafic réseau et l'activité des utilisateurs pour les seuils minimaux.

Je n'ai toujours pas réussi à créer un cliché ou un deb pour cela. Cependant, temporairement, vous pouvez télécharger le programme depuis Launchpad ici

La version actuelle est stable et fonctionne sur toutes les versions d'Ubuntu du 14.04 au 16.04. Cela dit, je l'améliore continuellement et j'ajouterai de nouvelles fonctionnalités.

Cela fonctionne comme une commande appropriée. Tapez --help pour voir une liste complète de ce qui peut être fait. Les exemples ci-dessous ne sont que quelques exemples:

./keepawake.py --help

Pour exécuter de manière interactive:

./keepawake.py

Pour exécuter en tant que service d'arrière-plan:

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

Pour exécuter en tant que service d'arrière-plan et définir 15 min (900 s) comme temps d'inactivité de l'utilisateur avant de déterminer que l'utilisateur est inactif:

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

Pour exécuter en tant que service d'arrière-plan et définir la charge CPU minimale à 13%:

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

Pour exécuter en tant que service d'arrière-plan et définir un trafic réseau minimal de 5 Ko (5120 octets):

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

Pour exécuter les trois paramètres ci-dessus (réseau, CPU, inactif utilisateur) en une seule fois:

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

Voici comment procéder dans Xfce. (Merci à g_p pour leur réponse qui a donné le coup d'envoi.)

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