GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter et répertorier les tâches Cron pour un système Linux via PHP

Travailler avec des tâches cron manuellement est plus courant avec de faibles volumes de tâches cron. Mais que se passe-t-il si vous travaillez avec de gros volumes de tâches cron ? PHP est la réponse ! Pourquoi PHP ? Tout simplement parce qu'il peut automatiser les tâches nécessaires pour ajouter, supprimer et répertorier les tâches cron.

Pas un lecteur? Regardez ce didacticiel vidéo associé ! Vous ne voyez pas la vidéo ? Assurez-vous que votre bloqueur de publicités est désactivé.

Dans ce tutoriel, vous apprendrez comment PHP peut gagner du temps en automatisant l'ajout, la suppression et la liste des tâches cron pour un système Linux.

Prêt? Lancez-vous !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • Crontab :Crontab est généralement installé par défaut sur les systèmes d'exploitation Linux.
  • La plupart des distributions Linux utilisent le même système cron. Les exemples sont présentés ici sur un macOS utilisant un système sous-jacent basé sur BSD.

Création du fichier Crontab

Avant de pouvoir gérer les tâches cron, vous avez d'abord besoin d'un fichier pour stocker ces tâches cron. Toutes les tâches cron sont stockées dans un fichier crontab à l'échelle du système.

Ouvrez votre terminal et exécutez la commande ci-dessous pour changer de répertoire en /usr/local et créer des sous-répertoires (jobs et scripts ). Vous pouvez nommer ces répertoires différemment selon vos préférences. Ces répertoires stockeront vos fichiers et scripts de travail cron plus tard.

cd /usr/local && sudo mkdir jobs scripts

Exécutez maintenant la commande ci-dessous pour créer le fichier crontab (crontab -e ). Le fichier crontab est créé automatiquement dans votre ~/tmp répertoire la première fois que vous invoquez un crontab commande.

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

Ajout de tâches Cron uniques

Maintenant que vous avez créé le fichier crontab, vous pouvez commencer à gérer vos tâches cron. Mais vous devez d'abord vous concentrer sur leur ajout via PHP. Comment? Vous allez créer et exécuter un script PHP pour ajouter des tâches cron.

Les tâches Cron sont planifiées avec cinq paramètres, comme indiqué ci-dessous. Chaque paramètre a une valeur par défaut de *, ce qui indique qu'aucune valeur n'a été spécifiée pour ce paramètre, que ce soit pour les tâches cron horaires, quotidiennes, hebdomadaires ou mensuelles.

     

Si vous avez besoin d'un rappel sur la syntaxe des tâches cron avec des exemples, consultez le site Web de crontab.

1. Créez un fichier dans votre éditeur de texte, copiez/collez le code ci-dessous et enregistrez-le dans le répertoire /usr/local/jobs annuaire. Pour cet exemple, le fichier est nommé newjob.py , mais vous pouvez le nommer différemment. Le code ci-dessous imprime un texte (Executed! ) lors de son exécution.

print("Executed!")

2. Ensuite, créez un fichier de script PHP, puis copiez/collez le code ci-dessous dans ce fichier PHP et enregistrez-le dans /usr/local/scripts . Pour ce tutoriel, le script est nommé add.php .

Tout au long du didacticiel, n'oubliez pas de sauvegarder les fichiers de script dans le répertoire /usr/local/scripts et les fichiers de travail cron dans le répertoire /usr/local/jobs.

Le code ci-dessous ajoute le newjob.py fichier en tant que tâche cron dans le fichier crontab.

Le shell_exec l'opération stocke la liste des tâches cron dans une chaîne en mémoire avant d'en ajouter une nouvelle, de sorte que vous ne perdrez aucune des tâches cron existantes.

Est-ce que shell_exec ne fonctionne pas ? Vous pouvez désactiver cette fonction dans votre fichier php.ini. Cherchez le disable_functions configuration dans votre php.ini et supprimez shell_exec de la liste. Gardez à l'esprit que cela peut être abusé, alors soyez prudent avec cette fonction !

