Documentación Gentoo -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Imprimir

Actualizado 26 de Guía Gentoo Linux de enero, 2008

Sumario: Esta guía Contenido: 1. Aspectos básicos de cron describe cómo configurar y usar cron. 1. Aspectos básicos de cron Eric Brown Autor ¿Qué hace cron? Xavier Neys Cron es un demonio que ejecuta tareas de manera programada basado en Editor la configuración del comando crontab. Cumple esta tarea al despertar cada minuto y revisando la existencia de trabajos-cron en los crontabs de los Joshua Saddler usuarios. Editor

John Christian Nota: Note que crontab es a la vez, el nomb re de la lista de trabajos-cron al igual Stoddart que el nombre del comando usado para modificar esa lista. Traductor

José Luis Rivero El cron de facto Traductor

Existen varias implementaciones del gestor cron para escoger en Portage. Donate to support our Todos ofrecen un interfaz similar, el uso del comando crontab o similar. development efforts. Existe una herramienta relacionada de nombre , que trabaja en conjunto con cron en sistemas que no estén encendidos de manera continua.

Vale la pena mencionar que los paquetes disponibles de cron dependen de sys-process/cronbase. Este paquete técnicamente no aparece en las dependencias de los paquetes cron, pero provee la funcionalidad de tipo cron que la mayoría de los usuarios pueden apreciar.

Antes de empezar a trabajar con cron, habrá que escoger cuál implementación quiere usar. Para su conveniencia, he resumido alguna información acerca de cada una a continuación.

2. ¿Cual cron le conviene más?

Vixie cron

Vixie cron es un cron pleno de características, basado en el cron SysV. Cada usuario tiene su propio crontab y le está permitido especificar variables de entorno dentro de su crontab. A diferencia de las demás variantes de cron, también tiene soporte para SELinux y PAM. Soporta menos plataformas que Dcron, pero más que .

Características de sys-process/vixie-cron:

Soporte para SELinux

1 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Soporte para PAM /etc/security/limits.conf Configuración de variables de entorno en el crontab (PATH, SHELL, HOME, etc.) Cada usuario puede tener su propio crontab, el acceso se controla con los archivos cron.allow y cron.deny

El cron de Dillon

Dcron apunta a ser una sencilla, elegante y segura implementación de cron. No permite especificar variables de entorno en los crontabs y todos los trabajos cron son ejecutados desde /bin/sh. Así como Vixie cron, cada usuario tiene su propio crontab.

Características de sys-process/dcron:

Rápido, sencillo y libre de características innecesarias El acceso a crontab se limita al grupo cron, en otras palabras, no requiere capacidad externas

Fcron

Fcron apunta a sustituir Vixie cron y Anacron. Su diseño toma en cuenta los sistemas que no están encendidos de manera continua y está repleto de características adicionales. Tiene restricciones para iniciar los trabajos, control del orden de ejecución, la posibilidad de asignar valores "" (prioridad) a los trabajos y para ejecutar trabajos al arrancar el sistema. Vea la página de fcron para mayor información.

Características de sys-process/fcron:

Diseñado para funcionar en sistemas que no están constantemente encendidos, por ejemplo, puede ejecutar una tarea después de reiniciar la máquina si la oportunidad de ejecutarla se perdió Configuración de variables de entorno y muchas otras opciones en los crontabs Cada usuario puede tener su propio crontab, el acceso se controla con los archivos cron.allow y cron.deny Sintaxis mejorada de crontab con soporte para muchas características nuevas

bcron

bcron es un sistema cron nuevo, diseñado para operar de manera segura. Para esto el sistema está dividido en varios programas separados, cada uno responsable de una tarea separado con comunicaciones estrictamente contraladas entre ellas. El interfaz de usuario es un reemplazo exacto para programas similares (como vixie-cron), aunque la parte interna es muy diferente. Para más información vea la página de bcron en http://untroubled.org/bcron/.

Características de sys-process/bcron:

Reemplazo exacto para vixie-cron Diseño multiproceso Soporte nativo para "daylight savings "

Anacron

2 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Anacron no es un demonio cron, funciona conjuntamente con uno. Ejecuta comandos a intervalos especificados en días y no asume que el sistema está encendido de manera continua; ejecutará las tareas que no pudieron ejecutarse si el sistema estaba apagado. Anacron normalmente requiere un demonio cron para ejecutarlo diariamente.

3. Usando cron

Instalación

Seleccione la implementación de cron que más le guste e instálela vía emerge.

Listado de Código 3.1: Instalar cron # emerge dcron # /etc/init.d/dcron start # rc-update add dcron default

Opcionalmente, si no ha instalado Fcron, tal vez quiera instalar Anacron.

