web-dev-qa-db-fra.com

Empêcher temporairement suspendre / hiberner du script?

Existe-t-il un moyen d'empêcher la suspension/hibernation temporaire d'un script?

Je souhaite que l'écran passe en mode d'économie d'énergie, le cas échéant, mais l'ordinateur ne s'arrête pas. Caffeine n'autorise pas ceci: il désactive tout ou rien.

Pourquoi je veux faire ça? Parce que parfois je télécharge une énorme quantité de fichiers d'un serveur via FTP. Ces téléchargements peuvent prendre des heures à compléter.

7
Juan Simón

Pour éviter l'hibernation, créez /var/run/do-not-hibernate:

Sudo touch /var/run/do-not-hibernate

Le fichier /usr/lib/pm-utils/sleep.d/000kernel-change effectue ce travail. Si vous devez désactiver la suspension, créez un nouveau fichier pour cela, par exemple, /etc/pm/sleep.d/000_prevent_suspend_hibernate:

#!/bin/sh
# Prevents the machine from suspending or hibernating when
# the file /var/run/do-not-hibernate-or-suspend exist
case "$1" in
  suspend|hibernate)
    [ -f /var/run/do-not-hibernate-or-suspend ] && exit 1
    ;;
esac

Rendez-le exécutable:

Sudo chmod +x /etc/pm/sleep.d/000_prevent_suspend_hibernate

Si vous souhaitez empêcher la machine de suspendre ou d'hiberner, créez un fichier:

Sudo touch /var/run/do-not-hibernate-or-suspend

Après le redémarrage ou la suppression de ce fichier, la suspension et l'hibernation fonctionnent à nouveau.

6
Lekensteyn

Ajoutez simplement un fichier à /etc/pm/sleep.d Dans ce fichier, vérifiez si la suspension doit être autorisée. Sinon, quittez simplement avec exit 1.

Par exemple:

tmp_start=...
tmp_stop=...

if [ $((tmp_stop)) -gt $((current_date)) -a $((tmp_start)) -lt $((current_date)) ]; then
    logger $0: Currently RECORDING. No Suspend!
    exit 1;
fi
0
JPT