Je tente de lancer automatiquement un script interminable (qui ne renvoie pas 0 à la sortie) au démarrage de mon serveur ubuntu 12.04 headless sans interface graphique.
J'ai essayé @reboot nohup /home/luke/netup.sh & dans crontab et le script ne fonctionne pas correctement bien qu'il semble s'exécuter. J'ai essayé update-rc.d netup.sh defaults, le script a démarré mais n'a pas fonctionné correctement et la plupart des autres programmes censés démarrer automatiquement ne se sont pas lancés.
Le script tente de surveiller et d'enregistrer les pannes de connexion Internet et contient une boucle while-do. Il fonctionne lorsque je suis connecté au serveur et lancé manuellement.
Voici le script
#!/bin/bash
#
# Script pour surveiller le temps de disponibilité d'Internet
echo "Serveur démarré" `date "+%F %T"` >> /home/luke/netup.log
START=0
while [ 1 ] ; do # boucle continue
#------------------------------------------------------------------------
/bin/ping -q 8.8.8.8 -c1 1>/dev/null 2>/dev/null # test de ping
PING=$?
#------------------------------------------------------------------------
if [ $PING = 0 ]; then # ping réussi
if [ $START -ne 0 ]; then # était déconnecté
END=$(date +%s)
TIME=$(($END - $START))
START=0
let TIME=($TIME/60) #convertir les secondes en minutes
echo "Echec" $FAIL_TIME "pendant" $TIME "minutes" >> /home/luke/netup.log
fi
else # échec du ping
if [ $START -eq 0 ]; then # était connecté
START=$(date +%s)
FAIL_TIME=$(date "+%F %T")
fi
fi
#------------------------------------------------------------------------
if [ $PING = 0 ]; then # attendre
sleep 60
else
sleep 10
fi
done