Ajuda usando o crontab para reproduzir um som

2

Eu quero usar o crontab para tocar gravações do Big Ben a cada hora e às 15,30 e 45 minutos.

Até agora estou usando o mplayer2 e as seguintes tarefas:

0 1,13 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_01.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_75
0 2,14 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_02.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_76
0 3,15 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_03.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_77
0 4,16 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_04.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_78
0 5,17 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_05.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_79
0 6,18 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_06.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_80
0 7,19 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_07.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_81
0 8,20 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_08.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_82
0 9,21 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_09.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_83
0 10,22 * * * mplayer -really-quiet  ~/bin/bigben/Clock_Chime_10.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_84
0 11,23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_11.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_85
0 0,12 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_12.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_86
15 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-1.ogg -volume 100 >/dev/null 2>&1
30 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-2.ogg -volume 100 >/dev/null 2>&1
45 0-23 * * * mplayer -really-quiet ~/bin/bigben    /Clock_Chime_15-3.ogg -volume 100 >/dev/null 2>&1

Mas na maioria das vezes não funciona. Às vezes, toca o som, mas demora. ie. deveria tocar às 21:15, e não às 21:17 eu abri um terminal e joguei outro arquivo com o mplayer, depois que ele terminou, eu ouvi o que deveria tocar 2 minutos antes.

Editar: Agora tentando com:      * * * * * "/usr/bin/mplayer -volume 100 --ao=pulse /home/myuser/bin/bigben/Clock_Chime_15-1.ogg" sem sucesso.

Eu tenho a sensação de que a tarefa permanece em algum tipo de sugestão.

PS. Eu posso compartilhar os arquivos de som.

    
por fbm224 10.01.2016 / 23:43

2 respostas

0

Eu uso o seguinte comando para reproduzir um arquivo de som:

 aplay ~/scripts/KenbeepBent.wav

onde KenbeepBent.wav é um arquivo de som que eu mantenho no meu diretório ~ / scripts para que eu possa incluí-lo em scripts bash. Espero que satisfaça suas necessidades.

    
por Marc 11.01.2016 / 05:33
0

De acordo com esta resposta: Posso usar o cron para tocar no topo da hora como um relógio de pêndulo? você precisa exportar uma variável de ambiente antes de reproduzir sons no seu script cron:

export XDG_RUNTIME_DIR="/run/user/1000"

Por isso, em vez de ligar diretamente para o seu leitor de música, chame um nome de script em crontab da seguinte forma:

0 1,13 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_01.ogg >/dev/null 2>&1 # JOB_ID_75
    (... SNIP ...)
45 0-23 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_15-3.ogg >/dev/null 2>&1
  • Substitua ME pelo seu nome de usuário.
  • Você teve um erro (os espaços depois de /bigben e antes de /Clock on na última linha do seu crontab . Corrigi o erro acima.
  • Você estava usando o atalho ~/ para /home/ME , do qual cron não gosta. Use nomes de caminho completos em cron .

Em seguida, crie seu script /usr/local/bin/big-ben.sh :

#!/bin/bash
export XDG_RUNTIME_DIR="/run/user/1000"
mplayer -really-quiet "$1" -volume 100
  • "$ 1" é o parâmetro 1 passado por crontab entrada para seu script

Lembre-se de marcar o executável do script usando:

chmod a+x /usr/local/bin/big-ben.sh
    
por WinEunuuchs2Unix 10.06.2018 / 18:17