Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

general.general : appel aux spécialistes bash ...

Posté par manatlan (Jabber id, page perso, ) le 02 janvier 2006
J'aimerai faire un script bash, pour enregistrer un flux avec vlc pendant un certain laps de temps (ex 2min).



donc qqchose du style :



#!/bin/sh

vlc rtsp://... --sout "#std{access=file,mux=ts,url=$OUTFILE}" -I dummy &



sleep 120

exit 0





explications :

- vlc se lance dans un process (utilisation du &)

- le sleep va faire le process principale, et donc faire patienter vlc

- et l'exit va killer le script et vlc



Le problème : si je coupe/tue VLC .... le sleep va perdurer ...

j'aimerai bien que le "sleep" attende suivant 2 critères :

- le laps de temps défini

- ou la fin process VLC



je pense que c'est possible en bash, mais je ne sais pas trop par où débuter ...

> Lire le message (17 commentaires, moyenne: 1,9).  

Vous avez demandé le commentaire #666746.

Essai

Posté par Sisyphe Plâtrier () le 02/01/2006 à 13:20. (lien). Évalué à 1.

Du genre
(vlc || exit -1) & sleep 120; exit 0;
My1.5ct

  • [^]Re: Essai

    Posté par Pascal Terjan (Jabber id, page perso, ) le 02/01/2006 à 13:22. (lien). Évalué à 5.

    j'aurais fait

    #!/bin/sh
    (vlc rtsp://... --sout "#std{access=file,mux=ts,url=$OUTFILE}" -I dummy; kill $$ )&
    sleep 120
    exit 0

    • [^]Re: Essai

      Posté par manatlan (Jabber id, page perso, ) le 02/01/2006 à 14:07. (lien). Évalué à 2.

      ça me paraît pas mal ...
      mais si je veux que du code s'execute après le sleep (par exemple : suppression d'un fichier) .... comment faire ?

      exemple :


      # creation d'un fichier
      echo "record en cours" > rec.txt

      vlc &
      sleep 120

      #suprresion du fichier precedemment cree
      rm rec.txt

      exit 0

      • [^]Re: Essai

        Posté par Pascal Terjan (Jabber id, page perso, ) le 02/01/2006 à 14:21. (lien). Évalué à 2.

        function sortir() { 
           rm -f rec.txt
           exit 0
        }
        
        trap sortir SIGTERM
        
        # creation d'un fichier
        echo "record en cours" > rec.txt
        
        (vlc; kill $$)&
        sleep 120
        sortir
        

        • [^]Re: Essai

          Posté par manatlan (Jabber id, page perso, ) le 02/01/2006 à 14:42. (lien). Évalué à 3.

          ok ... extra ... et une dernière demande ... si je veux stocker le PID du process VLC (pour pouvoir le tuer automatiquement d'ailleurs) en gros alors :

          function sortir() { 
             rm -f rec.txt
             exit 0
          }
          
          trap sortir SIGTERM
          
          # creation d'un fichier
          echo "record en cours" > rec.txt
          
          (
             vlc &
             pidvlc=$!
             echo $pidvlc > vlc.pid
             wait $pidvlc
             kill $$
          )&
          sleep 120
          sortir
          
          c'est crédible ?

          • [^]Re: Essai

            Posté par Pascal Terjan (Jabber id, page perso, ) le 02/01/2006 à 14:59. (lien). Évalué à 3.

            Oui ca parait bien a première vue, mais rien ne vaut un essai :)

            • [^]Re: Essai

              Posté par manatlan (Jabber id, page perso, ) le 02/01/2006 à 15:02. (lien). Évalué à 1.

              et ça ?

              function fin() { 
                 rm -f rec.txt
                 exit 0
              }
              
              # creation d'un fichier
              echo "record en cours" > rec.txt
              
              (
                 vlc &
                 pidvlc=$!
                 echo $pidvlc > vlc.pid
                 wait $pidvlc
                 fin
              )&
              sleep 120
              fin
              
              explications : - suppression du "trap" et du "kill $$" n'est pas mieux qu'avec le trap ?!

              • [^]Re: Essai

                Posté par Pascal Terjan (Jabber id, page perso, ) le 02/01/2006 à 15:28. (lien). Évalué à 2.

                Ben tu attendras toujours 120s même si vlc se finit avant...
                C'est juste le fichier qui sera supprimé de suite, et le script essayera de le re-supprimer après la fin des 120s.

              [^]Re: Essai

              Posté par manatlan (Jabber id, page perso, ) le 02/01/2006 à 18:52. (lien). Évalué à 2.

              j'ai fait un essai ;-)

              quand je recupere le pid de vlc (du fichier)
              et que je kill vlc (kill xxxx)
              le process vlc s'arrete
              le process du script s'arrete
              mais il reste toujours un process "sleep" ;-( ...

              pourquoi n'est il pas tué avec celui du script ? et y a t il une soluce ?