[Shell] Ecrire dans un fichier pendant l'execution du processus

Résolu
Borket -  
 Borket -
Bonjour,

J'ai écrit un script en shell du type
commande >> fichier
pour écrire le résultat dans un fichier, puis j'ai fait en sorte qu'il s’exécute au démarrage.
Mais le script écrit dans le fichier que lorsque je tue le processus, et je voudrais plutôt qu'il écrive pendant le processus.

Est-ce que c'est possible?
Merci d'avance

2 réponses

  1. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
     
    Hello,

    oui tout est possible.

    C'est quoi la commande que tu rediriges et qui ne s'écrit pas. Normalement au pire en faisant
    tail -f /chemin_vers/log_Name
    tu dois être en mesure de voir un log en cours d'écriture ...
    0
    1. Borket
       
      Salut,

      Pour résumer il s'agit d'une capture de trame avec tshark et un grep pour récupérer uniquement ce qui m'interesse.
      Mais le fichier de log reste a 0 octets et
      tail -f /chemin/log
      ne donne rien jusqu’à que je fasse
      pkill tshark
      0
    2. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
       
      grep ne dois pas apprécier la façon dont tshark lui passe les données.
      Plusieurs syntaxe sont possible du "|" au "<<<" jusqu'à une boucle
      commande 2>&1 |
      {
      while read line;do
      echo "$line" | grep "blah"
      done;
      }

      Pour les trucs récalcitrants ...

      Là, sans plus d'info je dirais que ton grep attends les données a filtrer ...
      0
  2. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310
     
    Hello,

    Chez moi :

    tshark 2>&1 | { while read line;do echo "$line" | grep "Chaine_cherchée";done; }
    .

    sur une ligne fonctionne ....

    You may stop me but you can't stop us all   ;-)
    0
    1. Borket
       
      Je teste ça
      0
      1. ryko1820 Messages postés 1633 Date d'inscription   Statut Membre Dernière intervention   310 > Borket
         
        ... et
        tshark 2>&1 | { while read line;do echo "$line" | grep "Chaine_cherchée";done; } >> fichier.txt &

        Pour pouvoir lancer cette ligne dans une console et dans la même console taper :
        tail -f fichier.txt

        Pour voir comment le fichier s'écrit ...

        Mais chez moi tout marche, même :
        tshark | grep "chaine_cherchée"


        Dans un shell script ça donnerait :

        #!/bin/bash
        #
        # Script test grep sur tshark (testTshark.sh)
        # Appel par 'testTshark.sh chaineRecherché &'
        # ou 'testTshark.sh "chaine Recherché" &' si espace dans la chaine recherché
        #
        tshark 2>&1 | grep "$1" >> testTshark.log


        (chmod 775 testTshark.sh)

        et pour le lancer :

        ./testTshark.sh chaine_recherchée &


        et pour voir comment le log grossit :

        tail -f testTshark.log
        (CTRL+C pour sortir)

        et effectivement
        pkill tshark
        ou
        pkill testTshark.sh
        pour arrêter

        le
        &
        après le lancement de commande est important car c'est lui qui fait passer le process en background et rends la main pour pouvoir continuer a taper des trucs dans la console ...
        0
    2. Borket
       
      Merci pour tout ça fonctionne !
      0