Check the new version here

Popular channels

Haz tu propio recordatorio con cronie [sencillo]

Hace unos días instalé cronie, que sirve para ejecutar scripts de manera automática cada cierto tiempo y pues lo usé para que ejecutara un archivo python ciertos días a cierta hora. Como tengo 'muchas' cosas que hacer y varias de ellas involucra la computadora, decidí programar uno en Python ya que estoy aprendiendo y me gusta mucho el lenguaje. No uso uno que de los ya existentes ya que como es algo simple, decidí hacer uno por mi cuenta, ¡nada como algo hecho por uno mismo, entendiendo lo que hace, simple y funcional!

Ya que instalé las notificaciones del sistema decidí hacerlo llamándolo a través de Python y enviándole como parámetro de mensaje un archivo. No funcionó, por más que investigué no me funcionó, así que vagando un poco, encontré una manera más sencilla de hacerlo solo usando cronie.



Requisitos:
  • Notify-osd (si ya posees un paquete de notificaciones como el de xfce puedes omitir éste paquete)
  • cronie
En Arch linux se instala como: $ yaourt -S notify-osd cronie

Primero, crea un archivo el cual contendrá el texto del recordatorio, en mi caso, se encuentra en home y se llama remind.txt



Luego, tenemos que agregar los comandos a cronie, para ésto solo ejecutamos en una terminal: $ crontab -e y se nos abrirá un archivo en la terminal con tu respectivo editor de texto (en mi caso, vim).

Aquí es donde comenzamos a agregar, para empezar a agregar texto en vim, basta con presionar la tecla i y en la parte inferior se nota que dice "INSERTAR", luego ingresamos el siguiente texto:

0 * * * * export DISPLAY=:0.0 && notify-send ¡Recuerda! "$(cat ~/remind.txt)"[/align]


Importante los espacios entre asteriscos.

Guardamos presionando ESC para salir de modo y escribiendo :wq y enter.

Ahora bien, como verás, en el archivo cron primero están 5 carácteres separados por espacios, y el primero es un 0, ¿por qué? Pues ahí es donde se define cuándo se ejecuta el o los scripts que vienen después de dichos carácteres.

Los 5 caracteres hacen referencia al tiempo, el primero se refiere al minuto, el segundo a la hora, el tercero al día del mes, el cuarto al mes del año y el quinto al día de la semana (1-7).
Para ayudarte a recordarlo podrías colocar como comentario al principio del archivo cron:
# m  h  dm  ma  ds[/align]

¿Por qué un cero y los demás son asteriscos?
Si colocamos los 5 caracteres como asteriscos (* * * * *) el comando se ejecutará cada vez que transcurra un minuto. Cuando coloco el 0 en la parte del minuto, le digo a cron que ejecute los comandos todos los días del mes, todos los meses, todos los días de la semana, todas las horas pero solamente cuando el minuto sea 0, es decir, se ejecutará cada hora: 1:00 2:00 3:00.

Otros ejemplos podrían ser:

30 */2 * * * comandos...[/align]
Para ejecutar cada dos horas en el minuto 30 (cada hora divisible entre dos)

25 7 * * 1-5 comandos...
Para ejecutar a las 7:25am de lunes a viernes. El guión se usa los valores entre ambos números, 1,2,3,4,5 (intervalo cerrado).

0 22 15,30 * comandos...
Para ejecutar cada día 15 y 30 (cada quincena) de cualquier mes, a las 10:00pm. La coma se usa para usar varios valores juntos.

¿Qué significa eso de export DISPLAY...?
Son los comandos a ejecutar. Aquí es donde tenía problemas con Python, primero lo había hecho para que llamara a "python reminder.py" pero luego de vagar descubrí que tenía que especificar la pantalla primero y al mismo tiempo podía hacerlo más fácil colocando el comando en el mismo cron en lugar de programar un archivo Python. Incluso, llegué a leer un poco de cómo usar la librería dbus para Python para poder mostrar un mensaje pero igual no funcionó.

El comando notify-send lo usa casi todos los programas de notificaciones de linux, lo que hace es enviar un mensaje que está entre comillas, también pudiéndole agregar un títula antes de ésta sin comillas (¡Recuerda!). El comando cat se usa para devolver el contenido de un archivo, en éste caso ~/remind.txt (donde está el texto que quiero que me recuerde). Como no se puede enviar un archivo a notify-send, aparentemente, ésta usa el formato "$(comandos)" para usar comandos, así que, como comando, le envío el texto que devolvió el comando cat que a la vez llamó a remind.txt. Incluso, puedes colocar como parámetro -t los segundos que quieres que tarde la notificación: notify-send ¡Recuerda! "$(cat ~/remind.txt)" -t 5000 . El tiempo se escribe en milisegundos, el anterior comando lo debería mostrar por 5 segundos.

Podrías configurar el cron para que llamara a los comandos cada minuto y así ver si tu configuración funciona correctamente y te muestra el mensaje.

Ya una vez configurado todo bien, aunque es poco (solo el cron), debería funcionar tu recordatorio. Si lo que se quiere es algo simple no hay que recurrir a esas aplicaciones de recordatorio complejas y con funciones que no usas y a la vez ralentizan un poco la aplicación en sí y la compilación del mismo. Con algo simple y funcional basta, y además, ¡aprendes un poco más y podrías hacer cosas más complejas y útiles para ti!
0
0
0
0
0No comments yet