Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Code geschreven dat een geluidje moet afspelen d.m.v. crontab, maar werkt niet.  (gelezen 737 keer)

Offline bart85

  • Lid
In crontab heb ik met de opdracht `crontab -e` heb ik onderstaande regel ingevoerd om een script op te starten dat een geluid afspeeld.
30 10 * * * alarm.sh koffie
Code van alarm.sh:
waarvoor=$(echo $1 | tr a-z A-Z)

. /etc/alarm.conf # instellingen sourcen


case $waarvoor in # file met het af te spelen geluid.
KOFFIE)
file=$sounddir/$koffie
;;
COMPLETE)
file=$sounddir/$complete
;;
*)
exit 1
;;
esac


until [[ $i = $repeat ]] # Afspelen n maal herhalen
do
i=$(( i + 1 ))
ogg123 -d alsa $file # geluid afspelen
sleep 0.5
done

Instellingen worden uit onderstaande configuratiebestand (/etc/alarm.conf) gehaald:
repeat=10
sounddir=/usr/share/sounds/freedesktop/stereo
koffie=bell.oga
complete=complete.oga

Waarom hoor ik geen geluid? Het script alarm.sh staat in /usr/local/bin en heeft dezelfde eigenaar als de gebruiker met execute permissie.
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Offline bart85

  • Lid
Het werkt als crontab word gewijzigd:

30 10 * * * /usr/local/bin/alarm.sh koffie
Blijkbaar kent crontab niet de $PATH variabele, waar het script in staat.
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin