dimarts, 27 de gener del 2009

Usar el cron de GNU-Linux com a despertador

NOTA: aquest article parla de com fer una frikada amb GNU-Linux... a vegades passa.

És curiós com el cos es torna tolerant al so del despertador. Per solucionar-ho, sempre he pensat que el millor és un despertador amb música que es pugui canviar sovint.

Suposo que aquest és el motiu de l'existència dels ràdio-despertadors. Per desgràcia, no m'agrada despertar-me amb un desconegut que parli, jo vull música. A més, els meus gustos musicals divergeixen força del que es sol sentir a les emissores convencionals.

Així, fa uns mesos vaig començar a mirar si existia algun tipus de despertador amb MP3. I d'existir, existeixen, però a un preu força més elevat del que m'esperava. Així que, aprofitant que dormo al mateix... habitacle... que un ordinador encès amb GNU-Linux i baixant coses de l'aMule tota la nit, vaig pensat que bé podria servir-me de despertador.

Tot buscant vaig arribar a una pàgina amb un tutorial. A continuació explico com m'ho he fet.

Alguns prerequisits

Abans de començar és necessari disposar d'un ordinador amb GNU-Linux instal·lat i amb altaveus. A més, cal instal·lar el reproductor "mplayer", el paquet té el mateix nom (consulteu la pàgina del tutorial per a més informació).

A més, crearem un directori dins del nostre home on posarem els MP3. Per exemple, "alarma".

No cal dir que cal saber obrir un terminal i editar un arxiu de text.

Les comanades

Per al despertador farem servir una sèrie de comandes. A grans trets volem:

  • Crear una llista de reproducció a partir dels arxius MP3 d'un directori.
  • Obrir un terminal nou on s'executi un Mplayer que reprodueixi la llista de reproducció del pas anterior.
  • Tancar el programa Mplayer. Aquesta la farem servir per forçar un tancat del reproductor en cas que ens oblidem de tancar-lo (perquè no es passi el dia sonant).
Per fer-ho fàcil, les dues primeres comandes les posarem en un arxsiu ".sh" anomenat "alarm.sh". I quedarà:
#!/bin/sh

find /home/elteuusuari/alarma -iname "*.mp3" -o -iname "*.ogg" > /home/elteuusuari/alarma/.playlist

/usr/bin/X11/xterm -display :0 -bg black -fg white -e mplayer -shuffle -playlist /home/elteuusuari/alarma/.playlist

Ja sé que la segona comanda és molt estranya, però és com funciona quan l'ha d'executar el cron.

Per a la última comanda (matar el mplayer), farem servir

pkill mplayer

Que bàsicament mata el primer procés anomenat mplayer que trobi.

Configurar el cron

En el meu cas, volia que el despertador sonés només els dies laborables a les 7:10 del matí tots els mesos de l'any i que parés a les 8:40. Per tant, executant la comanda
crontab -e
És possible editar les instruccions que s'executaran de forma programada. Un cop fetes les modificacions corresponents, l'arxiu crontab resultant és:
# m h  dom mon dow   command
10 07 * * 1-5 /home/elteuusuari/alarm.sh
45 08 * * 1-5 pkill mplayer
On la primera línia s'encarrega d'executar l'script "alarm.sh" i la segona d'aturar l'Mplayer. Anem a veure què volen dir els nombres del començament de cadascuna de les línies (les identifico segons la llegenda de la línia que comença amb #):
  • Primera partícula (m): identifica el minut. En el meu cas el primer s'executa a i 10 i el segon a tres quarts.
  • Segona partícula (h): representa l'hora. Si volgués que s'executés a cada hora, posaria un *
  • Tercera partícula (dom): acrònim de "Day Of Mont". Pot rebre valors de l'1 al 31 o bé un *
  • Quarta partícula (mon): és el mes. En el meu cas, no n'especifico cap, però seria un número de l'1 al 12, o el nom del mes en anglès.
  • Cinquena partícula (dow): acrònim de "Day Of Week". On 1 representa el dilluns i 7 el diumenge. I crec que tant el 0 com el 7 són diumenge. També és possible especificar el nom curt en anglès (per exemple, "sun" per sunday). En el meu cas volia només de dilluns a divendres, així que he posat 1-5.
  • Última partícula (command): és la comanda pròpiament dita.
I ja està. En realitat és força simple. Ara només cal regular bé el volum i posar MP3 dins el directori "alarma" (també pot reproduir OGGs).

1 comentari:

Anònim ha dit...

Molt bé Ferran, m'agrada que ajudis a desmitificar la idea que els informàtics som gent rara.