Vraag Help crontab gebruiken om een ​​geluid te spelen


Ik wil crontab gebruiken om ieder uur opnamen te maken van de Big Ben en om 15,30 en 45 minuten.

Tot nu toe gebruik ik mplayer2 en de volgende taken:

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

Maar meestal werkt het niet. Soms speelt het wel het geluid maar is het vertraagd. d.w.z. verondersteld om 21:15 te spelen, en het deed niet om 21:17 ik opende een terminal en speelde een ander bestand met mplayer, nadat het klaar was, hoorde ik degene die verondersteld werd om 2 min eerder te spelen.

Bewerk: Nu proberen met:      * * * * * "/usr/bin/mplayer -volume 100 --ao=pulse /home/myuser/bin/bigben/Clock_Chime_15-1.ogg" zonder succes.

Ik heb het gevoel dat de taak in een soort van cue blijft.

PS. Ik kan de geluidsbestanden delen.


2
2018-01-10 22:43


oorsprong


Wanneer doet het werk? Hoe zit het met het verzenden van de uitvoer naar een bestand, in plaats van /dev/null, zodat u het bewijs van elke aanroeping kunt zien. Log stderr ook. - andy256
Ik ben niet bekwaam in de terminal, >/dev/null 2>&1  is iets dat ik lang geleden heb toegevoegd om de terminal te proberen te verbergen die opkwam bij het afspelen van het geluid. Op basis van je coment heb ik verwijderd >/dev/null en het werkte, maar ik weet echt niet hoe of waarom, en of het gewoon toeval was. - fbm224
Werkt zolang als er geen ander geluid wordt afgespeeld en wordt niet weergegeven bij de volumeregeling van het pulsgeluid. * * * * * mplayer -volume 100 --ao=pulse ~/bin/bigben/Clock_Chime_15-2.ogg 2>&1 - fbm224


antwoorden:


Ik gebruik de volgende opdracht om een ​​geluidsbestand af te spelen:

 aplay ~/scripts/KenbeepBent.wav

waar KenbeepBent.wav is een geluidsbestand dat ik in mijn ~ / scripts-map bewaar zodat ik het in bash-scripts kan opnemen. Ik verwacht dat het aan je behoeften zou voldoen.


0
2018-01-11 04:33





Volgens dit antwoord: Kan ik cron als klok op een grootvader boven aan het uur gebruiken? je moet een omgevingsvariabele exporteren voordat je geluiden in je cron-script kunt afspelen:

export XDG_RUNTIME_DIR="/run/user/1000"

Dus in plaats van uw muziekspeler rechtstreeks te bellen, belt u een scriptnaam in crontab soortgelijk:

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
  • Vervangen ME met uw gebruikersnaam.
  • U had een foutmelding (de spaties erna /bigben en voordien /Clock in de laatste regel van je crontab. Ik heb bovenstaande fout opgelost.
  • Je gebruikte ~/ snelkoppeling voor /home/ME welke cron houdt niet van. Gebruik de volledige padnamen in cron.

Maak vervolgens uw /usr/local/bin/big-ben.sh script:

#!/bin/bash
export XDG_RUNTIME_DIR="/run/user/1000"
mplayer -really-quiet "$1" -volume 100
  • "$ 1" is de parameter 1 die is gepasseerd crontab toegang tot je script

Vergeet niet om het uitvoerbare script te markeren met behulp van:

chmod a+x /usr/local/bin/big-ben.sh

0
2018-06-10 16:17