Home » Tecnología » Crontab

Crontab

Publicado en: Tecnología

Crontab es un programa que permite correr comandos o aplicaciones programadas en el tiempo. En MacOS X está en /etc/crontab. Para abrir el archivo de configuración y proghramar nuestras tareas, debemos acceder con permisos de administrador, haciendo:

sudo vi /etc/crontab
password:

e introducir nuestra contraseña de administrador, la que MacOS X nos pidió al instalar el sistema.

Configuración por defecto:

# /etc/crontab
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour    mday    month   wday    who     command
#
#*/5    *       *       *       *       root    /usr/libexec/atrun
#
# Run daily/weekly/monthly jobs.
15      3       *       *       *       root    periodic daily
30      4       *       *       6       root    periodic weekly
30      5       1       *       *       root    periodic monthly

El archivo va configurado por tabuladores, dispuesto por columnas,
cada una corresponde a un campo, y la columna de command es la del comando o instrucción que queremos ejecutar. Pero veamoslo más detenidamente, campo a campo.

Está organizado en columnas, la primera minute que marca el minuto de la hora que le demos para ejecutarse, por ejemplo si queremos que se ejecute a las 12:30h le ponemos en esa columna 30. Más interesante es la opción de anteponerle una barra que le da el poder de repetirse cíclicamente cada X minutos, de forma que si ponemos */5 el comando se jecutará cada 5 minutos, como en el ejmplo de la configuración por defecto del crontab:

#*/5    *       *       *       *       root    /usr/libexec/atrun

en este ejemplo (va precedido de # que significa comentario, esto es, el cron no lo ejecutará) tenemos que cada 5 minutos, con el usuario root del campo who, va a ejecutar el comando /usr/libexec/atrun. Al comando o instrucción se le debe pasar al ruta completa desde nuestra partición boot, raiz o de arranque ( / ).

MacOS X corre unos scripts diarios, semanales y mensuales que chequean nuestro equipo y limpian las cachés, entre otras cosas. Las sentencias de ejecución están en el crontab. Exactamente en:

# Run daily/weekly/monthly jobs.
15      3       *       *       *       root    periodic daily
30      4       *       *       6       root    periodic weekly
30      5       1       *       *       root    periodic monthly

periodic es el comando que el usuario root va a ejecutar y daily el parámetro que se le pasa adicional. Esta en concreto es el mantenimiento de cachés diarios. Observando cada línea tenemos que el cron diario se lanza a las 3:15h de la madrugada (la hora es de reloj de 24h, no AM,PM), el semanal a las 4:30h del sábado, y el mensual el día 1 de cada mes a las 5:30h
El intervalo de tiempo atiende a que las tareas no se deben superponer, por eso llevan esa pequeña diferencia horaria entre sí.

Una vez visto la configuración por defecto de nuestro crontab estamos en disposición de hacer nuestra tarea. En mi caso, voy a poner una sentencia para ajustar los permisos de propietario y grupo de los archivos y carpetas:

*/30    *       *       *       *       root    /bin/chown -R nico:staff /docs/

de esta forma, cada 30 minutos, el usaurio root lanzará un poceso de toma de possesión de archivos de forma recursiva (-R) al propietario (owner), en este caso nico, y al grupo (staff), a la carpeta del directorio raiz docs y a todos los archivos y subdirectorios o carpetas dentro de docs.

Otro ejercicio interesante es cambiar la hora en que nuestro sistema hace las tareas diarias, semanales y mensuales, adecuándolas al horario en que tengamos la máquina encendida, ya que si está apagada el cron no se lanzará. Si solemos trabajar por las mañanas, y aprovechamos un rto para tomar el café siempre a la misma hora, podemos preparar el cron para que se ejecute en ese rato, de forma que si me voy a desayunar a las 11, lo lancemos en ese momento. Y podría quedar algo como:

# Run daily/weekly/monthly jobs. (Hora modificada)
0       11      *       *       *       root    periodic daily
15      11      *       *       6       root    periodic weekly
30      11      1       *       *       root    periodic monthly

Quizá cuando volvamos el cron se esté ejecutando y veamos que nuestra máquina se ralentiza, una vez que acabe el proceso volverá a ser la misma, o incluso habrá mejorado un poco. Todo depende de nuestra disponibilidad de tiempo.

SaludoX

2 Comentarios

  1. roberto
    |

    Esto es valido para linux ?
    me refiero #*/5 * * * * root /usr/libexec/atrun

  2. nico
    |

    Debes mirar la documentación de tu distribución de linux, cada una puedes diferir un poco del resto.
    Pero es válido en cualquier versión de Mac OS X y Debian.