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 :
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 ...
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
Du genre
(vlc || exit -1) & sleep 120; exit 0;
My1.5ct
[^]Re: Essai
j'aurais fait
[^]Re: Essai
ç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
manatlan.com
[^]Re: Essai
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
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 sortirc'est crédible ?manatlan.com
[^]Re: Essai
Oui ca parait bien a première vue, mais rien ne vaut un essai :)
[^]Re: Essai
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 finexplications : - suppression du "trap" et du "kill $$" n'est pas mieux qu'avec le trap ?!manatlan.com
[^]Re: Essai
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
merci beaucoup pour tes eclaircissements !!!!
manatlan.com
[^]Re: Essai
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 ?
manatlan.com