abril 18, 2024

BitCuco

¡Hola Mundo!

Crontab – Automatización de tareas en Linux

crontab

Crontab es una aplicación muy querida para todos los administradores de sistemas Linux. Es indispensable para todo desarrollador y arquitecto la automatización de tareas en Linux. Cuando hablamos de la necesidad de ejecutar una tarea o un script cada determinado intervalo de tiempo, y evitar que dependa de una acción del usuario.

La utilidad fundamental de Crontab es la automatización de tareas en Linux para ejecutarlas cada cierto día, hora y minuto. Aquí aprenderás cuáles son las ventajas de ejecutar una tarea programada a través de un crontab.

Crontab es una utilidad de software para calendarizar o programar tareas, que en su uso es similar al programador de tareas de Windows. Además tiene la ventaja adicional de permitir calendarizar las tareas a tiempos o intervalos definidos de una forma muy sencilla.

Acceso al archivo crontab

Para agregar una tarea automatizada, es necesario definirla en un archivo que crontab va a leer, el cuál de acuerdo a la distribución de Linux que tengamos se localiza en alguna de las siguientes rutas:

/var/spool/cron –> Para distribuciones basadas en Red Hat (Fedora, CentOS, etc.)

/var/spool/cron/crontabs –> Para distribuciones basadas en Debian y Ubuntu.

No obstante, de acuerdo al usuario existente, podemos automatizar tareas con crontab. Por lo tanto se recomienda que sea el usuario root el usado para éstas, para evitar problemas con permisos en la medida de lo posible, accediendo ya sea por medio de su o con sudo.

La forma más sencilla para ver las tareas automatizadas existentes de crontab, es por medio de la opción –l, en donde muestra las tareas en espera de la señal de tiempo para su ejecución:

crontab -l

Lo cuál es similar a ejecutar: cat /var/spool/cron (Red Hat) o cat /var/spool/cron/crontabs (Debian).

Para agregar, editar o eliminar una tarea programada en crontab, es fácil acceder al archivo de configuración con la opción -e:

crontab -e

Lo cuál es similar a ejecutar: vi /var/spool/cron (Red Hat) o vi /var/spool/cron/crontabs (Debian).

crontab

Configuración de tareas programadas

Al abrir al archivo de configuración, la automatización de tareas en Linux se muestra en crontab de acuerdo a una estructura predeterminada, la cual es la siguiente:

# Ejemplo de definición de tareas
# .---------------- minuto (0 - 59)
# |  .------------- hora (0 - 23)
# |  |  .---------- día del mes (1 - 31)
# |  |  |  .------- mes (1 - 12) O jan,feb,mar,apr ... (en inglés)
# |  |  |  |  .---- día de la semana (0 - 6) (domingo=0 o 7) O sun,mon,tue,wed,thu,fri,sat (en inglés)
# |  |  |  |  |
  *  *  *  *  * nombre_usuario  comando_a_ejecutarse

Veamos algunos ejemplos:

1- Si queremos ejecutar una tarea ejemplo.sh todos los días a las 02:30 horas (am), la escribimos dentro del archivo de configuración de crontab con su ruta absoluta (como usuario root):

30 2 * * * /home/carlos/ejemplo.sh

2- Para ejecutar la tarea ejemplo.sh cada 10 minutos, escribimos en crontab:

*/10 * * * * /home/carlos/ejemplo.sh

3- Ejecutar la tarea ejemplo.sh cada sábado a las 00:00 horas

0 0 * * 6 /home/carlos/ejemplo.sh

4- Ejecutar la tarea ejemplo.sh el primero de Febrero a las 10:00 horas

0 10 1 2 * /home/carlos/ejemplo.sh

5- Ejecutar la tarea ejemplo.sh cada minuto

* * * * * /home/carlos/ejemplo.sh

Si desea calcular un horario o lapso a la medida para ejecutar una tarea, quizá podría buscar una herramienta para calcular el lapso, por ejemplo Crontab. guru.