Crontab & Cron un breve tutorial en Raspbian para empezar

¿Qué es Cron?

Es un demonio o proceso que se ejecuta en segundo plano, que está presente en todos los sistemas operativos de tipo Unix (como pueden ser Linux, MacOs, FreeBSD…) y que nos permite definir la ejecución automatizada de comandos en la terminal que previamente hemos definido con Crontab, pudiendo programar su ejecución con detalle de minuto, hora, día del mes, mes, día de la semana.

¿Qué es Crontab?

Es el programa permite el acceso a un archivo de texto para su lectura, modificación o sustitución. Este archivo de texto de Crontab nos permite define la lista de tareas programadas para su ejecución. Un ejemplo de aplicación puede ser actualizar el software de forma automática, liberar memoria, automatizar backups…

Comandos para modificar Crontab

Para ver la lista actual de tareas:

crontab -l

Para modificar el fichero de nuestro usuario:

crontab -e

Si por defecto para modificar el fichero nos sale vim y queremos utilizar nano debemos ejecutar primero:

env EDITOR=nano

Para ver el fichero crontab de otro usuario:

sudo crontab -l -u usuario

Para modificar el fichero crontab de otro usuario:

sudo crontab -e -u usuario

Formato de tareas

Si decidimos definir una tarea en el crontab debemos seguir el siguiente formato:

Crontab

Ejemplo: ejecutando un script

Este script ha sido pensado para una distribución Debian.

Creamos en nuestro directorio personal /home/USUARIO un script que contenga:

#!/bin/bash
#Script de actualización
# meter en crontab de root
sudo apt-get update
sudo apt-get -y upgrade

Si la ruta del fichero es /home/USUARIO/actualizar.sh entonces ejecutamos el crontab de root para garantizar que la ejecución de apt-get se realice con los permisos necesarios:

env EDITOR=nano
crontab -e

Si queremos que todos los días a la 1 AM se ejecute este script añadimos

00 01 * * * sh /home/USUARIO/actualizar.sh

Espero que os sea útil, si tenéis alguna duda podéis dejar un comentario 🙂

Más información en: http://www.raspberrypi.org/documentation/linux/usage/cron.md