Ejecutar Python Script a través de Crontab

Fariba Laiq 21 junio 2023
  1. Crontab en Linux/Unix/Solaris
  2. Ejecutar secuencias de comandos de Python a través de Crontab
Ejecutar Python Script a través de Crontab

La mayoría de las veces, nos encontramos en situaciones en las que los procesos deben automatizarse para lograr eficiencia y cordura. Puede ser cualquier cosa, desde enviar un correo electrónico regular a los empleados hasta tener una licencia para alguna aplicación renovada cada tres meses.

Crontab se deriva de la tabla Cron. Cron es una utilidad de automatización ofrecida por los sistemas operativos Unix, Solaris y Linux que ayuda con la automatización.

En este artículo, exploraremos Crontab y cómo podemos usarlo para ejecutar un script de Python.

Crontab en Linux/Unix/Solaris

Cron es un demonio que se ejecuta cuando un sistema arranca desde los scripts /etc/init.d. Si es necesario, también podemos iniciar/reiniciar o detener el daemon usando el script init o mediante crond, que es esencialmente un servicio de comando que se encuentra en Linux y sus otras versiones.

Una tabla Crontab o Cron es un archivo que contiene una miríada de comandos en forma de lista. Estos comandos o entradas cron están configurados para ejecutarse en momentos específicos.

Los comandos de este archivo, comúnmente conocidos como cronjobsCrontabs, se utilizan normalmente para gestionar, mantener o administrar un sistema. También se pueden utilizar para otras tareas que se requieren regularmente, por ejemplo, copias de seguridad.

Cada usuario puede tener un Crontab propio.

Cada archivo Crontab tiene cinco campos que especifican los minutos, horas, día del mes (fecha), mes, día y por último, todo esto va seguido del comando que se supone que se ejecutará en el tiempo previamente especificado.

Algunos consejos para mantener eficientemente un Crontab son:

  1. Inserte un espacio para separar cada campo.
  2. Inserte una coma para separar varios valores.
  3. Inserte un guión (-) para designar un rango de valores.
  4. Inserte un asterisco (*) para incluir todos los valores posibles para el campo.
  5. Use un hash (#) al comienzo de una línea para agregar comentarios o insertar líneas en blanco en el archivo.

Cron Job o Cron Schedule en Linux/Unix/Solaris

Un Cron Job o Cron Schedule es un conjunto particular de instrucciones o comandos que especifican la hora y el día para ejecutar los comandos. Puede haber múltiples comandos de ejecución dentro de una tabla cron.

Ejecutar secuencias de comandos de Python a través de Crontab

Se puede ejecutar un script de Python con la ayuda de un Crontab siguiendo estos sencillos pasos:

  • Busque o defina el script de Python que desea ejecutar.
  • Ejecuta el comando crontab -e en la terminal con la que quieras trabajar.
  • Ahora, debe presionar i para ingresar al modo de edición.
  • Ingrese el comando programado en el que puede especificar la ruta del script de Python que desea ejecutar.
  • Puede presionar el botón de escape para salir del modo de edición.
  • Utilice el comando :wq para crear y escribir un Crontab.

Ejemplos de Crontab

Aquí hay algunos ejemplos de cómo se vería un Crontab para varios escenarios:

  1. Eliminar algunos archivos temporales diariamente en un momento determinado desde una ubicación o ruta específica en la computadora:

    30 18 * * * rm /home/someuser/tmp/*
    
  2. Algunos comandos que se ejecutarán cada 7 días:

    0 0 */7 * * shell_command_here
    
  3. Ejecutar un script en el sistema cada minuto:

    * * * * * cd/Users/name/Automation && /usr/bin/python testing_crontabs.py
    

Ahora vamos a crear un script propio y ejecutarlo a través de Crontab. El siguiente es el script de Python que usaremos para este artículo:

Código de ejemplo:

#! /usr/bin/python3

import sys
from datetime import datetime


def main(args):
    result = 1
    for arg in args[1:]:
        result *= int(arg)

    print(f"Result: {result} on: {datetime.now()}.")


if __name__ == "__main__":
    main(sys.argv)

Producción:

secuencia de comandos crontab python

Ahora, ejecutamos el comando sudo chmod +x main.py en la terminal de nuestra elección para que el archivo sea ejecutable.

Ahora, ejecute crontab -e en la terminal, y cuando se le solicite seleccionar un editor de las opciones proporcionadas, elegimos nano para este artículo y agregamos el siguiente comando cron:

*/2 * * * * /home/$(USER)/myscript.py 1 2 3 4 5 >> /home/$(USER)/outputfile.txt

Necesitamos reemplazar USUARIO con el nombre de usuario de nuestra máquina específica. Guarde y salga del editor, y nuestro Crontab ahora está listo y funcionando.

¿Como sabemos? Según nuestro Crontab, el script debería ejecutarse cada dos minutos.

Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Artículo relacionado - Python Cron