Exécutez un travail cron chaque minute

Exécutez un travail cron chaque minute
Si vous souhaitez exécuter un programme ou un script en arrière-plan sur Linux, le travail Cron est très important. Avec l'aide de Cron Jobs, 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 à certains des exemples de la vie réelle de Cron Jobs.

  • Disons que vous possédez un site Web et que vous souhaitez envoyer tous les jours un e-mail à tous les utilisateurs de votre site Web. Tout ce que vous avez à faire est d'écrire un e-mail envoyant un script et de configurer un travail 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 $ pour vous 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 mobile ou à l'e-mail de l'annonceur. Puis configurez un travail cron pour exécuter le script toutes les 5 à 10 minutes, ou toutes les heures.

Il existe de nombreux autres usages de travaux cron à Linux.

Dans cet article, je vais vous montrer comment exécuter des travaux Cron chaque minute sur 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.

Bases de Crontab:

Sur Linux, vous n'avez pas besoin d'être racine Afin d'exécuter des travaux cron. Vous pouvez exécuter des travaux CRON comme n'importe quel utilisateur. Chaque utilisateur sur Linux peut utiliser un crontab dossier pour exécuter leur propre ensemble de travaux cron.

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

$ crontab -e

Si vous exécutez cette commande pour la première fois, il faut vous demander de choisir un éditeur de texte dans la liste. Je vais choisir nano, le par défaut. Vous pouvez choisir celui que vous aimez. Une fois que vous avez terminé, appuyez sur .

Le crontab Le fichier doit être créé (s'il n'est pas disponible déjà) et ouvert avec votre éditeur de texte préféré. Vous pouvez maintenant ajouter vos propres travaux Cron à la fin de ce fichier et une fois que vous êtes heureux, enregistrez-le et sortez de l'éditeur de texte.

Syntaxe de l'exécution d'une commande à chaque minute:

La syntaxe de crontab Le fichier est le suivant:

Minute Hour Dayofmonth Mois Dayofweek Commandtorun

Ici,

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

Pour exécuter un Commandtorun Commande chaque minute, vous devriez l'écrire dans le crontab Fichier comme suit:

* * * * * Commandtorun

Exécuter un travail de crob toutes les minutes:

Maintenant que nous connaissons les théories, ajoutons un script simple minuteur.shot au crontab déposer et voir comment le gérer.

Dans le minuteur.shot 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.enregistrer (si n'existe pas déjà) et ajoute la sortie de la commande de date.

Ajoutons maintenant le script à notre crontab Et laissez-le fonctionner chaque minute avec la ligne suivante:

* * * * * / home / shovon / bin / temporisateur.shot

Une fois que vous avez sauvé le crontab fichier et sortir de l'éditeur de texte, le nouveau crontab Le fichier doit être installé.

Après une minute passé, un nouveau fichier est minuteur.enregistrer 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 minuteur.enregistrer Fichier journal, il est évident que le script minuteur.shot fonctionne chaque minute.

Attraper des erreurs des travaux cron:

Pour capter les erreurs d'un travail cron, vous pouvez envoyer les erreurs à un erreur.enregistrer fichier et sorties normales à accès.enregistrer fichier par exemple. Bien sûr, vous pouvez nommer les fichiers tout ce que vous voulez.

Pour démontrer cela, j'ai modifié mon script minuteur.shot un petit peu. Maintenant, les erreurs sont envoyées à erreur.enregistrer fichier dans le / Home / Shovon / Bin Le répertoire et les sorties sont envoyées à accès.enregistrer dans le / Home / Shovon / Bin annuaire.

Au début le / tmp / i_must_be_here Le fichier n'existe pas, donc j'obtiens l'erreur dans le erreur.enregistrer fichier comme vous pouvez le voir.

Le accès.enregistrer Le fichier est vide pour le moment.

Maintenant, je vais créer le fichier / tmp / i_must_be_here

Et comme vous pouvez le voir, la sortie est dans le accès.enregistrer déposer maintenant.

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

Comme vous pouvez le voir, les sorties stdin et stderr sont envoyées au dehors.enregistrer déposer.

S'assurer que le dernier travail a fini de courir avant d'exécuter 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 sa fin. Ensuite, vous pouvez vérifier si le fichier temporaire existe avant de commencer le travail. Si c'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 minuteur.piquer Le fichier est créé.

Lire le accès.enregistrer Le fichier prouve que le travail cron ne s'exécute pas avant que le travail Cron précédent ne termine en cours d'exécution. 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 de sorties de travail CRON pour un débogage facile:

Vous pouvez formater bien les sorties pour rendre votre travail cron plus facile à déboguer.

Un exemple de la façon dont il 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 des travaux cron et des scripts de coquille. J'ai démontré certaines des idées ici. Mais le ciel est votre limite. N'hésitez pas à expérimenter toutes les idées que vous avez. Merci d'avoir lu cet article.