Como executar o comando livestreamer com o cron?

1

Então, outro dia, instalei o Ubuntu 14.04 LTS em casa em uma partição próxima ao Windows 7. Como não posso estar em casa para assistir ao Grand Prix de Sailplane ao vivo transmitido no YouTube, decidi usar livestreamer ( link ) para salvá-lo em um arquivo usando sua opção -o.

Isso funciona bem (acho que - o teste está funcionando hoje e vou ver como fica quando chegar em casa hoje à noite), exceto que preciso iniciar o comando antes de sair de casa pela manhã e a transmissão só começa meio dia, levando a um desperdício de largura de banda pela manhã.

Então, o óbvio é usar o cron para agendar, certo? Apenas, quando executado pelo cron, ele nunca cria o arquivo de saída. A linha cron que eu uso é esta:

38 23 13 05 * ./getfaisgpstream 2> /home/me/getfaisgpstream.log

Como eu disse, a hora chega e vai, e o arquivo / home / me / faisgp20140513 não aparece quando é feito o livestreamer do terminal. Eu sei sobre o problema em que as linhas crontab precisam terminar em uma nova linha e deixei propositalmente uma linha em branco na parte inferior do arquivo para atender a essa necessidade.

Eu usei crontab -e para alterar o arquivo cron.

A saída que recebo em "getfaisgpstream.log" é:

./getfaisgpstream: 6: ./getfaisgpstream: livestreamer: not found

O conteúdo do arquivo "./getfaisgpstream" é:

echo 
echo ======= livestreamer script running to get FAI SGP 2014 stream and save it in home: ['date']
echo 

while true; do 
  livestreamer --hds-timeout 300 --hls-timeout 300 --rtmp-timeout 300 --http-timeout 300 --http-stream-timeout 300 -fo /home/me/Videos/faisgp'date +%Y%m%d' http://www.youtube.com/watch?v=xmy5VHAvNMg best
  echo ======= livestreamer terminated, restarting ['date']
  echo; done

echo 
echo ======= livestreamer script exiting ['date']
echo 

E sim, isso faz com que seja muito robusto - mas seja o que for, eu estou atrás de um simples truque agora que vai resolver isso para gravar a transmissão amanhã.

    
por Johan 13.05.2014 / 14:34

1 resposta

2

Eu encontrei a resposta para a minha pergunta: o cron não obtém as mesmas variáveis de ambiente que o seu terminal faz.

Certamente não obtém sua pasta pessoal como o diretório de trabalho inicial. Portanto, dizendo ...

./getfaisgpstream

... não funciona. O que você precisa fazer é:

/home/me/getfaisgpstream

Como também não obtém o mesmo caminho que você faz no seu terminal, dizendo ...

livestreamer --hds-timeout 300 ...

... também não funciona. O que você precisa fazer é:

/usr/local/bin/livestreamer
    
por Johan 14.05.2014 / 23:43