Advertisement
  1. Code
  2. Python

Administrando Trabajos Cron Usando Python

Scroll to top
Read Time: 7 min

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

En este tutorial, aprenderás la importancia de los trabajos cron y por qué los necesitas. Echarás un vistazo a python-crontab, un módulo Python para interactuar con el crontab. Aprenderás cómo manipular trabajos cron desde un programa Python usando el módulo python-crontab.

¿Qué es Cron?

Durante la administración del sistema, es necesario ejecutar trabajos en segundo plano en un servidor para ejecutar tareas rutinarias. Cron es un proceso de sistema que es usado para ejecutar tareas en segundo plano en una base de rutina. Cron requiere un archivo llamado crontab que contiene la lista de tareas a ser ejecutadas en un tiempo en particular. Todos estos trabajos son ejecutados en segundo plano en un tiempo especificado.

Para ver trabajos cron ejecutándose en tu sistema, navega a tu terminal y teclea:

El comando de arriba muestra la lista de trabajos en el archivo crontab. Para agregar un nuevo trabajo cron al crontab, teclea:

El comando de arriba mostrará el archivo crontab en donde puedes programar un trabajo. Digamos que tienes un archivo llamado hello.py que luce así:

Ahora, para programar un trabajo cron para ejecutar el script de arriba para dar salida a otro archivo, necesitas agregar la siguiente línea de código:

La línea de código de arriba programa la ejecución del archivo con salida a un archivo llamado a.txt. Los números antes del comando a ejecutar definen el tiempo de ejecución del trabajo. La sintaxis de tiempo tiene cinco partes:

  1. minuto
  2. hora
  3. día del mes
  4. mes
  5. día de la semana

Los asteriscos (*) en la sintaxis del tiempo indican que se ejecutará cada vez.

Presentando Python-Crontab

python-crontab es un módulo Python que proporciona acceso a los trabajos cron y nos habilita para manipular el archivo crontab desde el programa Python. Este automatiza el proceso de modificar el archivo crontab manualmente. Para comenzar con python-crontab, necesitas instalar el módulo usando pip:

Una vez que tienes python-crontab instalado, importalo en el programa python.

Escribiendo Tu Primer Trabajo Cron

Usemos el módulo python-crontab para escribir nuestro primer trabajo cron. Crea un programa Python llamado writeDate.py. Dentro de writeDate.py, agrega el código para imprimir la fecha actual y el tiempo a un archivo. Aquí está cómo luciría writeDate.py:

Guarda los cambios de arriba.

Creemos otro programa Python que programará el programa Python writeDate.py para ejecutarse cada minuto. Crea un archivo llamado scheduleCron.py.

Importa el módulo CronTab en el programa scheduleCron.py.

Usando el módulo CronTab, accedamos al sistema crontab.

El comando de arriba crea un acceso al sistema crontab del usuario. Iteremos a través de los trabajos cron y deberías poder ver cualquier trabajo cron creado manualmente para el nombre de usuario en particular.

Guarda los cambios y prueba ejecutar el scheduleCron.py y deberías tener la lista de trabajos cron, si hay alguno, para el usuario en particular. Deberías poder ver algo similar en ejecución del programa de arriba:

Continuemos con crear un nuevo trabajo cron usando el módulo CronTab. Puedes crear un nuevo cron usando el nuevo método y especificando el comando a ser ejecutado.

Como puedes ver en la línea de código de arriba, he especificado el comando para ser ejecutado cuando el trabajo cron sea ejecutado. Una  vez que tienes el nuevo trabajo cron, necesitas programar el trabajo cron.

Programemos el trabajo cron para ejecutarse cada minuto. Así qué, en un intervalo de un minuto, la fecha y tiempo actuales serán agregados al archivo dateInfo.txt. Para programar el trabajo cada minuto, agrega la siguiente línea de código.

Una vez que has programado el trabajo, necesitas escribir el trabajo para el cron tab.

Aquí está el archivo scheduleCron.py:

Guarda los cambios de arriba y ejecuta el programa Python.

Una vez que se ejecuta, revisa el archivo crontab usando el siguiente comando:

El comando de arriba debería mostrar el trabajo cron recién agregado.

Espera un minuto y revisa tu directorio home y deberías poder ver el archivo dateInfo.txt con la fecha y tiempo actuales. Este archivo se actualizará cada minuto, y la fecha y tiempo actuales serán agregados al contenido existente.

Actualizando un Trabajo Cron Existente

Para actualizar un trabajo cron existente, necesitas encontrar el trabajo cron usando el comando o usando un Id. Puedes tener un Id establecido a un trabajo cron en la forma de un comentario cuando creas un trabajo cron usando python-crontab. Aquí está cómo creas un trabajo cron con un comentario:

Como se vió en la línea de código de arriba, un nuevo trabajo cron ha sido creado usando el comentario como dateinfo. El comentario de arriba puede ser usado para encontrar el trabajo cron.

Lo que necesitas hacer es iterar a través de todos los trabajos en crontab y buscar el trabajo con el comentario dateinfo. Aquí está el código:

Revisa cada comentario del trabajo usando el atributo job.comment.

Una vez que tienes el trabajo, reprograma el trabajo cron y escribe al cron. Aquí está el código completo:

Guarda los cambios de arriba y ejecuta el archivo scheduleCron.py. Lista los elementos en el archivo crontab usando el siguiente comando:

Deberías poder ver el trabajo cron con tiempo de programación actualizado.

Limpiando Trabajos Desde Crontab

python-crontab proporciona métodos para limpiar o remover trabajos desde crontab. Puedes remover un trabajo cron desde crontab basado en el horario, comentario o comando.

Digamos que quieres limpiar el trabajo con comentario dateinfo desde el crontab. El código sería:

De manera similar, para remover un trabajo basado en un comentario, puedes llamar directamente el método remove en el my_cron sin ninguna iteración. Aquí está el código:

Para remover todos los trabajos desde el crontab, puedes llamar al método remove_all.

Una vez que termines con los cambios, escribe de vuelta al cron usando el siguiente comando:

Calculando Frecuencia de Trabajo

Para revisar cuántas veces tu trabajo se ejecuta usando python-crontab, puedes usar el método frequency. Una vez que tienes el trabajo, puedes llamar al método llamado frequency, que devolverá el número de veces que el trabajo se ejecuta en un año.

Para revisar el número de veces que el trabajo se ejecuta en una hora, puedes usar el método frequency_per_hour.

Para revisar la frecuencia del trabajo en un día, puedes usar el método frecuency_per_day.

Revisando el Horario de Trabajo

python-crontab proporciona la funcionalidad de revisar la programación de un trabajo en particular. Para que esto funcione, necesitarás el módulo croniter para ser instalado en tu sistema. Instala croniter usando pip:

Una vez que tienes croniter instalado, llama al método de programación en el trabajo para obtener la programación del trabajo.

Ahora puedes obtener la siguiente programación de trabajo usando el método get_next.

Aquí está el código completo:

Incluso puedes obtener la programación anterior usando el método get_prev.

Concluyendo

En este tutorial, viste como comenzar a usar python-crontab para acceder al crontab del sistema desde un programa Python. Usando python-crontab, puedes automatizar el proceso manual de crear, actualizar y programar trabajos cron.

¿Has usado python-crontab o algunas otras librerías para acceder al crontab del sistema? Me encantaría escuchar tus ideas. Déjanos saber tus sugerencias en los comentarios de abajo.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.