Script samt Childprozess zeitgesteuert beenden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ast64
Beiträge: 85
Registriert: 25.11.2005 14:44:37

Script samt Childprozess zeitgesteuert beenden

Beitrag von ast64 » 08.08.2008 22:01:07

Hallo Leute,

mit folgendem Miniscript mache ich einen Streamdump:

Code: Alles auswählen

#!/bin/bash
# stream_rec
at $1 << EOF
kill $$
EOF

while true
do
  mplayer -dumpstream -dumpfile $HOME/streamdump.mp3 URL_DES_STREAMS > /dev/null 2>&1
  sleep 5
done
Das Script starte ich z.B. mit 'stream_rec 22:00' und es beendet sich wie gewünscht zur angegebenen Zeit, jedoch läuft mplayer weiter und zeichnet weiter auf. Wie muss ich das Script ändern, damit auch die Aufnahme beendet wird? Ein 'killall mplayer' kommt nicht in Frage, denn gelegentlich laufen mehrere Instanzen von stream_rec mit unterschiedlichen URLs. Ich will also ganz gezielt diesen einen Childprozess (sauber) beenden.
Desktop: Eigenbau | Pentium III | 256MB RAM | 32GB + 300GB HDD | Crunchbang 9.04.01 | Openbox
Notebook: Acer Extensa 5220 | Celeron 540 | 1,5GB RAM | 500GB HDD | Debian GNU/Linux "Squeeze" [2.6.32] | Fluxbox

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Script samt Childprozess zeitgesteuert beenden

Beitrag von gms » 08.08.2008 22:18:24

versuchs mal so:

Code: Alles auswählen

#!/bin/bash
# stream_rec
nohup mplayer -dumpstream -dumpfile $HOME/streamdump.mp3 URL_DES_STREAMS  &>/dev/null &
MPPID=$!
at $1 << EOF
kill $MPPID
EOF
Gruß
gms

Benutzeravatar
ast64
Beiträge: 85
Registriert: 25.11.2005 14:44:37

Re: Script samt Childprozess zeitgesteuert beenden

Beitrag von ast64 » 08.08.2008 23:21:34

Ok, das klappt schonmal prima! Danke sehr!

Angenommen, der Stream wird kurzzeitig unterbrochen. Wie erreiche ich, dass sich die Aufnahme automatisch mit einem neuen Dateinamen fortsetzt? Also irgendwie sowas:

Code: Alles auswählen

#!/bin/bash
# stream_rec
nohup mplayer -dumpstream -dumpfile $HOME/streamdump_`date +%Y-%m-%d_%H-%M-%S`.mp3 URL_DES_STREAMS  &>/dev/null &
MPPID=$!
at $1 << EOF
kill $MPPID
EOF
Desktop: Eigenbau | Pentium III | 256MB RAM | 32GB + 300GB HDD | Crunchbang 9.04.01 | Openbox
Notebook: Acer Extensa 5220 | Celeron 540 | 1,5GB RAM | 500GB HDD | Debian GNU/Linux "Squeeze" [2.6.32] | Fluxbox

Antworten