O servidor trava ao executar o shell script

1

Eu tenho uma máquina virtual rodando o CentOS 5.5 que eu uso como servidor de streaming.

Se eu abrir 4 terminais e fizer isso:

terminal 1:

 # mkfifo pipe1.avi
 # mkfifo pipe2.avi
 # ffserver &
 # ffmpeg -probesize 164000 -i pipe1.avi -async 1 -r 25 http://localhost:8090/feed1.ffm

terminal 2:

 # ffmpeg -i pipe2.avi -async 1 -r 25 -vcodec flv -f flv somename.flv

terminal 3:

 # mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe1.avi

terminal 4:

 # mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe2.avi

Tudo está funcionando muito bem. Não há problemas em nenhum lugar.

Agora estou tentando criar um script e executá-lo em um cron. Este é o script:

ffserver &
ffmpeg -probesize 164000 -i pipe1.avi -async 1 -r 25 http://localhost:8090/feed1.ffm &
ffmpeg -i pipe2.avi -async 1 -r 25 -vcodec flv -f flv somename.flv &
mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe1.avi &
mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe2.avi &
exit 0

A linha crontab é:

10 * * * * script.sh > /dev/null 1>&2

O problema é que, quando o cron é executado, o sistema trava. Na verdade, ele não trava o fluxo, o que eu vejo em outro computador e está funcionando perfeitamente. Mas não posso fazer nada na máquina. A tela fica preta e não posso fazer nada, exceto reiniciá-la. Eu tenho um script que mata os processos anteriores. Se eu usá-lo, o fluxo é interrompido, mas eu ainda não recupero o acesso ao sistema (a mesma tela preta que eu faço).

    
por zozo 06.04.2011 / 10:54

1 resposta

1
  1. Redirecionar tudo para alguns arquivos de log: use o comando > /home/username/xxx.log 2 > & 1 & (não use tmp, porque na reinicialização o tmp é liberado)
  2. Adicione um pouco de sleep 5 entre os comandos, é possível ter processos que iniciem devagar e que dê algum tempo para iniciar em dada ordem (você também pode usar o comando wait, mas para testar, o sleep deve ser suficiente)
  3. O Mplayer está fazendo isso (está assumindo o controle do seu console). Use -vo dummy para ver se está funcionando. Se ainda não estiver funcionando, dê uma olhada nos logs para ver se algum problema de "terminal" aparece.
por 06.04.2011 / 11:28