3. Exécutez la commande ci-dessous pour exécuter le add.php script de /usr/local/scripts annuaire. php add.php

php add.php

Assurez-vous d'être dans le répertoire /usr/local/scripts lors de l'exécution de scripts tout au long du didacticiel.

4. Enfin, exécutez le crontab -l ci-dessous commande pour vérifier si la nouvelle tâche cron existe.

crontab -l

Répertorier les tâches Cron

Peut-être souhaitez-vous garder une trace des tâches cron que vous avez ajoutées, afin de pouvoir les mettre à jour ou les supprimer. Si tel est le cas, votre première étape consiste à répertorier les tâches cron existantes. La liste des tâches cron est pratique pour garder une trace des tâches cron que vous avez.

Créez un nouveau script PHP, donnez-lui un nom unique et collez le code ci-dessous dans le fichier de script. Pour cet exemple, le script est nommé list.php .

Le code ci-dessous shell_exec opération rassemble et affiche (echo() ) toutes les tâches cron (crontab -l ) à partir du fichier crontab.

Maintenant, exécutez la commande ci-dessous pour exécuter le list.php script.

php list.php

Répertorier un tableau de tâches Cron

Vous souhaitez peut-être imprimer la liste des tâches cron dans un tableau au lieu d'une simple liste. Si oui, vous aurez besoin du ) and [var_dump()](explode() les fonctions. Ces fonctions vous permettent de stocker des tâches cron dans le fichier crontab en tant qu'élément dans un tableau.

Remplacer le contenu de list.php fichier avec le code ci-dessous. L'exécution du code ci-dessous répertorie un tableau de tâches cron et imprime également la longueur de chaîne de la tâche cron.

Exécutez maintenant la commande ci-dessous pour exécuter le list.php script.

php list.php

Comme vous le voyez ci-dessous, le code génère la liste des tâches cron dans un tableau, tout en affichant également la longueur de la chaîne.

Suppression des tâches Cron

Maintenant que vous avez la liste des tâches cron existantes, vous pouvez décider de ce que vous voulez faire avec chaque tâche cron. Vous avez peut-être des tâches cron que vous souhaitez supprimer. Si tel est le cas, vous spécifierez la tâche cron à supprimer dans une variable de chaîne.

1. Créez un nouveau script PHP appelé remove.php pour cet exemple, ajoutez le code ci-dessous au script. Vous pouvez nommer le fichier de script différemment selon vos préférences.

Le code ci-dessous supprime une tâche cron spécifique du fichier crontab.

2. Exécutez la commande suivante pour exécuter le remove.php scénario.

php remove.php

3. Enfin, exécutez le crontab -l commande pour voir si vous avez supprimé le newjob.php Tâche planifiée. crontab -l

crontab -l

Ajout et suppression de plusieurs tâches Cron

En ajoutant une seule tâche cron, vous pouvez également ajouter plusieurs tâches cron, peut-être lorsque vous avez des tâches quotidiennes que vous souhaitez automatiser. Comment? En ajoutant une boucle for dans votre script.

L'ajout et la suppression de plusieurs tâches cron partagent une approche similaire, mais le script de suppression de plusieurs tâches cron utilise davantage de variables, comme illustré ci-dessous.

1. Remplacez le contenu de votre add.php fichier avec le code ci-dessous. L'exécution du code ci-dessous ajoute plusieurs tâches cron au fichier crontab en parcourant un tableau.

2. Ensuite, réexécutez la commande ci-dessous pour exécuter le add.php scénario. php add.php

php add.php

3. Exécutez le crontab -l ci-dessous pour vérifier si les tâches cron que vous avez ajoutées dans le fichier crontab existent. crontab -l

crontab -l

4. Maintenant, remplacez le contenu de votre remove.php fichier avec le code ci-dessous, qui supprime plusieurs tâches cron que vous avez définies. Semblable à l'ajout de plusieurs tâches cron, la même approche s'applique à la suppression de plusieurs tâches cron, mais avec des variables supplémentaires.

