Configurar tareas programadas

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo configurar tareas programadas en Linux. Explorarás dos herramientas poderosas: el comando watch para ejecutar comandos repetidamente en intervalos cortos, y la utilidad crontab para programar tareas que se ejecuten en momentos específicos. Estas habilidades son esenciales para los administradores de sistemas y cualquier persona que necesite automatizar tareas recurrentes en un sistema Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/tail("File End Display") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/watch("Command Repeating") linux/SystemInformationandMonitoringGroup -.-> linux/crontab("Job Scheduling") linux/SystemInformationandMonitoringGroup -.-> linux/date("Date/Time Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/cat -.-> lab-47{{"Configurar tareas programadas"}} linux/tail -.-> lab-47{{"Configurar tareas programadas"}} linux/redirect -.-> lab-47{{"Configurar tareas programadas"}} linux/watch -.-> lab-47{{"Configurar tareas programadas"}} linux/crontab -.-> lab-47{{"Configurar tareas programadas"}} linux/date -.-> lab-47{{"Configurar tareas programadas"}} linux/service -.-> lab-47{{"Configurar tareas programadas"}} linux/apt -.-> lab-47{{"Configurar tareas programadas"}} linux/vim -.-> lab-47{{"Configurar tareas programadas"}} end

Utiliza el comando watch

El comando watch te permite ejecutar un comando repetidamente y ver su salida en tiempo real. Esto es útil para monitorear cambios o ejecutar un comando a intervalos cortos regulares.

  1. Abre tu terminal. Debes estar en el directorio /home/labex/project. Si no estás seguro, siempre puedes verificar tu directorio actual con el comando pwd.

  2. Usaremos watch para mostrar la fecha y hora actual cada 5 segundos. Ingresa el siguiente comando:

    watch -n 5 date

    Esto es lo que hace este comando:

    • watch es el comando que estamos usando para repetir otro comando.
    • -n 5 es una opción que le dice a watch que espere 5 segundos entre cada ejecución. Si omites esto, watch usará un intervalo predeterminado de 2 segundos.
    • date es el comando que watch ejecutará repetidamente. Muestra la fecha y hora actual.
  3. Después de ingresar el comando, deberías ver una pantalla completa que se actualiza cada 5 segundos. Se verá similar a esto:

watch command output example

La línea superior muestra el comando que se está ejecutando y con qué frecuencia se está actualizando. El resto de la pantalla muestra la salida del comando date.

  1. Para salir del comando watch, presiona Ctrl+C. Esta combinación de teclas se usa comúnmente en Linux para terminar un comando en ejecución.

    Si no detienes el comando watch, seguirá ejecutándose indefinidamente, lo que podría impedir que ingreses nuevos comandos en tu terminal.

Instalar Crontab

Antes de poder usar crontab para programar tareas, debemos asegurarnos de que esté instalado en nuestro sistema. La mayoría de las distribuciones de Linux vienen con crontab preinstalado, pero es una buena práctica comprobarlo e instalarlo si es necesario.

  1. Primero, comprobemos si crontab ya está instalado. Podemos hacer esto intentando ejecutar el comando crontab:

    crontab -l

    Si crontab está instalado, verás una lista de tus trabajos cron actuales o un mensaje que dice "no crontab for labex".

  2. Si ves un mensaje de error que dice que el comando no se encuentra, necesitamos instalar crontab. En sistemas basados en Ubuntu o Debian, podemos instalarlo usando los siguientes comandos:

    sudo apt update
    sudo apt install cron

    Se te pedirá que ingreses tu contraseña. Escríbela (ten en cuenta que no verás ningún carácter mientras escribes por razones de seguridad) y presiona Enter.

  3. Después de la instalación, inicia el servicio cron:

    sudo service cron start

    Este comando inicia el servicio cron inmediatamente.

  4. Ahora, verifica que cron esté instalado y en ejecución:

    sudo service cron status

    Deberías ver una salida que indique que el servicio cron está en ejecución.

Introducción a Crontab

Ahora que tenemos crontab instalado, exploremos cómo usarlo. Crontab se utiliza para programar tareas en momentos específicos, incluso cuando no estás conectado.

  1. Primero, veamos tus entradas actuales de crontab (si las hay). Utiliza el siguiente comando:

    crontab -l

    La opción -l significa "listar". Este comando muestra todas las tareas programadas en tu crontab.

    Si aún no has configurado ningún trabajo cron, verás un mensaje que dice "no crontab for labex". Esto es normal para un nuevo usuario.

  2. Ahora, abramos el crontab para editarlo. Utiliza este comando:

    crontab -e

    La opción -e significa "editar". Este comando abre tu archivo crontab en un editor de texto.

    Si es la primera vez que usas crontab, se te puede pedir que elijas un editor. Verás una lista de números correspondientes a diferentes editores. Para los principiantes, nano (generalmente la opción 1) es una buena elección porque es más sencillo de usar. Escribe el número de nano y presiona Enter.

Selecting an editor

Si no se te pide que elijas un editor, no te preocupes. Significa que ya se ha configurado un editor predeterminado para ti.

  1. Una vez que se abra el editor, verás un archivo vacío (o cualquier trabajo cron existente si tuvieras alguno). No agregues nada todavía; lo haremos en un paso posterior. Por ahora, simplemente familiarízate con el editor.

    Si estás usando nano, verás algunos comandos de ayuda en la parte inferior de la pantalla. El símbolo ^ representa la tecla Ctrl. Entonces ^X significa "Ctrl+X", que se utiliza para salir de nano.

  2. Sal del editor sin hacer ningún cambio. En nano, puedes hacer esto presionando Ctrl+X. Si se te pregunta si deseas guardar los cambios, presiona 'N' para No.

Comprendiendo la sintaxis de Crontab

Antes de agregar un trabajo cron, es fundamental entender la sintaxis. Crontab utiliza un formato específico para determinar cuándo debe ejecutarse una tarea.

  1. El formato básico de un trabajo cron es:

    * * * * * command_to_execute

    Cada asterisco representa una unidad de tiempo específica, de izquierda a derecha:

    1. Minuto (0-59)
    2. Hora (0-23)
    3. Día del mes (1-31)
    4. Mes (1-12)
    5. Día de la semana (0-7, donde tanto 0 como 7 representan el domingo)
  2. Aquí hay algunos ejemplos para ayudarte a entender:

    • 30 2 * * * significa "A las 2:30 AM, todos los días"
    • 0 9 * * 1-5 significa "A las 9:00 AM, de lunes a viernes"
    • */15 * * * * significa "Cada 15 minutos"
  3. Puedes usar los siguientes caracteres especiales:

    • *: cualquier valor
    • ,: separador de lista de valores
    • -: rango de valores
    • /: valores de paso
  4. Analicemos un ejemplo más complejo:
    15,45 9-17 * * 1-5 /path/to/script.sh
    Esto significa: "Ejecuta /path/to/script.sh a los 15 y 45 minutos de cada hora, de 9 AM a 5 PM, de lunes a viernes"

Comprender esta sintaxis es clave para crear trabajos cron efectivos. Tómate un tiempo para pensar cómo podrías programar diferentes tareas utilizando este formato.

Agregar un trabajo cron

Ahora que entendemos la sintaxis, agreguemos un simple trabajo cron que escriba la fecha actual en un archivo cada minuto.

  1. Abre tu crontab para editarlo:

    crontab -e
  2. Una vez que se abra el editor, agrega la siguiente línea a tu crontab:

    * * * * * date >> /home/labex/project/date_log.txt
Cron job editor screenshot

Analicemos esto:

  • Los cinco asteriscos * * * * * significan "cada minuto de cada hora de cada día de cada mes y cada día de la semana".
  • date es el comando que estamos ejecutando.
  • >> se utiliza para anexar la salida a un archivo (en lugar de sobrescribirlo).
  • /home/labex/project/date_log.txt es el archivo donde estamos almacenando la salida.
  1. Guarda y cierra el editor. Si estás usando nano:

    • Presiona Ctrl+X para salir.
    • Presiona Y para confirmar que deseas guardar los cambios.
    • Presiona Enter para confirmar el nombre del archivo.
  2. Después de salir, deberías ver un mensaje que dice "crontab: installing new crontab". Esto confirma que tus cambios se han guardado.

Monitorear tu trabajo cron

Ahora que hemos configurado un trabajo cron, veamos si está funcionando correctamente.

  1. Primero, debemos esperar al menos un minuto después de agregar el trabajo cron. Esto se debe a que los trabajos cron se ejecutan en el minuto, por lo que puede tardar hasta un minuto en ejecutarse por primera vez.

  2. Después de esperar, utiliza el comando cat para ver el contenido del archivo de registro:

    cat /home/labex/project/date_log.txt

    El comando cat muestra el contenido de un archivo directamente en la terminal.

  3. Deberías ver al menos una línea con una fecha y hora. Se verá algo así:

    Sat Aug  5 10:15:01 UTC 2023

    Si no ves nada, espera otro minuto y vuelve a intentarlo. A veces puede tomar un momento para que el trabajo cron comience a ejecutarse.

  4. Para ver el trabajo cron en acción, puedes utilizar el comando watch que aprendimos anteriormente para monitorear el archivo en tiempo real:

    watch -n 60 cat /home/labex/project/date_log.txt

    Esto se actualizará cada 60 segundos, mostrándote las nuevas entradas a medida que se agreguen.

  5. Deja que esto se ejecute durante unos minutos. Deberías ver una nueva línea agregada cada minuto.

  6. Cuando hayas terminado de observar, presiona Ctrl+C para salir del comando watch.

Resumen

¡Felicidades! Has completado con éxito el laboratorio "Set Up Scheduled Tasks" (Configurar tareas programadas). Has aprendido cómo:

  1. Utilizar el comando watch para ejecutar comandos repetidamente en intervalos cortos.
  2. Instalar y configurar crontab en tu sistema.
  3. Ver y editar tu crontab utilizando crontab -l y crontab -e.
  4. Comprender la sintaxis de crontab para programar tareas.
  5. Crear un simple trabajo cron que se ejecute cada minuto.
  6. Monitorear la salida de tu trabajo cron.

Estas habilidades son fundamentales para automatizar tareas y monitorear sistemas en entornos Linux. A medida que continúes tu viaje en Linux, encontrarás muchos más usos para las tareas programadas en la administración y automatización del sistema.

Recuerda, aunque usamos un ejemplo simple de registrar la fecha, puedes utilizar trabajos cron para tareas más complejas como hacer copias de seguridad de datos, actualizar software o ejecutar scripts de mantenimiento del sistema. Siempre ten cuidado al configurar trabajos cron, especialmente si involucran operaciones críticas del sistema.