arrêtez le serveur linux et allumez-le automatiquement à un moment précis

8

J'ai un devoir où le conférencier me demande de créer un script bash pour arrêter un serveur à 23h et le rallumer à 6h. Je peux le faire en utilisant sudo shutdown -h 23:00et cela fonctionne. Mais le problème est que je n'ai aucune idée de comment l'activer automatiquement à 6h du matin, je n'ai trouvé aucune commande qui pourrait le faire. Toute aide serait appréciée.

JLWK
la source
Êtes-vous sûr que votre affectation vous demande d'éteindre la machine entière (et de la rallumer), ou un seul processus serveur? Manifestement, la machine physique doit être allumée pour faire quoi que ce soit.
Jos
Pour être honnête, je n'en ai aucune idée aussi, je pensais aussi que ce serait impossible. Le conférencier est très vague sur le dossier de mission et ça me rend fou aussi.
JLWK

Réponses:

10

Vous devez d'abord vérifier si vous pouvez utiliser le wakealarm RTC pour réveiller votre système:

sudo sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sudo sh -c "echo `date '+%s' -d '+ 3 minutes'` > /sys/class/rtc/rtc0/wakealarm"
cat /sys/class/rtc/rtc0/wakealarm

Maintenant, vérifiez:

cat /proc/driver/rtc

Cela devrait renvoyer une liste de paramètres. Vérifiez que alrm_timec'est dans 3 minutes dans le futur et l' alrm_dateest aujourd'hui.

Si cela fonctionne bien, créez un /usr/local/sbin/shutwakescript:

#!/bin/bash 
sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm" 
sh -c "echo `date '+%s' -d '+ 7 hours'` > /sys/class/rtc/rtc0/wakealarm" 
shutdown -h now

Enfin éditez votre crontab utilisateur , tapez crontab -eet ajoutez la ligne suivante:

0 23 * * * /usr/local/sbin/shutwake
Sylvain Pineau
la source
Je dépend des paramètres d'horloge du BIOS, vérifiez /etc/default/rcSsi UTC est défini ou non.
Sylvain Pineau
Eh bien, j'ai essayé exactement la même chose que ce que vous avez écrit ci-dessus. Cela n'a pas fonctionné :(. -Debian 8
Bálint Pap