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 #667202.



Voir là...
Une solution a deja ete postee la :
http://linuxfr.org/~11010010/20437.html
Et un frontend python ici :
http://forum.ubuntu-fr.org/viewtopic.php?pid=159297#p159297
d2
[^]Re: Voir là...
euhhh ... trop fort ...
C'est MOI qui développe le frontend python sur TON script ;-)
je cherche juste à améliorer ton script ... car le process "sleep" continue de tourner (ça fait pas beau ;-)
Ce pourquoi je posais des questions ici pour faire avancer le schmilblick ...
suis en train de préparer la 0.3 ;-)
manatlan.com
[^]Re: Voir là...
C'etait le mode d'emploi pour passer pour un rigolo ;)
je me disais aussi que la ligne vlc ressemblait a qqch de connu...
Une solution qui marche peut etre (pas testee...) :
vlc .... &
pidvlc=$!
sleep .... &
pidsleep=$!
_trap_kill ()
{
trap "" KILL EXIT QUIT INT TERM
echo killing $pidvlc
kill $pidsleep
kill $pidvlc
sleep 3
sync
exit 0
}
trap _trap_kill KILL EXIT QUIT INT TERM
wait $pidsleep
d2
[^]Re: Voir là...
en fait, je me suis "formé" à bash aujourd'hui ...
et j'ai refait entièrement le script à partir de zero
il est maintenant absolument parfait !!!
- aucun process ne reste en mem (dans tous les cas)
- un zenity/progress permet d'annuler le recording
- et j'ai remonté l'appel au "AT" au niveau du python
tu trouveras tout ici (dans la 04.b):
http://manatlan.free.fr/setup/freecorder.tar.gz
voir script "frecord.sh"
manatlan.com
[^]Re: Voir là...
Farpait !
Juste un detail : le kill -9 est peut-etre un peu violent, je sais pas s'il va bien plaire a vlc. Ca serait peut-etre bien de faire un truc genre kill $pid ; sleep 3 ; kill -9 $pid 2> /dev/null pour lui laisser une chance de terminer proprement.
d2