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 10/05/2005, 10h41   #1
Membre à l'essai
 
Inscription : avril 2005
Messages : 75
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 75
Points : 23
Points : 23
Envoyer un message via MSN à mick84m
Par défaut Enchainement de commandes

Bonjour,

je suis sur une appli vb6 qui se connecte sur un serveur linux contenant des bases mysql

par un tunnel ssh j envoi des commandes au serveur pour zipper les fichiers que je viens de créer.

Code :
cd /data/mysql/backup_aes/BasesSQL;  for foo in *.sql; do tar -cjf `basename $foo .sql`.tar.gz $foo ; done
une fois cette commande effectuée, le programme continue, j envoi mes fichiers zippés vers un autre serveur.

le probleme c est que le "zippage" prend enormement de temps.
mon programme vb continue a enchainer les lignes de commandes sans se soucier de savoir si l archivage est terminé...

comment faire pour attendre la fin de l archivage de mes données avant de continuer le programme ??


merci
mick84m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 10h53   #2
Membre du Club
 
Avatar de jula
 
Inscription : juin 2003
Messages : 81
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juin 2003
Messages : 81
Points : 66
Points : 66
salut,
comme la plupart (toute?) les commandes, tar doit te renvoyer quelque chose (1,0?), il faut donc que tu attendes le retour de la fonction avant de continuer.
comme je ne suis pas sûre je te conseille un man de tar et/ou d'attendre d'autres avis.
cordialement,
jula.
jula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 11h00   #3
Membre à l'essai
 
Inscription : avril 2005
Messages : 75
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 75
Points : 23
Points : 23
Envoyer un message via MSN à mick84m
comment on recupere la valeur de retour ??
mick84m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 11h15   #4
Membre à l'essai
 
Inscription : avril 2005
Messages : 75
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 75
Points : 23
Points : 23
Envoyer un message via MSN à mick84m
j ai rien vu dans le man...
mick84m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 11h48   #5
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
tel que ta commande est ecrite elle devrait attendre la fin, depend de la manière donc vb6 gere le lancement de commande "systeme". sinon toute commande unix renvoie un code de resultat qui est dans la variables shell $? (uniquement LA derniere commande) pour la recuperer en vb6 je ne sait pas mais en shell : echo $? et elle s'affiche à l'ecran ou se test dans le shell : if (( $? )) ......
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 15h15   #6
Membre à l'essai
 
Inscription : avril 2005
Messages : 75
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 75
Points : 23
Points : 23
Envoyer un message via MSN à mick84m
j arrive pas a recuperer le $?

peux tu me donner la syntaxe please...

le test se fera du genre
if (($?)) = 0 then ...

??
mick84m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 15h23   #7
Membre confirmé
 
Inscription : avril 2004
Messages : 289
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 289
Points : 283
Points : 283
Par défaut Re: enchainement de commandes

Citation:
Envoyé par mick84m
mon programme vb continue a enchainer les lignes de commandes sans se soucier de savoir si l archivage est terminé...
Une question comme ca, je ne m'y connais pas trop en VB: ca ne serait pas un probleme de l'appel systeme de VB qui n'attend pas la fin du programme pour continuer ? ( cf. http://vb.developpez.com/faq/?page=Systeme#shellwait, je l'avais utilise un jour ou j'avais du travailler en VBA..)
alveric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 15h27   #8
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
pas tout a fait la syntaxe du if fait que le then est "vue" comme une autre commande donc :
Code :
1
2
3
4
5
 
if (( $? )) 
then
   commande autre 
fi
pour la recuperation tout depend comment tu peut recuperer qqchoses depuis VB6 si j ai bien compris ......
le problème dans ton cas c'est que tu execute plusieurs commande (boucle for) donc il te faudrai recuperer nom pas 1 mais plusieurs code retour , ce qui me parait pas possible
il te faudrez ecrire un shell que tu lance et qui lui traiterai les different cas de figure :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
#!/bin/sh   
cd /data/mysql/backup_aes/BasesSQL
for foo in *.sql
do 
   tar -cjf `basename $foo .sql`.tar.gz $foo 
   if (( $? != 0 ))
   then # cas d erreur       
        exit 1
   fi
done
exit 0
le code retour et la fourrnie par le "exit"
et lancer depuis VB un truc du genre :
Code :
1
2
 
mon_shell; echo $?
ou toute autre commande qui te permettrai de recuperer $?, par exemple un :
echo $? > fichier_de_retour
et lire le contenue du fichier depuis VB
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 17h00   #9
Membre à l'essai
 
Inscription : avril 2005
Messages : 75
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 75
Points : 23
Points : 23
Envoyer un message via MSN à mick84m
c est bon j ai trouve mon bonheur...j ai un peu bidouille mais ca marche.

allez voir
http://www.developpez.net/forums/vie...4bb974b2f2b40a

merci !
mick84m est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h01.


 
 
 
 
Partenaires

Hébergement Web