demande d'aide Bash : boucle infinie à durée limité

Parce qu'il en faut pour tout le monde, discutez ici d'ADA, de shell et autres Wolfram...

Modérateur : Francois

Répondre
Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

demande d'aide Bash : boucle infinie à durée limité

Message par Le_Marius » jeu. 19 mai 2016 09:32

salut,
Est-il possible de créer une boucle while mais avec une durée limité de 5 minutes ?
En gros:
1) je récupère des données dans un fichier buffer1 (cat usb >> buffer1)
2) au bout de 5 min le buffer2 est créé, le buffer1 se stoppe et transfert ses données à d'autres fichiers
3) le buffer1 est détruit
4) au bout de 5 min le buffer2 se stoppe, transfert ses données aux autres fichiers
et rebouclage

donc je me demandais s'il y avait 2 solutions:
1) faire un bouclage à durée limité
2) utiliser une commande pour stopper le cat

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: demande d'aide Bash : boucle infinie à durée limité

Message par Le_Marius » jeu. 19 mai 2016 13:11

ou est-il possible de limiter la taille du fichier buffer à 10Mb ?

destroyedlolo
Raspinaute
Messages : 1160
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: demande d'aide Bash : boucle infinie à durée limité

Message par destroyedlolo » jeu. 19 mai 2016 15:58

Un truc genre ce qui est décrit ici http://stackoverflow.com/questions/6879 ... sary-delay pourrait t'aider.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Avatar du membre
vague nerd
Modérateur
Messages : 1447
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: demande d'aide Bash : boucle infinie à durée limité

Message par vague nerd » jeu. 19 mai 2016 18:19

Bonjour.

Je vous proposerais de faire une boucle

Code : Tout sélectionner

While (monBoolean):
    [Do something realy fun]
et non

Code : Tout sélectionner

while True:
, et d'utiliser un timer pour faire passer le boolean à vrais à faux (classe sched.scheduler toujours en python).[/strike]
Pardon, vous êtes en bash.

Cdt.
Cordialement,

Vague Nerd

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: demande d'aide Bash : boucle infinie à durée limité

Message par Le_Marius » ven. 20 mai 2016 08:49

Bonjour
Tout d'abord, merci pour le lien mais afin d'optimiser en quelque sorte le script,
j'ai modifié pour travailler avec la taille du fichier mais je reste bloqué avec le If ...
Des vingtaines d'essais ont été fait et toujours sans résultat.

Code : Tout sélectionner

#! /bin/bash

# creation des fichiers tampon sur le bureau
> /home/pi/Desktop/test_taille.txt 
> /home/pi/Desktop/test_taille2.txt

i=0

while :
do

#recuperation de la taille des fichier tampon (en octet) dans un fichier secondaire
stat -c %s test_taille.txt  > a
stat -c %s test_taille2.txt > b

#verification
echo "val a"
cat a 
echo "val b" 
cat b 

i=$((i+1))


# si la taille du fichier tampon1 est inferieur à 1000 octet
if [ cat a -lt 1000 ]

    #alors on transfert la valeur de i dans le fichier tampon1
    then
    echo $i >> /home/pi/Desktop/test_taille.txt

    #sinon on copie le fichier tampon1 dans le fichier   reception et on supprime le fichier tampon
    #et on transfert la valeur de i dans le second fichier tampon2
    else
        cat /home/pi/Desktop/test_taille.txt >> /home/pi/Desktop/test_taille_recep.txt
        #rm test_taille.txt
        echo $i >> /home/pi/Desktop/test_taille2.txt

        # si la taille du fichier tampon2 est inferieur à 1000 octet
        if [ cat b -lt 1000 ]

        #alors on transfert la valeur de i dans le fichier tampon2
        then
        echo $i >> /home/pi/Desktop/test_taille2.txt

        #sinon on copie le fichier tampon2 dans le fichier reception et on supprime le fichier tampon2 
        else
        cat /home/pi/Desktop/test_taille2.txt >> /home/pi/Desktop/test_taille_recep.txt
        #rm test_taille2.txt
        fi
    fi
done

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: demande d'aide Bash : boucle infinie à durée limité

Message par Le_Marius » jeu. 26 mai 2016 13:28

pour répondre au problème, j'ai utiliser la méthode crontab, avec l'execution d'une tâche journalière à 23h59 .
un buffer sauvegarde tout au long de la jounée, à 23h 59 je transfert son contenu dans un fichier daté et je supprime le buffer .
Le buffer se recréé automatiquement grâce à une boucle while : et réitère l'opération le jour suivant à la même heure.

Répondre

Retourner vers « Autres langages »