samedi 5 janvier 2008

jolie et longue musique à l'extinction de l'ordinateur

Pour pouvoir jouer une jolie musique non tronquée à l'extinction de l'ordinateur, j'ai fait un petit programme shell.
Le programme est
/etc/init.d/musique_fin.sh
et contient

#début du programme :
#!/bin/sh
# ce script a pour objet de jouer une jolie musique à l'arrêt du système.

PATH=/bin: /usr/bin: /sbin: /usr/sbin
DAEMON=/usr/bin/aplay

test -x $DAEMON || exit 0

case "$1" in
start)
wait
;;

stop)

/usr/bin/aplay /usr/share/sounds/ROM01.WAV

exit 1
;;

esac

exit 0

#fin du programme.

il faut le rendre executable. En root :
cd /etc/init.d
chmod +x musique_fin.sh

Il faut ensuite le lancer automatiquement à l'arrêt du système, donc le "mettre" dans /etc/rc0.d (en fait créer un lien.
Ca se fait par la commande, en root :
update-rc.d musique_fin.sh start 50 1 2 3 . stop 1 0 6 .

Ne pas oublier les points (même le dernier de la ligne).

J'explique : je n'arrivais pas à lancer le programme (plus simple) uniquement à la fermeture du système, car les autres daemons (dont le son) se coupent avant (les K précèdent les S dans ce niveau). J'ai donc lancé le programme tardivement (50) dans les runlevel 1, 2, et 3 , et le fait attendre en ne faisant rien, et je l'arrête en premier dans les runlevel 0 (halt) et 6 (reboot).
cf le man update-rc.d

Evidemment on peut faire ça avec n'importe quel fichier .wav ou autre (ici ROM01.WAV)
On télécharge ou enregistre un fichier .wav
puis en root :
mv /home/login/Desktop/fichier .wav /usr/bin/aplay /usr/share/sounds/
si le dit fichier était sur le bureau.

Bon, c'est mon premier script, il y a peut-être des maladresses, ne pas hésiter à me corriger et à me donner des explications
debianpmd arrowbase wanadoo.fr

1 commentaire:

Levi a dit…

ton script m'intéresse mais j'ai une erreur:
sudo update-rc.d musique_fin.sh start 50 1 2 3 . stop 1 0 6 .
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'K01musique_fin.sh' missing LSB tags and overrides
insserv: warning: script 'musique_fin.sh' missing LSB tags and overrides