GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar y enumerar trabajos cron para un sistema Linux a través de PHP

Trabajar con trabajos cron manualmente es más común con bajos volúmenes de trabajos cron. Pero, ¿qué sucede si está trabajando con grandes volúmenes de trabajos cron? ¡PHP es la respuesta! ¿Por qué PHP? Simplemente porque puede automatizar las tareas necesarias para agregar, eliminar y enumerar trabajos cron.

¿No eres un lector? ¡Mira este video tutorial relacionado! ¿No ve el video? Asegúrate de que tu bloqueador de anuncios esté deshabilitado.

En este tutorial, aprenderá cómo PHP puede ahorrar tiempo al automatizar la adición, eliminación y enumeración de trabajos cron para un sistema Linux.

¿Listo? ¡Salta directamente!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Crontab:normalmente, Crontab se instala en los sistemas operativos Linux de forma predeterminada.
  • La mayoría de las distribuciones de Linux utilizan el mismo sistema cron. Los ejemplos se muestran aquí en un macOS que utiliza un sistema subyacente basado en BSD.

Creación del archivo Crontab

Antes de que pueda administrar trabajos cron, primero necesita un archivo para almacenar esos trabajos cron. Todos los trabajos cron se almacenan en un archivo crontab para todo el sistema.

Abra su terminal y ejecute el siguiente comando para cambiar el directorio a /usr/local y crear subdirectorios (jobs y scripts ). Puede nombrar estos directorios de manera diferente como prefiera. Estos directorios almacenarán sus archivos de trabajo cron y scripts más adelante.

cd /usr/local && sudo mkdir jobs scripts

Ahora ejecute el siguiente comando para crear el archivo crontab (crontab -e ). El archivo crontab se crea automáticamente dentro de su ~/tmp directorio la primera vez que invoque un crontab comando.

# Sets default text editor to nano
export EDITOR='nano'
# Initializes the crontab file and opens it in nano
crontab -e

Agregar trabajos de Cron único

Ahora que ha creado el archivo crontab, puede comenzar a administrar sus trabajos cron. Pero primero debe concentrarse en agregarlos a través de PHP. ¿Cómo? Creará y ejecutará un script PHP para agregar trabajos cron.

Los trabajos cron se programan con cinco parámetros, como se muestra a continuación. Cada parámetro tiene un valor predeterminado de *, lo que indica que no se especificó ningún valor para ese parámetro, ya sea para trabajos cron por hora, diarios, semanales o mensuales.

     

Si necesita un repaso de la sintaxis del trabajo cron con ejemplos, eche un vistazo al sitio web de crontab.

1. Cree un archivo en su editor de texto, copie/pegue el código a continuación y guárdelo en /usr/local/jobs directorio. Para este ejemplo, el archivo se llama newjob.py , pero puede nombrarlo de otra manera. El siguiente código imprime un texto (Executed! ) cuando se ejecuta.

print("Executed!")

2. A continuación, cree un archivo de script PHP, luego copie/pegue el código a continuación en ese archivo PHP y guárdelo en /usr/local/scripts . Para este tutorial, el script se llama add.php .

A lo largo del tutorial, recuerde guardar los archivos de script en el directorio /usr/local/scripts y los archivos de trabajo cron en el directorio /usr/local/jobs.

El siguiente código agrega el newjob.py archivo como trabajo cron en el archivo crontab.

El shell_exec La operación almacena la lista de trabajos cron en una cadena en la memoria antes de agregar uno nuevo, por lo que no perderá ninguno de los trabajos cron existentes.

Tiene shell_exec ¿no trabajo? Es posible que tenga esta función deshabilitada en su archivo php.ini. Busca el disable_functions configuración en su php.ini y elimine shell_exec de la lista. Tenga en cuenta que se puede abusar de esto, ¡así que tenga cuidado con esta función!

3. Ejecute el siguiente comando para ejecutar el add.php secuencia de comandos de /usr/local/scripts directorio. php add.php

php add.php

