viernes, 28 de agosto de 2015

Ubuntu crontab: agregando una tarea para purgar django_session

Como de costumbre necesito agregar un cronjob para limpiar la tabla de sesiones de django y aquí dejaré documentado el proceso, un proceso cron es aquel que puede repetirse dependiendo de la configuración.

Dentro del sistema operativo podemos ejecutar

$ sudo crontab -e

Posteriormente el sistema preguntará por el editor en mi caso muy particular me gusta utilizar vim (opción 3), sin embargo da opciones a varios editores.

Ahora bien nos vamos al final del archivo la forma es estructurar el contenido de acuerdo a como se nos explica en la siguiente imagen:


Cada línea del archivo crontab esta compuesta por estos componentes, aquí un ejemplo:

#crontab
#------------

1 * * * * touch /webapps/hola.txt

#------------

OJO: Si estas editando con vim necesitas dar ESC y luego :wq!  así es con el signo de exclamación para que así instale el crontab.

En el crontab anterior estamos configurando que cada vez que el minutero del reloj marque 1, se va crear un archivo que dice hola.txt.

Ahora bien para el motivo que necesito hice un archivo con extensión .sh y lo coloque en mi directorio de /home/my_user/cron_django_session.sh con el siguiente contenido:

/webapps/mi_proyecto/venv/bin/python /webapps/mi_proyecto/django_app/manage.py clearsessions
strFecha=$(date)
echo $strFecha > /home/administrador/cron_django_session.log

NOTA: Revisar rutas de archivos

Posteriormente le damos permisos usando el comando:
$ chmod +x cron_django_session.sh

Posteriormente vamos al crontab para añadir la ejecución de este archivo:

0 1 * * * /home/my_user/cron_django_session.sh >/dev/null 2>&1

De esta forma el script se va ejecutar todos los días a la 1 a.m. al final se agrega >/dev/null 2>&1 para que no todo el tiempo el sistema operativo intente enviar un correo al usuario root, en caso de que se necesite se debe quitar esa parte.


Espero te sea de utilidad !

Referencias:
http://www.debian-tutorials.com/crontab-tutorial-cron-howto
http://www.guatewireless.org/os/linux/como-agregar-tareas-al-cron-de-linux.html
https://docs.djangoproject.com/en/1.8/topics/http/sessions/#clearing-the-session-store
http://www.opencsw.org/community/questions/289/how-to-clear-the-django-session-cache
https://vinta.ws/code/clear-session-in-django.html
http://stackoverflow.com/questions/10289970/add-10-minute-cron-job-to-ubuntu-package


ACTUALIZACIÓN 2015-10-20

Si quieres verificar como se ejecuta el cronjob puedes ver varios archivos a mi me funciono:
$ sudo vi /var/log/syslog

Referencias:
http://unix.stackexchange.com/questions/207/where-are-cron-errors-logged