Listado de Código 3.2: Instalar anacron # emerge anacron # /etc/init.d/anacron start # rc-update add anacron default

El crontab del sistema

Los mensajes post-instalación de algunos de estos paquetes cron le informan que debe ejecutar el comando crontab /etc/crontab. El archivo /etc/crontab es el crontab del sistema. Una instalación de cron lo usa junto a sys-process/cronbase para ejecutar los guiones en /etc/cron. {daily,hourly,weekly,monthly}. Note que solamente Vixie-cron programa las tareas en /etc/crontab automáticamente. Los usuarios de Dcron y Fcron deberán ejecutar crontab /etc/crontab cada vez que hagan cambios a /etc/crontab.

Por favor note que los trabajos programados en el crontab del sistema puede que no aparezcan en la lista de trabajos cron mostrados por crontab -l.

Por supuesto, puede escoger no usar un crontab de sistema. Si escogió a Dcron o Fcron, no ejecute crontab /etc/crontab. Si escogió vixie-cron, debe comentar todas las líneas del /etc/crontab.

Listado de Código 3.3: Comentar todas las líneas en /etc/crontab # -i -e "s/^/#/" /etc/crontab

Dándole acceso a cron a los usuarios confiables

Si desea que otros usuarios que no sean root tengan acceso al demonio cron, deberá leer esta sección, de lo contrario puede proceder a la siguiente sección, programando los trabajos cron.

Nota: Darle acceso a un usuario al crontab no hace que los trabajos se ejecuten

3 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

como el usuario root. Si desea que un usuario pueda modificar el crontab del usuario root, debe evaluar el uso de sudo. Por favor, lea nuestra Guía de Sudo(ers) de Gentoo para más detalles.

Sin importar qué paquete de cron use, si quiere permitir que un usuario use crontab, primero tendrá que pertenecer al grupo cron. Por ejemplo, si quisiera agregar el usuario wepy al grupo cron ejecute:

Listado de Código 3.4: Agregar un usuario al grupo cron # gpasswd -a wepy cron

Nota: Cuando agregue el usuario al grupo cron, asegúrese que este salga e ingrese nuevamente al sistema para que el cambio de grupo tenga efecto.

Es todo lo que tiene que hacer para darle a un usuario acceso al crontab, si está usando Dcron. Los usuarios de D cron pueden saltar a la siguiente sección programando los trabajos cron, los demás querrán seguir leyendo.

Si está usando Fcron, querrá modificar l os archivos /etc/fcron /fcron.deny y /etc/fcron/fcron.allow. La manera más segura es primero negarle acceso a todo el mundo en /etc/fcron/fcron.deny y luego, explícitamente permitir acceso a los usuarios en /etc/fcron /fcron.allow.

Importante: Si no existen los archivos /etc/fcron/fcron.allow o /etc/fcron /fcron.deny, se les permitirá a todos los usuarios del grupo cron usar el crontab. fcron viene con un fcron.allow por defecto que permite que todos los usuarios del grupo cron tengan acceso a fcrontab.

Listado de Código 3.5: Los permisos en fcron.deny all

Ahora, digamos que tenemos un usuario, wepy, quien debería poder programar sus propios trabajos cron. Debemos agregarlo a /etc/fcron /fcron.allow de la siguiente manera:

Listado de Código 3.6: Los permisos en fcron.allow wepy

Si escogió Vixie cron, probablemente querrá modificar el archivo /etc/cron.allow solamente.

Importante: Es importante notar que solamente si existe el archivo /etc/cron.allow, los usuarios del grupo cron allí listados tendrán acceso, pero sólo si existe un archivo /etc/cron.deny vacío, ¡Entonces todos los usuarios del grupo cron se les permitirá acceso! No permita que haya un /etc/cron.deny vacío si no existe el /etc/cron.allow.

Por ejemplo, si quiere permitirle acceso al usuario wepy, agréguelo a /etc/cron.allow de la siguiente manera:

Listado de Código 3.7: Los permisos en /etc/cron.allow wepy

4 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Programando trabajos cron

El proceso de modificar los archivos crontab es distinto para cada paquete, pero todos soportan el mismo conjunto básico de comandos: agregando y reemplazando crontabs, modificando crontabs, borrando crontabs y listando los trabajos en los crontabs. La siguiente lista muestra cómo ejecutar estos comandos para cada paquete.

Editar Borrar Nuevo Listar tareas Versión crontab crontab crontab programadas dcron crontab -e crontab -d crontab crontab -l [usuario]

fcron fcrontab -e fcrontab -r fcrontab fcrontab -l [usuario] file

vixie-cron & crontab -e crontab -r -u crontab file crontab -l bcron [usuario]