5. Exécutez la commande suivante pour exécuter le remove.php scénario.

php remove.php

6. Enfin, exécutez le crontab -l pour vérifier que vous avez supprimé les tâches cron.

 crontab -l

Si vous avez réussi à supprimer les tâches cron, vous n'obtiendrez pas une sortie comme celle ci-dessous.

Création de fonctions pour gérer les tâches Cron

Jusqu'à présent, vous avez vu comment ajouter, supprimer et répertorier les tâches cron dans des scripts séparés. Mais pour gérer efficacement les tâches cron, vous pouvez créer des fonctions dans un seul script au lieu d'exécuter trois scripts distincts.

Créez un nouveau fichier de script et collez le code ci-dessous. Donnez au script le nom que vous préférez, mais pour cet exemple, le script est nommé multi.php .

Le code ci-dessous ajoute, supprime et répertorie les tâches cron avec trois fonctions distinctes que vous pouvez appeler au bas du script.


Maintenant, exécutez la commande ci-dessous pour exécuter le multi.php script.

php multi.php

Ci-dessous, vous pouvez voir la sortie de list_jobs() fonction appelée dans le multi.php script.

Éviter la surcharge de la mémoire

Vous avez vu les capacités de PHP dans la gestion des tâches cron, mais avoir trop de tâches cron consomme de la mémoire. Comment éviter la surcharge mémoire ? Définissez une limite de nombre de tâches cron que vous pouvez ajouter au fichier crontab.

1. Ajoutez la fonction suivante au multi.php scénario. La fonction ci-dessous compte toutes les tâches cron en comptant toutes les lignes à l'intérieur du fichier crontab et imprime un message pour vous informer du nombre actuel de tâches 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. Ensuite, appelez le count_jobs() fonction à la fin du script, comme vous l'avez fait dans la section "Création de fonctions pour gérer les tâches Cron".

3. Exécutez la commande ci-dessous pour exécuter le multi.php scénario.

php multi.php

Comme vous pouvez le voir ci-dessous, un message vous indique le nombre actuel de tâches cron.

Mais peut-être souhaitez-vous terminer automatiquement le script s'il y a trop de tâches cron en cours d'exécution simultanément. Si oui, ajouter un if condition fera l'affaire.

4. Remplacez le count_jobs() fonction dans le multi.php fichier avec celui ci-dessous.

La fonction ci-dessous lit le nombre de lignes à l'intérieur du fichier crontab et, en fonction de ce nombre, décide de terminer ou non le script.

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. Enfin, exécutez le multi.php script comme vous l'avez fait à l'étape trois. php multi.php

php multi.php

Dans la sortie ci-dessous, vous pouvez voir le message qui vous indique le nombre actuel de tâches cron (63 ). Étant donné que le nombre de tâches cron est supérieur à 50, le script se termine alors automatiquement et ne procède pas à l'ajout de tâches cron.

Conclusion

Tout au long de ce tutoriel, vous avez réalisé que PHP fournit un moyen d'automatiser les tâches cron avec le shell_exec() fonction. Vous avez appris à ajouter, supprimer et répertorier les tâches cron dans un seul script PHP tout en vous assurant de ne pas surcharger votre mémoire.

Maintenant, envisagerez-vous PHP la prochaine fois que vous aurez besoin de gérer des tâches cron pour vos projets ?


Linux
  1. Comment répertorier, afficher et afficher toutes les tâches Cron actuelles sous Linux

  2. Comment gérer et répertorier les services sous Linux

  3. Comment vérifier la version du système d'exploitation et de Linux

  4. Utilisation d'at pour les tâches cron à usage unique sous Linux

  5. Comment monter et démonter un système de fichiers sous Linux

Comment répertorier les services sous Linux

Cron Jobs et Crontab sur Linux expliqués

Comment répertorier les utilisateurs et les groupes sous Linux

Comment installer et configurer Redis sur le système Linux

Configurer des tâches Cron pour Linux et 10 meilleurs outils en ligne pour les tâches Cron

Comment exécuter les packages .run et .bin dans le système Linux