miércoles, 3 de octubre de 2007

Despertador casero usando crontab -e

El propósito de la siguiente entrada es "programar" un despertador para que se active cada día a la hora que le digamos.
Esto puede ser una chorrada si uno se levanta todos los días a la misma hora, así que para es gente mejor un despertado en la mesita y listo.

Para despertarnos o hacer las pruebas se puede usar un archivo de audio o video (mp3,acc,mp3,avi,wav,....) de nuestra máquina. También sirve un archivo ".m3u" que contiene una lista de canciones/vídeos.

Otra posibilidad es descargarse de alguna web de radios el archivo "m3u" que reproduce la radio "en directo" y usarlo para no escuchar siempre las mismas canciones. Webs de ese tipo hay un montón (europafm.net, flaixfm.net,....)

Una vez conseguido el archivo, lo activaremos con nuestro reproductor favorito.
Vamos a la consola y ejecutamos "ps x" y localizamos el proceso y vemos como son sus parámetros.Por ejemplo, yo en mi ubuntu festy, al hacer doble clic en el archivo /opt/FLAIXfm.mp3.m3u se activa el "totem". El resultado del comando "ps x" es el siguiente:
.....
.....
6084 pts/1 Ss 0:00 bash
6980 pts/1 SLl 0:02 totem file:///opt/FLAIXfm.mp3.m3u
6992 pts/1 R+ 0:00 ps x


Podemos comprobar que funciona cerrando el totem y ejecutando el siguiente comando:

$totem file:///opt/FLAIXfm.mp3.m3u


Activación automática del comando

Para ello usaremos el comando crontab.
Con "crontab -l" se muestra la planificación actual.
Con "crontab -e" se abrirá un editor de texto para planificar las tareas, pero...
El editor que se abre por defecto en mi máquina es el "nano" (un lio de editor), así que se pueden hacer varias cosas: aguantarse, leer la ayuda "man crontab" para cambiar de editor o ver el final de esta xuleta.

El contenido del fichero quedará de la siguiente manera:

# minutos hora day_of_month month day_of_week command
# Despertador
#Lunes y Martes a las 7:30h
30 7 * * 1,2 DISPLAY=":0" totem file:///opt/FLAIXfm.mp3.m3u

#Miércoles y Jueves a las 9:00h
00 9 * * 3,4 DISPLAY=":0" totem file:///opt/FLAIXfm.mp3.m3u

#Viernes a las 10h
00 10 * * 5 DISPLAY=":0" totem file:///opt/FLAIXfm.mp3.m3u


Después se guarda y NO HACE FALTA reiniciar el crontab ni nada por el estilo.

Hay un parámetro del comando "totem" que es "--diplay=" pero no he podido averiguar como se usa.
Por las listas y/o foros de www.bulma.net me enteré de que si no indicabas el DISPLAY el crontab no sabia donde mostrar lo que son "aplicaciones gráficas". Una forma de hacerlo es poniendo delante del comando eso que hay puesto (DISPLAY=":0")


Versión Consola

Para quien no tenga o no le funcione el entorno gráfico siempre podrá usar el comando "play archivo_audio1,archivo_audio2,...

2 comentarios:

Anónimo dijo...

Me ha ayudado mucho la información que se da sobre el funcionamiento de Totem y Cron, porque hasta ahora no había podido lograr que funcionaran conjuntamente puesto que no tenía en cuenta el comando DISPLAY. Sin embargo, me gustaría aportar más información, sobre todo por si resulta de utilidad a alguien. En primer lugar, creo que es importante decir que yo utilizo Debian Etch y que el archivo que edito para Cron es /etc/crontab. En segundo lugar, diré que a mi no me funcionaba el comando DISPLAY=":0"; y lo que hice fue ejecutar como usuario (el mismo que quería usar Totem y Cron) el comando env para obtener las variables de mi entorno porque intuí que sería importante; así supe que mi DISPLAY era 0.0; sin embargo, a pesar de añadir DISPLAY=":0.0", no lograba que Totem se ejecutara; la solución fue añadir el nombre de usuario (en mi caso, xavi) detrás del quinto campo del archivo crontab, es decir detrás del campo del día de la semana y antes de añadir DISPLAY y lo demás.
Y, para finalizar y ya en tercer lugar, un poquito más de información más o menos complementaria (recordad que estoy hablando de Debian Etch, y quizá algo pudiera cambiar en otra distribución... no sé): a) el comando DISPLAY, hay que escribirlo con mayúsculas; b) en mi caso, es indiferente usar o no las comillas entre las que va la cifra que sigue a DISPLAY; c) detrás de los dos puntos de la palabra file, hay que escribir por lo menos dos líneas inclinadas antes de la ruta; d) lo que se dice para Totem, vale también para Xmms (un reproductor más sencillito que Totem); e) el nombre del reproductor se tiene que escribir con minúsculas.
A continuació, y como ejemplo, añado una línea de mi crontab (que quizá os aparezca dividida): 55 17 * * 2 xavi DISPLAY=:0.0 totem file:///home/xavi/Desktop/1.mp3

Y eso es todo.

Anónimo dijo...

Excelente apunte no saben como lo he buscado, y tambien muy buen comentario de Anonimo.

Gracias