#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
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é
Je marque Resolu dans le titre.
Hors ligne