Asegúrese de estar en el directorio /usr/local/scripts al ejecutar scripts a lo largo del tutorial.

4. Finalmente, ejecute el siguiente crontab -l Comando para verificar si existe el nuevo trabajo cron.

crontab -l

Listado de trabajos cron

Tal vez desee realizar un seguimiento de los trabajos cron que ha agregado, para que pueda actualizarlos o eliminarlos. Si es así, su primer paso es enumerar los trabajos cron existentes. La lista de trabajos cron es útil para realizar un seguimiento de los trabajos cron que tiene.

Cree una nueva secuencia de comandos PHP, asígnele un nombre único y pegue el código a continuación en el archivo de secuencia de comandos. Para este ejemplo, el script se llama list.php .

El siguiente código es shell_exec la operación recopila y muestra (echo() ) todos los trabajos cron (crontab -l ) del archivo crontab.

Ahora, ejecute el siguiente comando para ejecutar list.php guión.

php list.php

Listado de una matriz de trabajos cron

Quizás desee imprimir la lista de trabajos cron en una matriz en lugar de una lista simple. Si es así, necesitará el ) and [var_dump()](explode() funciones Estas funciones le permiten almacenar trabajos cron dentro del archivo crontab como un elemento dentro de una matriz.

Reemplace el contenido de list.php archivo con el siguiente código. Ejecutar el código a continuación enumera una serie de trabajos cron y también imprime la longitud de la cadena del trabajo cron.

Ahora ejecute el siguiente comando para ejecutar el list.php guión.

php list.php

Como puede ver a continuación, el código genera la lista de trabajos cron en una matriz, al mismo tiempo que muestra la longitud de la cadena.

Eliminar trabajos cron

Ahora que tiene la lista de trabajos cron existentes, puede decidir qué desea hacer con cada trabajo cron. Quizás tenga trabajos cron que desee eliminar. Si es así, especificará el trabajo cron para eliminar en una variable de cadena.

1. Cree un nuevo script PHP llamado remove.php para este ejemplo, agregue el siguiente código al script. Puede nombrar el archivo de secuencia de comandos de forma diferente como prefiera.

El siguiente código elimina un trabajo cron específico del archivo crontab.

2. Ejecute el siguiente comando para ejecutar el remove.php guion.

php remove.php

3. Finalmente, ejecuta el crontab -l comando para ver si ha eliminado el newjob.php trabajo cron. crontab -l

crontab -l

Agregar y eliminar varios trabajos cron

Desde agregar un solo trabajo cron, también puede agregar varios trabajos cron, tal vez cuando tenga tareas diarias que desee automatizar. ¿Cómo? Agregando un bucle for en su secuencia de comandos.

Agregar y eliminar varios trabajos cron comparten un enfoque similar, pero la secuencia de comandos para eliminar varios trabajos cron tiene más uso de variables, como se demuestra a continuación.

1. Reemplace el contenido de su add.php archivo con el siguiente código. Ejecutar el código a continuación agrega múltiples trabajos cron al archivo crontab remando a través de una matriz.

2. A continuación, vuelva a ejecutar el siguiente comando para ejecutar el add.php guion. php add.php

php add.php

3. Ejecute el siguiente crontab -l comando para verificar si existen los trabajos cron que agregó en el archivo crontab. crontab -l

crontab -l

4. Ahora, reemplaza el contenido de tu remove.php archivo con el código a continuación, que elimina varios trabajos cron que definió. Similar a agregar varios trabajos cron, se aplica el mismo enfoque al eliminar varios trabajos cron, pero con variables adicionales.

5. Ejecute el siguiente comando para ejecutar el remove.php guion.

php remove.php

6. Finalmente, ejecuta el crontab -l comando para verificar que ha eliminado los trabajos cron.

 crontab -l

Si eliminó con éxito los trabajos cron, no obtendrá un resultado como el que se muestra a continuación.

Creación de funciones para administrar trabajos cron

Hasta ahora, ha visto cómo puede agregar, eliminar y enumerar trabajos cron en scripts separados. Pero para administrar de manera efectiva los trabajos cron, puede crear funciones en un solo script en lugar de ejecutar tres scripts separados.

Cree un nuevo archivo de secuencia de comandos y pegue el código a continuación. Asigne a la secuencia de comandos el nombre que prefiera, pero para este ejemplo, la secuencia de comandos se llama multi.php .

El siguiente código agrega, elimina y enumera trabajos cron con tres funciones separadas que puede llamar en la parte inferior de la secuencia de comandos.


Ahora, ejecuta el siguiente comando para ejecutar el multi.php guión.

php multi.php

A continuación, puede ver la salida de list_jobs() función llamada en el multi.php guión.

Evitar la sobrecarga de memoria

Ha visto las capacidades de PHP en la gestión de trabajos cron, pero tener demasiados trabajos cron consume memoria. ¿Cómo evitar la sobrecarga de memoria? Establezca un límite de conteo para la cantidad de trabajos cron que puede agregar al archivo crontab.

1. Agregue la siguiente función a multi.php guion. La siguiente función cuenta todos los trabajos cron contando todas las líneas dentro del archivo crontab e imprime un mensaje para informarle sobre el recuento actual de trabajos cron.

function count_jobs(){
    $jobs = shell_exec("crontab -l");
    # Counts all cron jobs from the crontab file and prints the result
    echo("You currently have ".substr_count( $jobs, "\n")." cron jobs");
}

2. A continuación, llama al count_jobs() función al final de la secuencia de comandos, como lo hizo en la sección "Creación de funciones para administrar trabajos cron".

3. Ejecute el siguiente comando para ejecutar el multi.php guion.

php multi.php

Como puede ver a continuación, hay un mensaje que le indica el recuento actual de trabajos cron.

Pero tal vez desee finalizar automáticamente el script si hay demasiados trabajos cron ejecutándose simultáneamente. Si es así, agregue un if la condición hará el truco.

4. Reemplace el count_jobs() función en el multi.php archivo con el de abajo.

La siguiente función lee el número de líneas dentro del archivo crontab y, en función de ese número, decide si finaliza el script o no.

function count_jobs(){
    $jobs = shell_exec("crontab -l");
    # Counts all cron jobs from the crontab file and prints the result
    echo("You currently have ".substr_count( $jobs, "\n")." cron jobs\n");
    # Checks whether the cron jobs count is over 50 or not
    if(substr_count( $jobs, "\n") > 50){
        # Prints a message and terminates the script 
        exit("Too many cron jobs, cannot add any more!");
    }
}

5. Finalmente, ejecuta el multi.php guión como lo hizo en el paso tres. php multi.php

php multi.php

En el resultado a continuación, puede ver el mensaje que le indica el recuento actual de trabajos cron (63 ). Dado que el recuento de trabajos cron es más de 50, el script finaliza automáticamente y no continúa agregando trabajos cron.

Conclusión

A lo largo de este tutorial, te habrás dado cuenta de que PHP proporciona una forma de automatizar trabajos cron con el shell_exec() función. Ha aprendido a agregar, eliminar y listar trabajos cron en un solo script PHP mientras se asegura de no sobrecargar su memoria.

Ahora, ¿considerará PHP la próxima vez que necesite administrar trabajos cron para sus proyectos?


Linux
  1. Cómo enumerar, mostrar y ver todos los trabajos actuales de Cron en Linux

  2. Cómo administrar y enumerar servicios en Linux

  3. Cómo verificar la versión del sistema operativo y Linux

  4. Uso de at para trabajos cron de un solo uso en Linux

  5. Cómo montar y desmontar un sistema de archivos en Linux

Cómo enumerar servicios en Linux

Cron Jobs y Crontab en Linux explicados

Cómo enumerar usuarios y grupos en Linux

Cómo instalar y configurar Redis en el sistema Linux

Configure Cron Jobs para Linux y las 10 mejores herramientas en línea para Cron Jobs

Cómo ejecutar paquetes .run y .bin en el sistema Linux