BASH - surveiller la taille d'un fichier

Fermé
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 - 22 mars 2010 à 18:57
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 - 23 mars 2010 à 11:09
Bonjour,

Pour améliorer un script bash, je souhaite déclencher l'exécution d'un script bash sur un fichier uploader, mais directement à la fin de son upload, disons quand ça taille ne bouge pas depuis quelques minutes (=normalement fin de l'upload ou problèmes réseau).

Je connais les commandes "du , stat, test -s" trouver sur le forum de ccm , la seule méthode que je vois et d'écrire dans un fichier test et de comparer les valeurs et quand la valeur actuelle est égale à la valeur précédente contenu dans le fichier à 5 minutes d'écart l'upload(ou wget d'ailleurs) est terminé et le fichier peut passer à la moulinette (second script bash)

N'y a t-il pas une commande (et son options) qui passe de vrai à faux quand la taille arrête d'augmenter...

Merci pour vos pistes (ou solutions même)
Bonne fin de journée.
A voir également:

5 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 897
22 mars 2010 à 19:31
Salut,

Avec quoi tu l'uploades ce fichier, wget ?

wget fichier_à_uploder && commande si ok || commande si pas ok

0
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 33
22 mars 2010 à 19:37
En fait c'est un dépot que quelqu'un ferait sur un FTP, donc je sais pas quand ni combien d'octects à l'avance sinon pour wget merci c'est pour car je j'utilise aussi.

Bonne soirée.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
22 mars 2010 à 20:09
J'ai du mal à suivre ;_\

C'est quoi que tu veux surveiller au juste ?
La fin du téléchargement ?
La taille du fichier téléchargé ?
La taille du répertoire source ou celle du répertoire cible ?
0
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 33
22 mars 2010 à 21:43
Je veux lancer un script à la fin d'un dépot de fichier par FTP(c'est pas moi qui le dépose), actuellement j'ai un cron qui vérifie si le fichier a été déposé par une personne ou non (sans vérification de taille donc) et si oui il s'exécute dessus, seulement je viens de penser que si le cron passe alors que le fichier n'est pas entièrement uploader, en cours upload ça va tous faire fouirai.

Je préférerai un script qui vérifie si le fichier est présent et s'il n'est pas en cours d'upload(->ça taille change toutes les x secondes en fait) alors je lance les action dessus(dézipper,traiter,...).

Donc soit un truc maison qui vérifie si la taille change comme évoqué au début, mais je préférerai une option de commande bash (du, stat, test) si ça existe...

Merci, Bonne soirée.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 mars 2010 à 09:06
Ok.

Ben à ma connaissance il n'existe pas de commande toute faite et à part un truc maison qui vérifie si la taille change, je ne vois pas trop comment... ;-\
0
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 33
Modifié par boyquotes le 23/03/2010 à 09:43
Un truc maison de ce genre (en cours...):

#!/bin/bash   
#Fermeture du script   
secondes=2   

for i in 'seq 1 40';   
    do echo $taille_precedente;   

 taille='du *.iso | awk '{print $1}'' && echo $taille && if [ ${taille_precedente:-0} -eq $taille ]; then echo pareil; else echo different;fi && taille_precedente=$taille;   
      
 sleep $secondes;   
 done   


faut maintenant que quand les tailles sont identique a x seconde d'écart alors au lieu d'echo->chemin vers le script...

Peut-être une méthode avec watch serait plus simple et pourrait marcher (faut que je teste). EDIT: watch se lance de manière interactive je sais pas grâce à quoi et je n'arrive pas a rediriger les informations afficher vers un fichier txt.

Merci Jipicy.
Bonne journée.
P.S: en fait il faudrait un "du" qui se rafraichi tous seul comme la commande "free -s 5" et qui prends en argument une action, script... suivant l'état(taille) mais on peu faire un pipe ou && comme jipicy l'a indiqué, c'est bizarre qu'il n'y est pas un moyen "unix" de connaitre l'état si le fichier et en cours "de déplacement" sur le système.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 mars 2010 à 10:10
Et ton fichier est envoyé par qui ? Quoi ? Depuis où ?

Y'a pas moyen d'envoyer un signal de fin depuis la source ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 mars 2010 à 10:37
J'ai peut être une piste avec inotify (inotify-tools).

A défaut regarder dnotify ou inotail...
0

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

Posez votre question
boyquotes Messages postés 16 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 4 octobre 2011 33
23 mars 2010 à 11:09
Le fichier est envoyer par un client FTP (type filezilla) par une personne actuellement, plus tard sans doute plus et on a aucun moyen de vérifier.

Je vais regarder les xnotify. j'avais aussi pensé au log du serveur FTP, mais c'est un peu tordu pour un besoin simple...

Merci.
0