GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué es Crontab y cómo automatizar tareas en Linux con Crontab?

​Cron es una utilidad que administra procesos en segundo plano o demonios de vez en cuando (por ejemplo, cada minuto, día, semana o mes). Cron funciona como un programador, por ejemplo, puede descargar archivos de Internet o descargar correos electrónicos a intervalos regulares, también puede usarlo para tareas más complejas como instalar actualizaciones. Originalmente, cron fue creado para UNIX por Ken Thompson, pero ahora puede usarlo en todos los sistemas similares a UNIX, ¡incluso en Linux! UNIX tiene otra utilidad para programar tareas llamada “at”, pero cron es mucho mejor. ​Hay dos formas de usar cron, la primera es a través de los directorios cron ubicados en /etc si abre una terminal y escribe el siguiente comando:$ ls /etc/cron* Obtendrá el siguiente resultado:

​Ahora, puedes ver los siguientes directorios en la imagen:cron. diario, cron. hourly, cron.monthly, cron.weekly y cron.yearly. Estos directorios almacenan los scripts que debe ejecutar cron, según el nombre de cada directorio es la frecuencia de ejecución. Por ejemplo, los scripts almacenados en cron.hourly se ejecutarán cada hora.

Ahora, voy a escribir un script simple para hacer una copia de seguridad de un directorio y lo pondré en el cron. directorio por horas para ejecutar el script cada hora. Una cosa importante que debe considerar es proporcionar los permisos de ejecución al script, porque si no lo hace, cron no ejecutará el archivo.

El ejemplo del proceso para agregar un script a tareas cron utilizando los directorios cron globales:

Tengo un directorio y quiero hacer una copia de seguridad automática cada hora:

Escribí un script para hacer la copia de seguridad, usé nano pero puedes usar tu editor favorito:

Pruebo el script:

Copio el script en /etc/cron.hourly:

Doy los permisos de ejecución al script:

​Todos los scripts deben comenzar con la línea #!/bin/sh porque indica el shell a usar. Usar cron a través de los directorios /etc/cron.* no es muy útil, así que explicaré la segunda forma de usar crontab.

Si recuerda el resultado cuando enumeré el contenido de /etc/cron*, verá el siguiente archivo:/etc/crontab

Puede programar tareas en el archivo crontab, pero primero debe aprender lo siguiente:

​Si analiza el contenido del archivo crontab, puede identificar 7 campos en las líneas después de "# run-parts", me refiero a lo siguiente (la primera línea después de "# run parts"):

Los primeros cinco campos indican valores de tiempo, el sexto campo indica el usuario y el séptimo indica el comando a ejecutar, este último puede ser un script o un comando (uname, ls, apt-get, etc). Los campos de tiempo son los siguientes:

​Campo1 Campo2 ​Campo3 Campo4 Campo5 Campo6 Campo7
01 * * * * ​raíz ​bien...

​El valor aceptado para cada campo es:

​minuto ​hora ​día del mes ​mes ​día de la semana
01 * * * *

Si el valor de uno de estos campos es “*”, significa todos los valores posibles para el campo correspondiente, por ejemplo, * * * * * root /root/script.shEsta tarea será ejecutada por root cada minuto, todos los días y todos los meses

Crontab usa cadenas demasiado especiales para definir rangos de frecuencia:

​minuto ​00 – 59
​hora ​00 – 23
​día del mes ​1 – 31
​mes ​1 – 12
​día de la semana ​1 – 7 (lunes:1, domingo:7)

Solo cambia los campos de tiempo para una de las cadenas especiales y luego completa el resto, por ejemplo, @annually root dist-upgrade. Esta tarea debe ejecutarse cada año de forma automática.

Ahora puede agregar tareas a crontab, también puede crear un directorio .scripts en su /home y almacenar sus scripts en él, finalmente, puede agregar una entrada para cada script en el archivo crontab.

Crontab puede administrar un archivo de tareas para cada usuario, puede probar si su usuario tiene tareas crontab usando el siguiente comando:

Puedes programar tareas en un archivo, simplemente créalo:

Cuando haya creado su archivo crontab, debe cargarlo en cron escribiendo el comando:

$ crontab your_crontab ​

Cron es muy poderoso porque después de cargar un nuevo crontab, no tiene que hacer nada, eso es todo, cron carga nuevas tareas y archivos crontab automáticamente. El resultado de mi crontab es un script que crea un archivo con fechas generadas cada minuto:

Guión

El archivo generado ​Otras opciones para crontab son las siguientes:

​Cron es el programador de tareas más poderoso que conozco y es excelente porque no es solo para Linux, es para todos los sistemas similares a UNIX. Si administra un servidor, probablemente le encantará cron, incluso si es un usuario común, le gustará cron, con cron puede programar todo. Si desea obtener más información sobre cron, debe consultar las páginas man:

$ man cron
$ man crontab 

Linux
  1. ¿Qué es un comando Chown en Linux y cómo usarlo?

  2. Flatpak en Linux:qué es y cómo instalar aplicaciones con él

  3. Programación de tareas del sistema con Cron en Linux

  4. Automatice las tareas de los sistemas con crontab en CentOS 7

  5. Cómo programar trabajos de Cron con Crontab

Cómo administrar de manera fácil y segura los trabajos de Cron en Linux

Qué es Git y cómo instalar Git en Linux

Cómo automatizar tareas con trabajos cron en Linux

Cron Jobs y Crontab en Linux explicados

Entendiendo Crontab en Linux con ejemplos

Cómo programar trabajos con Cron en Linux

    @reboot ​Una vez después del arranque
    ​@anualmente ​Una vez al año
    ​@anualmente ​Igual que @anual
    ​@mensual ​Una vez al mes
    ​@semanal ​Una vez a la semana
    ​@diario ​Diario
    ​@medianoche ​Igual que @daily
    ​@por hora ​Por hora