Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2010, à 10:38

Megalo

[resolu] Stopper une commande dans un script

Bonjour à tous,

Je débute avec le bash et les commandes shell et j'ai un script dans lequel je cherche à stopper une commande si celle-ci prend trop de temps.

#!/bin/bash
#
## on se place dans le repertoire ou s'effectue les operations
#
cd /repertoire/


## Renomme le fichier
cp *`date +%Y%m%d`*.csv fichier.csv

	## Compression en tar.gz
	tar czf fichier_`date +%Y%m%d`.tar.gz fichier.csv

	## Supprime fichier.csv
	rm -f fichier.csv

	## Envoi par lftp
	lftp ftp://login:mdp@ip -p 421 -e "put -O repertoire_distant /repertoire/fichier_`date +%Y%m%d`.tar.gz; quit"

Je voudrais tester en fait la commande lftp pour ne pas qu'elle tourne trop longtemps si le serveur ne répond pas.

Mais je ne sais pas trop comment faire, je pense utilise la fonction time mais je ne suis pas sûr de moi...

Si quelqu'un a une idée, je suis preneur smile

Merci d'avance !

Dernière modification par Megalo (Le 18/05/2010, à 13:56)

Hors ligne

#2 Le 18/05/2010, à 12:58

Alm

Re : [resolu] Stopper une commande dans un script

Salut,

Malheureusement tu ne peux pas utiliser la fonction time, car elle ne renvoie ses données qu'après l'exécution de la commande...
Cependant, tu peux lancer la tâche lftp en fond (avec &) et récupérer son pid ; ensuite il te suffit de faire un "sleep" pendant la durée maximale souhaitée et à la fin tu kill la tâche :

## Envoi par lftp
lftp ftp://login:mdp@ip -p 421 -e "put -O repertoire_distant /repertoire/fichier_`date +%Y%m%d`.tar.gz; quit" &

PID=$!
sleep 60 && kill $PID

Hors ligne

#3 Le 18/05/2010, à 13:10

Megalo

Re : [resolu] Stopper une commande dans un script

Cette commande permet tout de même, par exemple, de pouvoir poursuivre le script si j'ai d'autres actions après ?

Hors ligne

#4 Le 18/05/2010, à 13:32

Alm

Re : [resolu] Stopper une commande dans un script

Oui sans problème !
Tout ce que ça fait c'est attendre ("dormir") pendant la durée spécifiée (en secondes) et arrêter la tâche qui prend trop de temps.

Juste une chose, si tu veux que les actions suivantes s'exécutent sans attendre le délai, écris :

(sleep 60 && kill $PID) &

(sinon il va attendre 60 secondes même si lftp se termine avant)

Hors ligne

#5 Le 18/05/2010, à 13:56

Megalo

Re : [resolu] Stopper une commande dans un script

Merci beaucoup, cela m'a beaucoup aidé smile

Je marque Resolu dans le titre.

Hors ligne