web-dev-qa-db-fra.com

Est-il possible de suspendre / dormir via bash?

Je dois obtenir neuf moniteurs 46 "LCD (sous Windows) pour suspendre/dormir à 20 heures et se lever à 8 heures tous les matins. Cela a été un peu la pagaille d'essayer de faire fonctionner les commandes, y compris les privilèges. Étant donné que je suis avant tout un utilisateur Ubuntu, je me demande si cela serait facile avec Ubuntu/Linux.

Je sais que cron serait en mesure d'exécuter ma commande de suspension/veille à 20 heures (en tout cas, quelle est la commande de suspension/sommeil?), Mais qu'en est-il de réveiller la machine à 8 heures sans utiliser Wake-on-Lan ou une intervention manuelle?

6
bafromca

la commande à suspendre est pm-suspend appuyez sur pm- et sur un onglet pour afficher les autres commandes de gestion de l'alimentation. Je ne pense pas qu'il y aura une option pour réveiller les systèmes par eux-mêmes car le système d'exploitation lui-même ne fonctionne pas. Vous pouvez avoir un système dédié pour réveiller les autres systèmes à un moment donné. Si vous ne souhaitez pas suspendre ou hiberner mais simplement réduire l'utilisation de ressources, il existe des méthodes pour désactiver le disque dur ou éteindre le moniteur seul, etc. Il existe également une commande pm-powersave.

4
balki

Juste pour le moniteur? Cette solution de systembash.com fonctionne-t-elle pour vous? Créez un script BASH pour utiliser la fonctionnalité DPMS:

#!/bin/bash
# /usr/local/bin/monitorControl.sh
#
export DISPLAY=:0.0

if [ $# -eq 0 ]; then
    echo usage: $(basename $0) "on|off|status"
    exit 1
fi

if [ $1 = "off" ]; then
    echo -en "Turning monitor off..."
    xset dpms force off
    echo -en "done.\nCheck:"
    xset -q|grep "Monitor is"
Elif [ $1 = "on" ]; then
    echo -en "Turning monitor on..."
    xset dpms force on
    echo -en "done.\nCheck:"
    xset -q|grep "Monitor is"
Elif [ $1 = "status" ]; then
    xset -q|sed -ne 's/^[ ]*Monitor is //p'
else
    echo usage: $(basename $0) "on|off|status"
fi

Et ensuite, utilisez cron entires pour l'appeler:

0 20 0 0 0 /usr/local/bin/monitorControl.sh off
0  8 0 0 0 /usr/local/bin/monitorControl.sh on

Sinon, s'il ne s'agit pas que du moniteur, consultez /etc/acpi/sleep.sh et /etc/acpi/hibernate.sh.

1
user8290

Je ne pense pas qu'il y aura une option pour réveiller les systèmes par eux-mêmes car le système d'exploitation lui-même ne fonctionne pas.

En fait, avant de suspendre le système, vous pouvez définir une heure de réveil ou un minuteur à l’aide de l’horloge matérielle interne du système, à l’aide de la commande "rtcwake": par exemple, pour réactiver l’ordinateur le lendemain à 8h00 :

Sudo rtcwake -t `date -d "tomorrow 08:00:00" +%s` -m no

vous pouvez ensuite utiliser pm-suspend pour suspendre le système.

0
AshkanVZ