Retourner aux forums || Retourner au forum general.general
general.general : appel aux spécialistes bash ...
Posté par manatlan (Jabber id, page perso, ) le 02 janvier 2006donc 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).
Peut-être une clownerie, mais...
Pourquoi ne pas utiliser les opérateurs logiques ?
Genre :
vlc rtsp://... --sout "#std{access=file,mux=ts,url=$OUTFILE}" -I dummy & && sleep 120
En espérant que ça aide...
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
-
[^]Re: Peut-être une clownerie, mais...
Posté par Gyro Gearllose () le 02/01/2006 à 13:00. (lien). Évalué à 2.Ben non, ça aide pas mon truc... Ca ne fonctionne pas du tout, même... J'ai répondu trop vite, j'aurais du tester...
A la rigueur, il faudrait encadrer l'appel à vlc ... & par des parenthèses, mais ça ne résoud pas le problème pour autant...
Faudrait peut-être voir du côté des commandes pidof, at, kill.... A moins qu'il n'y ait plus simple...--
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
Essai
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 sortirc'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 finexplications : - 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 à 16:01. (lien). Évalué à 2.merci beaucoup pour tes eclaircissements !!!!
-
-
-
[^]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 ?
-
-
-
-
-
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à...
Posté par manatlan (Jabber id, page perso, ) le 03/01/2006 à 11:57. (lien). Évalué à 2.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 ;-)-
[^]Re: Voir là...
Posté par David Decotigny (page perso, ) le 03/01/2006 à 15:51. (lien). Évalué à 1.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à...
Posté par manatlan (Jabber id, page perso, ) le 03/01/2006 à 22:50. (lien). Évalué à 2.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"-
[^]Re: Voir là...
Posté par David Decotigny (page perso, ) le 04/01/2006 à 08:33. (lien). Évalué à 1.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
-
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum general.general



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.