[Shell-Script] Temps de réponse

Fermé
Phil - 13 juin 2007 à 16:38
 Phil - 18 juin 2007 à 16:11
Salut les gars !

J'ai un gros problème. Voilà j'ai fait un script qui modifie, déplace et traite (à l'aide d'un script annexe) plus de 100000 fichiers.
(Avant de continuer je présice que je ne peux pas modifier le fameux script annexe).

Bref, il doit y avoir des données foireuses et du coup le script annexe bloque sur celles-ci et les données suivantes ne sont donc pas traitées.
C'est super problèmatique car du coup mon script s'occupe d'une bonne partie des données puis tourne en rond et ne continue pas.
J'ai d'abord 'killé' mon script puis éliminé la donnée foireuse pensant que le problème était ponctuel, MAIS y'en a d'autres.....

Alors voilà ma question : je voudrais incorporer dans mon script une commande qui calcule le temps de réponse du script annexe et passer à la donnée suivante lorsque celui-ci est supérieur a un certain temps (genre 2min pour être sur).

Existe-t-il une telle commande ?

Merci d'avance,

Phil.
A voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 juin 2007 à 17:11
Salut,

Pour répondre à ta question en étant bref :
sleep 120
;-))
1
Merci Jipicy, c'est la commande que je cherchais. Mais je m'apperçois que je n'arrive pas du tout à faire ce que je veux.

En gros, 'killer' ma commande si le script reste bloqué dessus pendant x secondes.
En fait faudrait que ma commande et 'sleep' se lance en même temps mais que si le script continue (c-a-d que ma commande n'est pas bloqué) ben on tienne pas compte du sleep.

( désolé pour la 'lourdeur' de ma formulation mais je n'arrive pas à expliquer clairement le problème )

j'ai essayer de lancer ma commande en arrière plan mais aucun moyens de savoir si la commande passe ou bloque.
0
poumiZ Messages postés 102 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 3 septembre 2010 10
14 juin 2007 à 12:27
Bonjour,
si ça peut t'aider, tu peux récupérer l'ID de ton dernier process lancé en AR plan par
$!
Tu peux ainsi obtenir tous les renseignements à son sujet.
0
Merci pour l'information :) mais je le savais :(.
En fait, j'ai trouvé une soluce bidon qui consiste a killé la commande qui foire à partir d'une autre console.
Ca m'oblige à rester devant mon écran pendant que ça tourne...
Faudrait trouver un moyen de le faire automatiquement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 juin 2007 à 14:55
Tiens un exemple avec un "job" en arrière-plan et un "kill -9 $!" si ça dépasse le temps limite :
jp@MDK:~/tmpfs ssh$ cat bar.sh   # le script en arrière-plan

#! /bin/bash

i=1
while [ "$i" -lt 6 ]
do
echo "Passage n° $i"
sleep 1
i=$(($i+1))
done

jp@MDK:~/tmpfs ssh$ cat foo.sh   # le script

#! /bin/bash

./bar.sh &

sleep $1
ps -e | grep "$!" >/dev/null
retval=$?
if [ "$retval" == 0 ]
then
kill -9 $!
echo "Processus en arrière-plan tué..."
else
echo "Pas de processus en arrière-plan..."
fi
echo "Le script se poursuit..."

jp@MDK:~/tmpfs ssh$ ./foo.sh 8   # lancement avec un délai laissant le job se finir

Passage n° 1
Passage n° 2
Passage n° 3
Passage n° 4
Passage n° 5
Pas de processus en arrière-plan...
Le script se poursuit...

jp@MDK:~/tmpfs ssh$ ./foo.sh 2   # lancement avec un délai ne laissant pas le job se finir

Passage n° 1
Passage n° 2
Passage n° 3
Processus en arrière-plan tué...
./foo.sh: line 15:  5463 Processus arrêté        ./bar.sh
Le script se poursuit...

jp@MDK:~/tmpfs ssh$
;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
15 juin 2007 à 10:17
Autre méthode:

commande_a_tuer_apres_2m &
PID=$!
echo "kill $PID > /dev/null 2>&1" | at now+2minutes
0
Salut les gars merci pour vos réponses et désolé pour le retard de la mienne.
J'ai pas encore tester vos méthodes mais je me suis débrouillé autrement. Je n'ai pas changer mon script de base mais j'en ai créée un autre qui contrôle le PID de la fonction qui peut merder. Du coup lorsque celle-ci est lancer trop longtemps mon script de contrôle la 'kill'. Voilà ça marche très bien est cela permet de ne pas alourdir mon premier script déjà très long.

Merci encore.

Phil
0