Page 1 sur 1

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

Posté : jeu. 19 mai 2016 09:32
par Le_Marius
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

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

Posté : jeu. 19 mai 2016 13:11
par Le_Marius
ou est-il possible de limiter la taille du fichier buffer à 10Mb ?

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

Posté : jeu. 19 mai 2016 15:58
par destroyedlolo
Un truc genre ce qui est décrit ici http://stackoverflow.com/questions/6879 ... sary-delay pourrait t'aider.

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

Posté : jeu. 19 mai 2016 18:19
par vague nerd
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.

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

Posté : ven. 20 mai 2016 08:49
par Le_Marius
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

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

Posté : jeu. 26 mai 2016 13:28
par Le_Marius
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.