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
roberto
Esto es valido para linux ?
me refiero #*/5 * * * * root /usr/libexec/atrun
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.