You are on page 1of 7
Cron & crontab, explicados » lweain publicé hace ya un tiempo un excelente tutorial sobre cron y crontab que me parece vale la pena compart: Cron es una suerte de equivatente a Tareas Programadas en Windows, sélo que se maneja desde el terminal. Aquellos cue prefieran una Interfaz visual para lograr el mismo objetivo, pueden ver este otro erticuo, indice [Ocuter) 1 aque es cron? 2 me funciona 3 Qué es Crontab? 4 Utiizando erontad 5 Agregar tareas a crontab 6 compart: {Qué es cron? El nombre cron viene del riage chronos que significa "tiempo". En el sistema operative Unix, cron es un administrador regular de procesos en segundo plano (demenio) que ejacuta procesos © quiones a intervales regulares (por ejemplo, cada minuto, dla, semana o mes). Los pracesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. Como funciona El demonio cron inicia de /ete/re.d/ 0 /ete/nit. dependiendo de la distribucion, Cron se eecuta en el background, revisa cada minuto la tabla e tareas crontab /ete/crontab 0 en /var/spoo/cron en bisqueda de tareas que se deban cumplir Como usuario pedemos agregar comandos 0 scripts con tareas @ cron para automatizer algunos procesos. Esto es util por eJemplo pare automatizar la actualizacion de un sistema o un buen sistema de respaldos. hupitenseetrarntroyctontenl ce! {Qué es Crontab? Crontab es un simple archivo de texto que guarda une lista de comandos a ejecutar en un tlempo especificado por el usuario. Crontab vericars la fecha y hora en que se debe ejecutar el script © el comando, ls permisos de ejecucién y lo realizaré en el background. Caéa usuario puede tener su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab del usuario root, cuando los usuarios normales (e Incluso root) desean generar su propio archivo de crontab, entonces utilzaremos el comando crontab, Crontab es la manere mas sencilla de administrar tareas de cron en sistemas mukiusuario, ya sea como simple usuario de sistema o usuario root, izando crontab Vamos empezando con un ejemplo simple, ‘Vamos a automatizar la actualizacién de un sistema, para climinar la molesta ée "siempre tengo que andar actualizando y eso no me gusta!” Primero que nada haremos un script. Este script seré llamado por cron y contendré todas las instrucciones que queremos que haga, por lo tanto les necesario probarto en varios casos y de varias formas antes de incluilo @ cron, un sencllo script de actualizacion como este: ‘fotnsoash ‘script ejenplo ce actuslizacion #elija su distribucion stsebian-ubunty apt-get update & apt-get -y upgrade fedora ‘yun -y update starch “pacman ~-noconfirw -Syu Quitale el # ala linea de tu dstra. En caso de que sea Ubuntu/Debian, ala que empieza con apt-cet. Guardamos el script como actualizacion.sh (ef, dlrectorlo scripts tu home). Cambiamos los permisos de eJecucion del clchoso script con: hupitenseetrarntoyctontenl ce! a chaod atx ~/scripts/actualizacion.sh Ejecutamos el script un par de veces para verficar que todo ejecute sin problemas, modificames lo necesario (no debe contener errores, sino cron solo repetira un error una y otra vez), Ahora a agregar la tarea @ nuestro crontab, Agregar tareas a crontab Ejecutames la edicién del crontab con crantab -e, en algunas distros (como ubuntu) nos da la opcion de elegir el editor de textos que eseemos, los demas nos quedamos con vi. El archivo crontab luciré algo ash conde: +m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 @ 59 + la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la mecianoche. + dom hace referencia al dia del mes, por ejemplo se puede especiicar 15 si se quiere ejecutar cada dia 15 + dow significa el cla de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del dia en inglés: mon, tue, we, thu, fri, sat, sun, + user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario liferente siemore y cuando tenga permisos de ejecucién del serpt + command refere al comanda 0 a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scrints/actualizersh, si acaso llama a un script este debe ser ejecutable Pars que quedara claro unos cuantos ejemplos de tareas de cron exolicados: 15 19 + * + usuario /hone/usuario/scripts/actualizar.sh Ejecutaré ol script actualizarsh @ las 10:15 a.m. todos los dias 15 22 + = * usuario /hone/usuario/scripts/a. hupitenseetrarntroyctontenl ce! Ejecutard el script actualizarsh @ las 10:15 pum. todos los dias 00 10 + + @ root apt-get -y update Usuario root Ejecutard una actualizacién todos las domingos a las 10:00 a.m 45 10 + * sun root apt-get -y update Usuario root ejecutaré una actualzacién todos los domingos (sun) alas 10:45 a.m 30 7 20 11 * usuario /none/usuario/scripts/actualizan.sh El dia 20 de noviembre @ las 7:30 el usuario correra el script 307 11:11 sun usuario /none/usuario/scripts/pastel_con_velitas.sh El dia 11 de noviembre 2 las 7:30 a.m. y que sea domingo, el usuario festejaré su sysadmin (o sea a mi) ot + + + + usuario /hone/usuarso/scripts/molestorecoraatorso. sh Un molesto recordatoria cade minuto de cada hora todas los dias (NO recamendable). Igual se pueden manejar rangos especiales: ‘Alas 5:30 de la tarde todos los dias de lunes a viernes, Alas 2 dal efa todos los dias primero eDesea recibir notifcaciones de las nuevas hupitenseetrarntroyctontenl ce! Si esto resuta confuso, crontab mane} publicaclones? @reboot Ejecuta une vez, a inicio @yearly ejecuta sélo una ver al aio: ¢ NO, GRACIAS PERMITIR annually igual que @yeary Le @monthly ejecuta una ver al mes, el dia primero: 001 * @weekly Semanal el primer minuto de la primer hora de la semana, 0.0 * * 0°. @daily diario, elas 12:008.M.0 0" * * G@micnight igual que @eaily hourly al primer minuto de cada hora: 0 * = * * Su uso es muy senciio, hourly usuario /hone/usuario/scripts/molestorecordatorio.sh fonthly usuario /hone/usuario/scripts/respaldo.sh Béaily roct apt-get update 48 apt-get -y upgrade Por timo y ne menos importante: [Administracion de trabajos en cron crontab archivo Remplaza el existente archive crontab con un archive defnide por el usuario crontab -© Estar el archivo cronteb del usuario, cade tines nveva sere una nueva tara de crontab. Q sta todas las tareas de cronteb del u eDesea recibir notifcaciones de las nuevas hupitenseetrarntroyctontenl ce! ea crontab -4 publicaclones? Bora el crontab del usuario NO, GRACIAS PERMITIR crontab -¢ air Define el directoriod e crontad del usuario (este debe tener permisos de eserture y ejecucion del usuario) crontab -u usuario prefjo para manejar el crantab de otro usuaria, ejemplos: sudo crontab 1 -v root $ sudo crontab -e usuarto2 Esta herramienta, como muchas otras se pueden ver a mas profundidad y con mas detalle en: ‘+ Manual cron + Manuel crontab + Crontab en la wiki de ubunta ‘gracias Lucaint! compat: Ryo o eDesea recibir notifcaciones de las nuevas hupitenseetrarntroyctontenl ce! ron trot expen Ose in publicaclones? NO, GRACIAS PERMITIR hupitenseetrarntroyctontenl ce! eDesea recibir notifcaciones de las nuevas oO

You might also like