Nota: Cuando use el comando para borrar un crontab, de no pasarle un parámetro, este borra el crontab del usuario actual.

Nota: Fcron también posee un enlace simbólico desde crontab a fcrontab.

Antes de poder usar cualquiera de estos comandos, primero hace falta entender el propio crontab. Cada línea en un crontab debe especificar cinco campos de tiempo en el siguiente orden: los minutos (0-59), las horas (0-23), los días del mes (1-31), los meses (1-12) y los días de la semana (0-7, lunes es 1, el domingo es 0 y 7). Los días de las semanas y meses pueden ser especificados por abreviaturas de tres letras (en inglés), como mon, tue, jan, feb, etc. Cada campo también puede especificar un rango de valores (por ejemplo, 1-5 o mon-fri), una lista separada por comas de valores (por ejemplo, 1,2,3 o mon,tue,wed) o un rango de valores con paso (por ejemplo, 1-6/2 para 1,3,5).

Tal vez suene algo confuso, pero con algunos ejemplos, verán que no es tan complicado como parece.

Listado de Código 3.8: Ejemplos # Corra /bin/false cada minuto todo el año * * * * * /bin/false

# Corra /bin/false a la 1:35 el lunes,martes,miércoles (mon,tue,wed) y el día 4 de cada mes 35 1 4 * mon-wed /bin/false

# Corra /bin/true a las 22:25 el 2 de marzo 25 22 2 3 * /bin/true

# Corra /bin/false a las 2:00 cada lunes, miércoles y viernes 0 2 * * 1-5/2 /bin/false

Nota: Note que tiene que nombrar días específicos de la semana y días del mes para poder combinarlos. Si tienen un * para uno de ellos, el otro toma precedencia, mientras que un * en ambos campos significa diariamente.

Para poner a prueba lo que hemos aprendido, registraremos paso a paso algunos trabajos cron. Primero, crearemos un archivo llamado crons.cron de la siguiente manera:

5 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Listado de Código 3.9: Editar crons.cron $ nano crons.cron #Mins Horas Días Meses Dia de la semana 10 3 1 1 * /bin/ "Realmente no me gusta cron" 30 16 * 1,2 * /bin/echo "Me gusta cron un poco" * * * 1-12/2 * /bin/echo "Realmente me gusta cron"

Ahora podemos agregar ese crontab al sistema con el comando "Nuevo Crontab" de la tabla anterior.

Listado de Código 3.10: Un crontab nuevo # crontab crons.cron

Nota: No verá la salida de estos comandos si no se usa la redirección.

Para verificar los trabajos cron programados, usaremos el comando "Listar tareas programadas" apropiado, tomado de la tabla anterior.

Listado de Código 3.11: Listar los trabajos cron # crontab -l

Debe ver ahora una lista parecida a crons.cron, si no, a lo mejor ha usado un comando equivocado para ingresar su nuevo crontab.

Este crontab debe hacer presentar el texto "Realmente me gusta cron" cada minuto de cada hora de cada día en meses alternos. Obviamente esto sólo lo haría si realmente le gustara cron. Este crontab también presentará el texto "Me gusta cron un poco" a las 16:30 horas todos los días en Enero y Febrero. También presentará "Realmente no me gusta cron" a las 03:10 horas el 1 de enero.

Si está usando Anacron, siga leyendo esta sección, sino proceda a la sección siguiente, acerca de modificando los crontabs.

Los usuarios de Anacron querrán modificar /etc/anacrontab. Este archivo está dividido en cuatro campos: el número de días entre cada ejecución, el retraso en minutos luego de cada ejecución, el nombre del trabajo y el comando a ejecutar.

Por ejemplo, para hacer que ejecute echo "Me gusta anacron" cada 5 días, 10 minutos después de arrancar Anacron, haríamos:

Listado de Código 3.12: /etc/anacrontab 5 10 perdiendo-tiempo /bin/echo "Me gusta anacron"

Anacron termina de ejecutar después que haya ejecutado todos los trabajos en anacrontab, así que si queremos que realice estos trabajos todos los días, tendremos que usar cron. Las instrucciones al final de la siguiente sección explicarán cómo hacer ésto.

Editando los crontabs

Bueno, vamos a ser realistas, realmente no nos interesa que nuestro sistema nos diga cuanto le gusta cron cada minuto. Así que el siguiente paso es eliminar ese crontab usando el comando "Borrar crontab"

6 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

correspondiente de la tabla anterior. Después listaremos los trabajos cron, para asegurarnos que lo que eliminamos funcionó.

Listado de Código 3.13: Eliminar un crontab # crontab -d # crontab -l

