cron es un demonio clásico ( programa informático en sistemas de clase UNIX ) que se utiliza para ejecutar trabajos periódicamente en un momento específico. Las acciones regulares se describen mediante instrucciones ubicadas en archivos crontab y directorios especiales.
El nombre cron se deriva de la palabra griega χρόνος (hrόnos) - tiempo (en inglés - cronos ). El desarrollador de cron , Ken Thompson , lo confirmó en una conversación privada con Brian Kernighan . .
En los sistemas basados en systemd , cron ha sido reemplazado por el mecanismo integrado systemd.timer.
Los archivos crontab creados para usuarios individuales se encuentran en el directorio [1] /usr/spool/cron/crontabs/ o /var/spool/cron/tabs/ . No se recomienda editarlos manualmente, para ello se utiliza el comando crontab -e. Los archivos crontab utilizados para administrar todo el sistema se encuentran en el directorio /etc/cron.d/ . Además, los directorios /etc/cron.daily/ , /etc/cron.weekly/ y /etc/cron.monthly/ contienen programas que se ejecutan automáticamente (diariamente, semanalmente o mensualmente).
El archivo de configuración principal de cron /etc/crontab, se parece a esto:
# /etc/crontab: crontab para todo el sistema # A diferencia de cualquier otro crontab, no tiene que ejecutar el comando `crontab' # para instalar la nueva versión cuando edite este archivo # y los archivos en /etc/cron.d. Estos archivos también tienen campos de nombre de usuario, # que ninguno de los otros crontabs tiene. SHELL = /bin/sh RUTA = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #Cada usuario del sistema tiene su propio archivo establecido por crontab , que describe a qué hora y qué programas ejecutar en nombre de este usuario. Para editar el archivo crontab , se utiliza un programa especial crontab del mismo nombre , que le permite no interrumpir el proceso cron durante la edición.
Muestra el contenido del archivo de programación actual:
crontab-lEliminación del archivo de programación actual:
crontab -rPara editar el archivo crontab de su usuario , use el comando [2]
crontab -eLa tabla crontab consta de 6 columnas separadas por espacios o tabulaciones . Las primeras cinco columnas establecen el tiempo de ejecución ( minuto , hora , día , mes , día de la semana ), pueden contener un número, una lista de números separados por comas, un rango de números separados por un guión, símbolos *o /. En los archivos crontab del sistema , después de los campos de tiempo, se indica el usuario desde el que se ejecuta el comando. Todos los demás caracteres de la cadena se interpretan como un comando ejecutable con sus parámetros. Si el comando envía algún texto a la salida estándar, ese texto se envía al correo electrónico del usuario .
* * * * * comando a ejecutar - - - - - | | | | | | | | | ----- día de la semana (0-7) (domingo = 0 o 7) | | | ------- mes (1-12) | | --------- día del mes (1-31) | ----------- hora (0-23) ------------- minuto (0-59)Un ejemplo de archivo crontab :
# los comentarios comienzan con '#' como de costumbre # usa /bin/sh como shell SHELL = /bin/sh # envía los resultados a esta dirección MAILTO = paul@example.org # agrega el directorio de inicio del usuario a PATH PATH = /bin:/ usr/bin:/inicio/paul/bin #### Los trabajos comienzan aquí # se ejecutan todos los días a las 0 horas 5 minutos, agregan el resultado a log/daily 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # ejecutar el 1 de cada mes a las 2:15 p. m. 15 14 1 * * $HOME /bin/monthly # todos los días de la semana a las 10:00 p. m. 0 22 * * 1 -5 echo "Hora de ir a casa" | mail -s "Ya son las 22:00" juan 23 */2 * * * echo "Corriendo a las 0:23, 2:23, 4:23, etc." 5 4 * * sun echo "Corriendo a las 4:05 am el domingo" 0 0 1 1 * echo "¡Feliz Año Nuevo!" 15 10 .13 * * 1 .4 echo "Este mensaje se muestra los lunes y jueves a las 10:15 y 13:15" 0 -59 * * * * echo "Ejecutar cada minuto" 0 -59/2 * * * * echo " Se ejecuta en minutos pares" 1 -59/2 * * * * echo "Se ejecuta en minutos impares" # cada 5 minutos */5 * * * * echo "Han pasado cinco minutos" # cada primer domingo de cada mes. -eq 7 es el código del día de la semana, es decir, 1 -> lunes, 2 -> martes, etc. 0 1 1 -7 * * [ " $( fecha '+\%u' ) " -eq 7 ] && echo " Esta etiqueta se muestra cada primer domingo de cada mes a la 1:00 am"Para comodidad de los usuarios, muchos sistemas tienen programas GUI especiales para administrar cron .
Para distribuciones basadas en Debian:
Kcron es una interfaz de KDE para editar archivos de configuración cron . La utilidad se inicia con Alt+F2 , en la ventana de edición puede especificar con el mouse: