jueves, 3 de mayo de 2007

Comando crontab

Es una planificación de tareas por escrito. Su estructura es diferente al comando at antes mencionado, y tiene la ventaja de hacer bucles, es decir, repetirse los minutos, horas, días o días de la semana señalados, evitando escribir un comando at para cada uno.

Todo el mundo por ahí te dice "es muy fácil, pon $ crontab -e, edítalo adecuadamente y guárdalo" a veces hacen referencia a unos archivos que no existen: cron.allow y cron.deny, pero por desgracia no te los explican.

Cómo funciona el comando crontab
Una vez que escribes
$ crontab -e en la consola pasas a editar un archivo de texto temporal (en /tmp/*) es un método para que los usuarios que no tienen acceso a root puedan hacer sus crontab. Las líneas que comienzan con # son comentarios y no tienen ningún efecto. La primera línea es: # m h dom mon dow command , que recuerda que hay que respetar ese orden:
m minuto (0 - 59)
h hora (0 - 23)
dom día_del_mes (1 - 31)
m mes (1 - 12)
dow día_de_la_semana (0 - 7)
command comando

Debo explicar que el día de la semana 0 y el 7 son el mismo día, el domingo. Es comando es cualquier orden aceptada por consola, por lo que el abanico de posibilidades es muy amplio. También puedes ejecutar un script (un programa para consola). Se pueden usar el asterisco, comas para números uno a uno, guiones para intervalos y una barra *
/n para que vaya incrementando en n unidades


Compendio

*/5 * 1-7 4,6,11 0 echo 'Este mes tiene 30 días'>~/30_días.txt


*/5 Cada 5 minutos
* Cualquier hora
1-7 los 7 primeros días del mes
4,6,9,11 los meses con 30 días
0 domingo

El primer domingo del mes (condición que cumple el día domingo del 1 al 7) de los meses con 30 días, durante todo el día (a cualquier hora) cada 5 minutos (no importa cuál sea el minuto inicial) escribe en el archivo 30_días.txt situado en tu carpeta personal (~) el texto "Este mes tiene 30 días".

Rectificación: Se deben poner rutas absolutas, en mi caso /home/rutrus/ en lugar de ~/


¿Porqué no funciona crontab?

Muy sencillo, no tienes permisos. Los permisos los da root a los usuarios. Por eso cuando guardas el crontab se queda ahí, como un archivo más sin importancia. Para dar y quitar permisos existen los archivos /etc/cron.allow y /etc/cron.deny que inicialmente no existen.

Funcionamieno de cron.allow y cron.deny

cron.allow

Si existe busca en él el nombre del usuario que quiere usar crontab. Si no existe lee el archivo cron.deny

cron.deny

Si existe busca en él el nombre de usuario al que denegar el uso de crontab. Si no existe (y tampoco cron.allow ) es root el único que tiene permiso a usarlo. Para dar permiso a todos los usuarios basta con crear sólo el archivo cron.deny vacío: $sudo nano -w /etc/cron.deny

Basta con dar un intro y guardarlo.

Extraído de math-linux [eng]


Ver y eliminar tareas

Para ver el archivo crontab:
$ crontab -l
Para eliminar el archivo crontab:
$ crontab -r

-----

Véase Cron

Más información en $ man crontab.

-----