web-dev-qa-db-fra.com

Comment démarrer un script sans fin au démarrage

J'essaie d'exécuter automatiquement un script sans fin (afin qu'il ne renvoie pas 0 à la sortie) au démarrage sur mon serveur sans tête Ubuntu 12.04 sans interface graphique.

J'ai essayé @ redémarrer Nohup /home/luke/netup.sh & dans crontab et le script ne fonctionne pas correctement bien qu'il semble fonctionner. J'ai essayé pdate-rc.d netup.sh par défaut, le script a démarré mais ne s'est toujours pas exécuté correctement et la plupart des autres programmes supposés démarrer automatiquement ne l'ont pas démarré.

Le script tente de surveiller et d’enregistrer les pannes Internet et contient une boucle while-do. Cela fonctionne une fois connecté au serveur et démarré manuellement.

Voici le script

#!/bin/bash
#
# Script to monitor internet up time

echo "Server started"  `date "+%F  %T"`  >> /home/luke/netup.log

START=0

while [ 1 ] ; do                    # continuous loop

#------------------------------------------------------------------------
/bin/ping -q 8.8.8.8 -c1 1>/dev/null 2>/dev/null # ping test
PING=$?
#------------------------------------------------------------------------

if [ $PING = 0 ]; then              # ping success
    if [ $START -ne 0 ]; then       # was down
        END=$(date +%s)
        TIME=$(($END - $START))
        START=0
        let TIME=($TIME/60)     #convert seconds to minutes
        echo "Failed" $FAIL_TIME "for" $TIME "minutes" >> /home/luke/netup.log

    fi

else                        # ping failure
    if [ $START -eq 0 ]; then       # was up
        START=$(date +%s)
        FAIL_TIME=$(date "+%F  %T")
    fi

fi

#------------------------------------------------------------------------
if [ $PING = 0 ]; then              # wait

    sleep 60
else
    sleep 10
fi

done
3
Luke

Plutôt que de configurer un script pour qu'il s'exécute constamment au démarrage, pourquoi ne pas le modifier pour qu'il s'exécute à l'aide de cron? Puisque vous lui dites de dormir pendant 60 secondes entre chaque exécution, utiliser cron pour exécuter un script sans boucle while une fois par minute aurait plus de sens et serait plus simple à gérer.

Vous pourriez également être intéressé par les réponses à cette question sur serverfault:

https://serverfault.com/questions/49082/can-i-run-a-cron-job-more-frequently-than-every-minute

0
ImaginaryRobots