Exécuter une tâche Cron toutes les minutes

Run Cron Job Every Minute



Si vous souhaitez exécuter un programme ou un script en arrière-plan sur Linux, le travail cron est très important. À l'aide de tâches cron, vous pouvez exécuter un programme ou un script en arrière-plan après un intervalle de temps donné.

Jetons un coup d'œil à quelques exemples concrets de tâches cron.







  • Disons que vous possédez un site Web et que vous souhaitez envoyer un e-mail à tous les utilisateurs de votre site Web chaque jour. Tout ce que vous avez à faire est d'écrire un script d'envoi d'e-mails et de configurer une tâche cron pour exécuter ce script tous les jours.
  • Disons que vous possédez une agence de publicité et que vous souhaitez rappeler à tous les annonceurs dont le solde est inférieur à 5$ de recharger. Tout ce que vous avez à faire est d'écrire un script qui vérifie le solde de tous les annonceurs et lorsqu'il est inférieur à 5 $, il enverra une notification au numéro de téléphone portable ou à l'e-mail de l'annonceur. Configurez ensuite une tâche cron pour exécuter le script toutes les 5 à 10 minutes ou toutes les heures.

Il existe de nombreuses autres utilisations des tâches cron sous Linux.



Dans cet article, je vais vous montrer comment exécuter des tâches cron toutes les minutes sous Linux. J'utiliserai Debian 9 Stretch pour la démonstration. Mais vous pouvez utiliser n'importe quelle distribution Linux moderne de votre choix. Commençons.



Sous Linux, vous n'avez pas besoin d'être racine afin d'exécuter des tâches cron. Vous pouvez exécuter des tâches cron en tant qu'utilisateur. Chaque utilisateur sous Linux peut utiliser un crontab pour exécuter leur propre ensemble de tâches cron.





Par défaut, un utilisateur n'a pas de crontab fichier sous Linux. Vous pouvez créer un crontab fichier avec la commande suivante :

$crontab-Et



Si vous exécutez cette commande pour la première fois, vous devriez alors être invité à choisir un éditeur de texte dans la liste. je vais choisir nano , celui par défaut. Vous pouvez choisir celui que vous aimez. Une fois que vous avez terminé, appuyez sur .

Les crontab doit être créé (s'il n'est pas déjà disponible) et ouvert avec votre éditeur de texte préféré. Maintenant, vous pouvez ajouter vos propres tâches cron à la fin de ce fichier et une fois que vous êtes satisfait, enregistrez-le et quittez l'éditeur de texte.

Syntaxe d'exécution d'une commande toutes les minutes :

La syntaxe de crontab fichier est le suivant :

minute heure dayOfMonth mois dayOfWeek commandToRun

Ici,

  • minute peut être 0 à 59 .
  • heure peut également être 0 à 59 .
  • jour du mois peut être 1 à 31 .
  • mois peut être 1 à 12 .
  • jour de la semaine peut être 0 à 7 . 0 et 7 signifie dimanche, 1 signifie lundi, 2 signifie mardi et ainsi de suite.

Pour exécuter un commandToRun commande toutes les minutes, vous devez l'écrire dans le crontab fichier comme suit :

* * * * *commandToRun

Exécuter une tâche Crob toutes les minutes :

Maintenant que nous connaissons les théories, ajoutons un script simple timer.sh à la crontab fichier et voyez comment le gérer.

Dans le timer.sh script, je n'ai que les lignes de codes suivantes. Tout ce qu'il fait est de créer un nouveau fichier /home/shovon/bin/timer.log (si n'existe pas déjà) et lui ajoute la sortie de la commande date.

Ajoutons maintenant le script à notre crontab et laissez-le s'exécuter toutes les minutes avec la ligne suivante :

* * * * * /domicile/shovon/un m/timer.sh

Une fois que vous enregistrez le crontab et quittez l'éditeur de texte, le nouveau crontab fichier doit être installé.

Après une minute, un nouveau fichier est timer.log est créé dans le répertoire souhaité comme vous pouvez le voir dans la section marquée de la capture d'écran ci-dessous.

Du timer.log log, il est évident que le script timer.sh fonctionne toutes les minutes.

Récupérer les erreurs des tâches Cron :

Pour détecter les erreurs d'une tâche cron, vous pouvez envoyer les erreurs à un error.log fichier et sorties normales vers accès.log fichier par exemple. Bien sûr, vous pouvez nommer les fichiers comme vous le souhaitez.

Pour démontrer cela, j'ai modifié mon script timer.sh un peu. Maintenant, les erreurs sont envoyées à error.log fichier dans le / accueil / shovon / poubelle répertoire et les sorties sont envoyées à accès.log dans le / accueil / shovon / poubelle annuaire.

Au début le /tmp/je_doit_être_ici n'existe pas, j'obtiens donc l'erreur dans le error.log fichier comme vous pouvez le voir.

Les accès.log le fichier est vide pour le moment.

Maintenant je vais créer le fichier /tmp/je_doit_être_ici

Et comme vous pouvez le voir, la sortie est dans le accès.log fichier maintenant.

Si vous le souhaitez, vous pouvez rediriger la sortie et les erreurs dans le même fichier comme suit :

Comme vous pouvez le voir, les sorties STDIN et STDERR sont envoyées au out.log déposer.

S'assurer que le dernier travail est terminé avant d'exécuter à nouveau le travail :

Pour que cela fonctionne, vous pouvez créer un fichier temporaire juste après le début du travail et le supprimer juste avant qu'il ne se termine. Ensuite, vous pouvez vérifier si le fichier temporaire existe avant de démarrer le travail. Si tel est le cas, vous pouvez quitter le travail et exécuter le travail uniquement lorsque le fichier temporaire n'est pas disponible.

Ce script simple fait exactement cela.

Comme vous pouvez le voir, le timer.pid fichier est créé.

Lire le accès.log prouve que la tâche cron ne s'exécute pas avant la fin de l'exécution de la tâche cron précédente. Comme vous pouvez le voir, il a fonctionné à 01:32:01 et la prochaine fois, il aurait dû fonctionner à 01:33:01, mais ce n'est pas le cas. Au lieu de cela, il a fonctionné à 01:35:01, environ 3 minutes plus tard.

Organisation des sorties de tâche Cron pour un débogage facile :

Vous pouvez bien formater les sorties pour faciliter le débogage de votre travail cron.

Un exemple de la façon dont cela peut être fait est donné dans le script suivant.

Comme vous pouvez le voir, les sorties, les erreurs et les messages de réussite sont bien imprimés dans le fichier journal.

Vous pouvez faire des choses incroyables avec les tâches cron et les scripts shell. J'ai démontré certaines des idées ici. Mais le ciel est ta limite. N'hésitez pas à expérimenter avec toutes les idées que vous avez. Merci d'avoir lu cet article.