Crontab

Generador de Crontab

Este artículo necesita citas adicionales para su verificación. Por favor, ayude a mejorar este artículo añadiendo citas de fuentes fiables. El material sin fuente puede ser cuestionado y eliminado.Buscar fuentes:  “Cron” – noticias – periódicos – libros – scholar – JSTOR (noviembre de 2011) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)

La utilidad de línea de comandos cron, también conocida como cron job[1][2] es un programador de trabajos en sistemas operativos tipo Unix. Los usuarios que configuran y mantienen entornos de software utilizan cron para programar trabajos[3] (comandos o scripts de shell) que se ejecutan periódicamente a horas, fechas o intervalos fijos[4]. Normalmente automatiza el mantenimiento o la administración del sistema, aunque su naturaleza de propósito general lo hace útil para cosas como la descarga de archivos de Internet y la descarga de correo electrónico a intervalos regulares[5].

Las acciones de cron están dirigidas por un archivo crontab (tabla cron), un archivo de configuración que especifica los comandos del shell que se ejecutarán periódicamente en un horario determinado. Los archivos crontab se almacenan donde se guardan las listas de trabajos y otras instrucciones para el demonio cron. Los usuarios pueden tener sus propios archivos crontab individuales y a menudo hay un archivo crontab para todo el sistema (normalmente en /etc o en un subdirectorio de /etc, por ejemplo, /etc/cron.d) que sólo pueden editar los administradores del sistema[nota 1].

Sintaxis de Crontab

Para utilizar cron para tareas destinadas a ejecutarse sólo para su perfil de usuario, añada entradas al archivo crontab de su propio usuario. Para editar el archivo crontab introduzca: crontab -eEdite el crontab utilizando el formato descrito en las siguientes secciones. Guarde los cambios. (Para mostrar la ayuda en línea que describe el formato del archivo crontab, introduzca: man 5 crontabLos comandos que normalmente se ejecutan con privilegios administrativos (es decir, que generalmente se ejecutan con sudo) deben añadirse al crontab raíz. Para editar el crontab raíz, introduzca: sudo crontab -e

Después de salir del editor, el crontab modificado se comprueba en busca de errores y, si no los hay, se instala automáticamente. El archivo se almacena en /var/spool/cron/crontabs, pero sólo debe editarse mediante el comando crontab.

Las ediciones del crontab de un usuario y los trabajos de cron ejecutados se registran por defecto en /var/log/syslog y ese es el primer lugar donde comprobar si las cosas no se están ejecutando como se espera. Si un usuario no tenía permiso para ejecutar trabajos cuando su crontab se editó por última vez, añadirlo a la lista de permitidos no hará nada. El usuario debe volver a editar su crontab después de ser añadido a cron.allow para que sus trabajos se ejecuten. Tenga en cuenta que los crontabs específicos del usuario (incluido el crontab raíz) no especifican el nombre del usuario después de los campos de fecha/hora. Si incluye accidentalmente el nombre de usuario en un crontab específico de usuario, el sistema intentará ejecutar el nombre de usuario como un comando. Es posible que los crontab no se ejecuten con el entorno, en particular el PATH, que usted espera. Pruebe a utilizar las rutas completas de los archivos y programas si no se localizan como espera. El carácter “%” se utiliza como delimitador de nueva línea en los comandos de cron. Si necesitas pasar ese carácter a un script, debes escaparlo como “\%”. Si tiene problemas para ejecutar una aplicación de interfaz gráfica de usuario (GUI) utilizando cron, consulte la sección Aplicaciones GUI más adelante.

Gurú de Crontab

Cron es un demonio de reloj, cuyo nombre proviene de Chronos, la palabra griega para el tiempo. Permite a los usuarios automatizar la ejecución de comandos, scripts (un grupo de comandos) o programas a intervalos de tiempo específicos. Cron es un demonio, un proceso de larga duración que sólo necesita iniciarse una vez y que se ejecuta constantemente en segundo plano. Cron se despierta cada minuto, examina su lista de cosas por hacer para ver si hay que ejecutar alguna tarea programada, y si es así la ejecuta. Si no es así, vuelve a dormir durante otros 59 segundos. La lista de cosas por hacer se llama tabla cron, o Crontab para abreviar.

La primera línea muestra que crond se está ejecutando, la segunda línea es la búsqueda que se acaba de ejecutar. Si crond no se está ejecutando, es porque el proceso se terminó (mató) desde la última vez que se inició el ordenador, o nunca se inició en primer lugar. Para hacer que el demonio cron (crond) se añada a los servicios del sistema que chkconfig gestiona, haga lo siguiente como root:

Si coloca un script en uno de esos directorios, se ejecutará cada hora, diariamente, semanalmente o mensualmente, dependiendo del nombre del directorio. Estos directorios son gestionados por un flie crontab maestro ubicado en:

Comando Crontab

Me gustaría configurar un trabajo para que se ejecute diariamente en el crontab de la raíz. Pero me gustaría que se ejecutara desde un directorio concreto para que encuentre todos los archivos que necesita, ya que la aplicación tiene un montón de rutas relativas.

En cuanto al uso de && en lugar de ;: normalmente no hay diferencia, pero si el comando cd falla (por ejemplo, porque el directorio no existe) con && la aplicación no se ejecuta, mientras que con ; se ejecuta (pero no en el directorio previsto).

La lectura de man 5 crontab debería decirle que hay una variable HOME que puede ser redefinida en el archivo. Se convierte en su directorio de trabajo. También puede establecer el PATH para el comando(s). Por supuesto, esto afecta a todas las líneas de programación de cron.