Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1448 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash]conditionner l'execution d'une commande à la taille d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash]conditionner l'execution d'une commande à la taille d'un fichier

n°298295
jotenakis
Posté le 28-07-2003 à 22:25:43  profilanswer
 

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.  :jap:


Message édité par jotenakis le 28-07-2003 à 22:26:18

---------------
Jotenakis
mood
Publicité
Posté le 28-07-2003 à 22:25:43  profilanswer
 

n°298304
myocastor
Posté le 28-07-2003 à 22:39:52  profilanswer
 

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é"

n°298316
jotenakis
Posté le 28-07-2003 à 23:09:35  profilanswer
 

le problème c'est que c'est à controler en permanence (ou du moins très souvent...) car ce fichier grossit avec le temps...


---------------
Jotenakis
n°298333
FlamM
comme tarte flambée bien sûr !
Posté le 28-07-2003 à 23:36:18  profilanswer
 

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 :
  1. while [ $(ls -s nom_de_fichier | sed s/\ nom_de_fichier//g -) -ge  ] ; do echo 1 > /dev/null ; done


Message édité par FlamM le 29-07-2003 à 00:28:10

---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°298340
jotenakis
Posté le 28-07-2003 à 23:56:52  profilanswer
 

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}')


---------------
Jotenakis
n°298351
FlamM
comme tarte flambée bien sûr !
Posté le 29-07-2003 à 00:20:08  profilanswer
 

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


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°298424
o'gure
Modérateur
Multi grognon de B_L
Posté le 29-07-2003 à 09:26:25  profilanswer
 

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

n°298433
jotenakis
Posté le 29-07-2003 à 09:45:36  profilanswer
 

merci bien...  :jap:


---------------
Jotenakis
n°298440
arsunik
ma tuxitude me beastifie
Posté le 29-07-2003 à 10:37:27  profilanswer
 

Amusant comme problème.
 
Voilà une solution :

Code :
  1. tail -f fichier | head -c 10000 &>/dev/null


 
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 :
  1. stty raw
  2. tail -f fichier | head -c 10000 &>/dev/null
  3. stty -raw


 
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 ?).

n°298869
jotenakis
Posté le 29-07-2003 à 22:15:53  profilanswer
 

ça marche nickel avec une boucle et un controle avec ls. Avec un sleep, ça consomme "keudal".


---------------
Jotenakis
mood
Publicité
Posté le 29-07-2003 à 22:15:53  profilanswer
 

n°298875
FlamM
comme tarte flambée bien sûr !
Posté le 29-07-2003 à 22:48:46  profilanswer
 

c'est bon à savoir  ;)


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°298909
jotenakis
Posté le 30-07-2003 à 00:34:12  profilanswer
 

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. :D  
 
 :hello:  :sleep:


---------------
Jotenakis

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash]conditionner l'execution d'une commande à la taille d'un fichier

 

Sujets relatifs
Executer une commande a distance automatiquementtaille d'un fichier
décompresser et désarchiver un fichier .tar.jc![bash] rappeler une commande
convertir des mp3, mpc, ogg et wma en wav en ligne de commandeQu'elle commande pour lister les repertoire avec arborescnece
Commande make ????????Problem avec la commande cp
Plus de sujets relatifs à : [bash]conditionner l'execution d'une commande à la taille d'un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR