Pb de crontab
breton_a
Messages postés
10
Statut
Membre
-
breton_a -
breton_a -
Bonjour les gens.
G un petit souci avec crontab.
Ya un petit script que je souhaite executer toutes les 5 min.
Ce script, lancé a la main, marche correctement.
Par contre, quand je le lance depuis le crontab, il ne finit pas de s'executer.
En faisant "ps -aux", je vois qu'il me lance le script 3 fois alors que je ne l'appelle qu'une seule fois (il n'y a pas de recurrence dans mon script).
D'après le "ps -aux", il y a un probleme au niveau d'une des deux boucles "while" (il apparait un cut -d' ' -f5420), mais ce probleme de boucle n'apparait pas quand on lance le script a la main.
donc le probleme semble venir d'une des boucles, mais je vois où.. :(
si qqun peut me depanner... :)
G un petit souci avec crontab.
Ya un petit script que je souhaite executer toutes les 5 min.
Ce script, lancé a la main, marche correctement.
Par contre, quand je le lance depuis le crontab, il ne finit pas de s'executer.
En faisant "ps -aux", je vois qu'il me lance le script 3 fois alors que je ne l'appelle qu'une seule fois (il n'y a pas de recurrence dans mon script).
D'après le "ps -aux", il y a un probleme au niveau d'une des deux boucles "while" (il apparait un cut -d' ' -f5420), mais ce probleme de boucle n'apparait pas quand on lance le script a la main.
donc le probleme semble venir d'une des boucles, mais je vois où.. :(
#! /bin/sh
PARAM="emplacement/param.txt"
SERVEUR="emplacement/serveur.txt"
echo $1 | tr '/' ' ' > $PARAM
param=`wc -w $PARAM | tr ' ' '/' | cut -d'/' -f1`
i=2
while [ "$param" == "" ]
do
param=`wc -w $PARAM | cut -d' ' -f${i}`
i=`expr $i + 1`
done
var[1]=`more $PARAM | cut -d' ' -f1`
i=1
while [ "${var[${i}]}" != "" ]
do
i=`expr $i + 1`
var[${i}]=`more $PARAM | cut -d' ' -f${i}`
done
echo "" > $SERVEUR
n=1
while [ "${var[${n}]}" != "" ]
do
ip=`ping -c 1 ${var[${n}]} | head -1 | tr '(' '/' | tr ')' '/' | cut -d'/' -f2`
ping -c 1 "${var[${n}]}" | grep "round-trip"
if [ $? == "0" ]
then {
echo "${var[${n}]}/${ip}/1/" >> $SERVEUR
}
else {
echo "${var[${n}]}/${ip}/0/" >> $SERVEUR
}
fi
n=`expr $n + 1`
done
rm $PARAM
si qqun peut me depanner... :)
2 réponses
Mets les chemins absolus comme "/bin/echo" au lieu de "echo" etc. car le script effectue dans crontab n'a pas ton environment avec PATH etc.
par contre, c'est vrai que pour tous les fichiers créés comme $SERVEUR, j'indique bien le chemin absolu.
si tu enleve le blanc derriere le "!" ou si tu mets "bash" au lieu de "sh" ?
Bien que "sh" soit un lien vers "bash" le comportement au niveau syntax est different si on l'appelle avec sh ou bash. Je ne sais pas mais c'est facile a essayer.