conditionner l'execution d'une commande à la taille d'un fichier [bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 28-07-2003 à 22:39:52
tu peux récupérer le résultat de find :
find . -name ton_nom_de_fichier -size +ta_taille_mini > /dev/null 2>&1 && echo "gagné"
Marsh Posté le 28-07-2003 à 23:09:35
le problème c'est que c'est à controler en permanence (ou du moins très souvent...) car ce fichier grossit avec le temps...
Marsh Posté le 28-07-2003 à 23:36:18
c'est pas envisageable de faire un boucle qui ne fait rien tant quue la taille n'est pas atteinte ?
du style
while taille_du_fichier < taille_cible ;do rien ;done
le tout c'est de récupérer la taille du fichier et je ne connais pas de prog qui donne juste la taille
après quelques tatonnements ceci devrait fonctionner :
Code :
|
Marsh Posté le 28-07-2003 à 23:56:52
je vais essayé mais j'ai peur que ça bouffe du cpu une boucle infini comme ça...
Rq : pour récupérer la taille d'un fichier ça le fait comme ça --> a=$(ls -l monfic | awk '{print $5}')
Marsh Posté le 29-07-2003 à 00:20:08
en fait en faisant un sleep dans la boucle ça n'a pas l'air de bouffer trop de cpu :
while [ $(ls -s nom_de_fichier | sed s/\ nom_de_fichier//g -) -le taille_cible ] ; do sleep 1 ; done |
et ça permet de tester la taille toutes les secondes
Marsh Posté le 29-07-2003 à 09:26:25
Tu utilse cron pour qu il verifie de temps a autre la taille de tes fichier. S il depasse la taille maximum tu lance ton script dessus.
Le minimum pour cron ca doit etre toute les minutes
Marsh Posté le 29-07-2003 à 10:37:27
Amusant comme problème.
Voilà une solution :
Code :
|
Cette commande se termine lorsque le fichier contient plus de 10000 caractères.
Il faudrait rajouter un "stty raw" avant et un "stty -raw" après (ou équivalent, cf le man, le "raw" fait plein de choses) sinon tail attend d'avoir un saut de ligne pour envoyer les données :
Code :
|
Il me semble qu'en prog système sous linux on ne peut pas lancer une commande dès qu'un fichier atteint une taille donnée donc il faudrait voir comment tail gère ça (sleep ?).
Marsh Posté le 29-07-2003 à 22:15:53
ça marche nickel avec une boucle et un controle avec ls. Avec un sleep, ça consomme "keudal".
Marsh Posté le 29-07-2003 à 22:48:46
c'est bon à savoir
Marsh Posté le 30-07-2003 à 00:34:12
je diffuserais bientôt le script pour lequel j'ai eu besoin de cette astuce... C'est pour ceux qui aiment mplayer et qui ont une carte TV.
Marsh Posté le 28-07-2003 à 22:25:43
Bonjour tout le monde,
Je m'explique : pour les besoins d'un script de capture video temps réel j'ai besoin de lancer une commande dès qu'un fichier donné a atteint une taille voulue.
Vous voyez un moyen de faire ça ???
Merci beaucoup aux experts du bash.
Message édité par jotenakis le 28-07-2003 à 22:26:18
---------------
Jotenakis