#!/bin/bash
# Script pour un arrêt différé de l'ordinateur.
#               Version 0.1
# Créé par FuReX sous licence GPLv3.
# Modifications mineures par Ptyxs.
# Historique sur : http://forum.mandriva.com/viewtopic.php?t=80907&highlight=zzz
# Proposé sans aucune garantie.


if [ $# -gt 1 ]; then                                # on teste le nombre d'arguments
  echo "Vous devez donner un nombre de minutes."
  exit
fi
#
if [ $# -eq 0 ];
  then
    echo "Vous n'avez pas précisé le nombre de minutes."
    echo "Par défaut zzz prend 120 minutes."
    zzz_temps=120
  else
    zzz_temps=$1
fi 

#
if [ -f ~/tmp/zzz-at.txt ]; then                     # on vérifie que zzz n'a pas déjà été lancée
  echo "La commande zzz est déjà utilisée !"
  echo "Pour annuler la commande précédente, tapez en console :"
  echo "zzzstop"
  exit
fi
#
echo "rm -f ~/tmp/zzz-at.txt;halt" | at now + $zzz_temps minutes # commande pour arrêter l'ordinateur
echo "Arrêt du PC dans $zzz_temps minutes."
#
atq | awk '{print $1}' > ~/tmp/zzz-at_list.txt  # on copie les numéros des jobs "at" dans un fichier
#
echo "0" > ~/tmp/zzz-at.txt
nb_at_max=`head -1 ~/tmp/zzz-at.txt`     # initialisation du fichier contenant le numéro du job "at"
#
cat ~/tmp/zzz-at_list.txt | while read ligne   # on lit le fichier créé pour déterminer le numéro
do                                             # du job "at" lancé qui est le plus grand numéro
  if [ $ligne -gt $nb_at_max ];
  then
  echo "$ligne" > ~/tmp/zzz-at.txt             # on enregistre le numéro du job d'arrêt dans fichier
  fi
  nb_at_max=`head -1 ~/tmp/zzz-at.txt`
done
#
rm ~/tmp/zzz-at_list.txt                 # on efface un fichier temporaire de la liste de processus
echo ""
echo  "Pour interrompre l'arrêt différé de l'ordinateur,"
echo  "tapez zzzstop en console."
echo ""

