Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/06/2011, 23h32   #1
Invité régulier
 
Homme
Technicien Help Desk
Inscription : novembre 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Help Desk

Informations forums :
Inscription : novembre 2009
Messages : 44
Points : 9
Points : 9
Par défaut question sur script, fonction while

Bonjour,

Ci-dessous une partie de mon script sur lequel j'ai un doute.
Ma fonction while est sensé bouclé sur la recherche du process */hcl tant qu'elle est vrai et ceci pendant au max 24 sec (timeout).
Est ce que cela vous semble correct comme ecriture?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
time=0
while ( [ "ps -ef | grep -v grep | grep /appli/hermes/bin/hcl" = "0" ] )
do
        echo ".\c"
        sleep 1
        (( time = $time +1))
        if [[ $time = $timeout ]]
        then
                echo "impossible de continuer la maintenance du a l'activite"
                exit1
        fi
done
echo "pas de transfert en cours ok"
Merci d'avance pour vos réponses.
rouget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 01h17   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

while n'est pas une fonction, mais une commande composée.
si tu veux exécuter un ensemble de commande tant qu'une commande renvoie vrai, par exemple fait ainsi :
Code :
1
2
3
4
while /bin/true >/dev/null 2>&1
do echo blah
   sleep 5
done
tu peux remplacer /bin/true par n'importe quelle commande, si son code de retour vaut zéro (vrai) la boucle s'exécutera.
Regarde sur ton système si l'une des commandes pidof, ou pgrep est disponble, ce sera plus propre que ps | grep -v | grep
Code :
1
2
<s>echo ".\c"</s>
echo -n '.'
comment tester un décompte :
Code BASH :
1
2
timeout=4
if (( timeout - ++time )); then echo ok; else echo KO; fi
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 01h32   #3
Invité régulier
 
Homme
Technicien Help Desk
Inscription : novembre 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien Help Desk

Informations forums :
Inscription : novembre 2009
Messages : 44
Points : 9
Points : 9
Bonjour N_BaH,

Donc ma commande pourrait etre:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
timeout=4
while ps -ef | grep -v grep | grep /appli/hermes/bin/hcl >/dev/null 2>&1
do
echo bla bla
if (( $timeout - ++time ));
then
echo ok;
else echo KO;
fi
done
echo bla bla
>/dev/null 2>&1 n'affiche pas l'erreur sur la sortie standard, c'est cela?
Malheureusement mon systeme n'accepte pas pidof ou pgrep
Merci pour tes infos.

Bonne nuit,

rouget
rouget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 17h25   #4
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Citation:
Envoyé par rouget Voir le message
while ps -ef | grep -v grep | grep /appli/hermes/bin/hcl >/dev/null 2>&1

while ps -ef | grep /appli/hermes/bin/[h]cl >/dev/null 2>&1
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h05.


 
 
 
 
Partenaires

Hébergement Web