No debería haber trabajos cron en la salida del comando crontab -l. Si ve alguno, es porque no eliminamos nuestro crontab, por lo que debe asegurarse de usar el comando "Borrar crontab" correspondiente a su paquete cron.

Ahora que estamos en cero, vamos a colocar algo útil en el crontab de root. La mayoría de usuarios querrán ejecutar updatedb semanalmente para que slocate funcione correctamente. Para hacer esto primero modificaremos crons.cron para que se vea al go como:

Listado de Código 3.14: Un crontab de verdad 22 2 * * 1 /usr/bin/updatedb

Esto hará que cron ejecute updatedb a las 2:22 am todos los lunes. Ingrese el crontab con el comando "Nuevo Crontab" adecuado de la tabla anterior y revise la lista otra vez.

Listado de Código 3.15: Listar los trabajos cron # crontab crons.cron # crontab -l

Ahora, digamos que también quiere agregar emerge --sync a sus trabajos programados diarios. Esto lo puede hacer primero modificando crons.cron y luego usando crontab crons.cron tal como hicimos anteriormente o el sencillamente con el comando "Editar Crontab" apropiado de la tabla anterior, lo cual permite modificar el crontab del usuario in situ sin depender de archivos externos como crons.cron.

Listado de Código 3.16: Editar un crontab in situ # crontab -e

Esto deberá abrir el crontab del usuario con un editor de texto. Queremos que emerge --sync se ejecute diariamente a las 6:30 am, por lo que se vería algo como:

Listado de Código 3.17: Un crontab de verdad 22 2 * * 1 /usr/bin/updatedb 30 6 * * * /usr/bin/emerge --sync (si está usando anacron, agregue esta línea) 30 7 * * * /usr/sbin/anacron -s

Una vez más, revise la lista de trabajos cron, como hicimos en los ejemplos anteriores para asegurarnos que los trabajos estén realmente programados. Si todos están allí, está listo.

4. Usando cronbase

7 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

Como se mencionó antes, los paquetes cron disponibles dependen de sys-process/cronbase. El paquete cronbase crea /etc/cron. {hourly,daily,weekly,monthly} y un guión llamado run-crons. Puede que se haya dado cuenta que el archivo /etc/crontab por defecto contiene algo como esto:

Listado de Código 4.1: Crontab del sistema por defecto */15 * * * * -x /usr/sbin/run-crons && /usr/sbin/run-crons 0 * * * * -f /var/spool/cron/lastrun/cron.hourly 0 3 * * * rm -f /var/spool/cron/lastrun/cron.daily 15 4 * * 6 rm -f /var/spool/cron/lastrun/cron.weekly 30 5 1 * * rm -f /var/spool/cron/lastrun/cron.monthly

Para evitar entrar en mayores detalles, podemos asumir que estos comandos efectivamente ejecutan sus guiones cada hora, día, semana o mes. Este método de calendarización de tareas tiene algunas ventajas importantes:

Las tareas se ejecutarán incluso si su computadora fue apagada cuando estaban programadas para ejecutarse. Es fácil para los mantenedores de paquetes ubicar los guiones en esos lugares definidos. Conoce exactamente donde se guardan sus tareas y crontab, facilitándole el proceso de respaldo y recuperación de esta parte de su sistema.

Nota: Nuevamente, es útil señalar que Vixie cron y bcron leen automáticamente el archivo /etc/crontab, mientras que dcron y fcron no lo hacen. Por favor, lea la sección El crontab del sistema para aprender más sobre esto.

5. Notas finales

En caso de problemas

Si está teniendo problemas para hacer que cron funcione correctamente, tal vez quiera chequear esta lista.

¿Está corriendo cron? Ejecute ax | cron. Si está siendo ejecutado, ¡aparecerá! ¿Está funcionando cron? Intente: * * * * * /bin/echo "foobar" >> /su_archivo y asegúrese que funciona ¿Su comando funciona? Intente: * * * * * /bin/foobar > /su_archivo 2>&1, busque mensajes de error en /su_archivo ¿Podrá cron ejecutar su trabajo? Revise el registro (log) de cron, normalmente en /var/log/cron.log o /var/log/messages y busque mensajes de error ¿Hay correos no entregados (dead.letters)? Normalmente cron envía correos cuando hay algún problema, revise su buzón y busque ~/dead.letter

Acuérdese que cada paquete cron es distinto y que la gama de características varía bastante. Consulte las páginas del manual de crontab, fcrontab o anacrontab, dependiendo de cuál versión use.

8 de 9 19/11/09 21:52 Documentación Gentoo Linux -- Guía Gentoo Lin... http://www.gentoo.org/doc/es/cron-guide.xml

¡Buena suerte!

El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual

Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.

9 de 9 19/11/09 21:52