Comment planifier des tâches sous Linux avec Cron et Crontab

Comment planifier des tâches sous Linux avec Cron et Crontab / Linux

Saviez-vous que Coureur de lame est mis en 2019? C'est trois ans à partir de maintenant! Sans parler de Retour vers le futur 2, où ils voyagent dans le temps jusqu'en 2015. Pourtant, nous n'avons pas de voitures volantes et il n'y a pas de réplicants parmi nous (à ma connaissance).

Il est facile de se sentir déçu par la technologie actuelle en la comparant à des représentations fictives du futur. Pourtant, ces jours-ci, nos téléphones, ordinateurs et même nos maisons peuvent faire des choses incroyables. 5 projets de domotique bricolage pour démarrer avec votre maison intelligente 5 projets de domotique bricolage pour pour commencer avec votre maison intelligente Lorsqu'il s'agit de créer des maisons intelligentes, la plupart des gens mais je ne sais pas par où commencer. Voici cinq projets de base de maison intelligente pour débutants que vous pouvez créer dès maintenant. Lire la suite . La capacité à automatiser des tâches en fait partie..

Chaque utilisateur Linux peut tirer parti des tâches de planification liées au système (telles que le nettoyage d'anciens journaux et la mise à jour de packages. Comment mettre à jour une ou toutes les applications sous Linux en quelques secondes. Comment mettre à jour une ou toutes les applications sous Linux en quelques secondes. Le terminal Linux. simplifie la mise à jour d’une seule application sur votre ordinateur, ou l’application simultanée de toutes les mises à jour disponibles (voici comment. en savoir plus) ou au service de l’utilisateur (vérification de la messagerie électronique, téléchargement de podcasts, etc.). Les utilisateurs de Windows ont eu des tâches ennuyeuses du Planificateur de tâches 4 que vous pouvez automatiser avec le Planificateur de tâches Windows 4 et que vous pouvez automatiser avec du Planificateur de tâches Windows. Votre temps est trop précieux pour être perdu avec des tâches répétitives. Laissez-nous vous montrer comment automatiser et planifier des tâches. Nous avons aussi quelques exemples intéressants. Lisez-en plus depuis Windows 95. L'utilitaire qui fait le même travail sous Linux s'appelle cron, et nous expliquerons ici comment l'utiliser..

Qu'est-ce que Cron??

Cron est un service système qui s'exécute en arrière-plan, vérifie les tâches planifiées et les exécute s'il en trouve. Les tâches - également appelées “Cron Jobs 5 Idées de configuration Linux pour débutants pour les tâches Cron et les scripts Shell 5 Idées de configuration Linux pour Débutants pour les tâches Cron et les scripts de shell Avec les scripts bash, vous pouvez effectuer une série complexe de tâches en une seule opération, ce qui en fait un outil idéal pour les besoins complexes et répétitifs. C'est aussi un excellent moyen de connaître le terminal. Lire la suite ” - sont définis dans des fichiers de configuration spéciaux (crontabs), que cron scanne toutes les minutes. Plusieurs versions de cron peuvent être trouvées dans différentes distributions Linux. Par exemple, la fourchette de cron de Fedora s'appelle cronie, et il existe aussi fcron, bcron et dcron. Certains ont des fonctionnalités supplémentaires, tandis que d'autres sont plus axés sur la sécurité, mais ils sont tous basés sur la même idée.

Ce guide est écrit pour vixie-cron, qui est la version la plus répandue de cron et celle que vous trouverez sur Ubuntu et ses dérivés. Bien que la plupart des instructions s’appliquent également à d’autres implémentations de cron, il peut y avoir des différences mineures. Consultez leurs manuels si vous décidez de changer.

Qu'est-ce qu'un Crontab??

Organisez votre temps avec ces 4 applications de calendrier Linux Organisez votre temps avec ces 4 applications de calendrier Linux Est-il judicieux de continuer à utiliser une application de calendrier de bureau? Nous pensons que oui, en particulier pour permettre l’accès aux événements sur n’importe quel appareil synchronisé. Ces applications de calendrier Linux sont particulièrement utiles. Lire la suite - une application ou au moins une feuille de papier. Crontab ressemble beaucoup au calendrier de votre ordinateur. Il contient les informations sur les tâches planifiées, indiquant à cron les commandes à exécuter à quel moment..

En fait, plusieurs crontabs sont sur votre système. Chaque utilisateur a sa propre crontab, y compris root (l'administrateur). Les crontabs utilisateur sont stockés dans / var / spool / cron / crontabs /. le crontab -l La commande listera le fichier crontab de l'utilisateur actuel. Vous pouvez vérifier la racine crontab avec sudo crontab -l.

De plus, il y a le fichier crontab du système / etc / crontab qui est utilisé pour les tâches à l'échelle du système. Ils prennent généralement la forme de scripts exécutables appartenant à la racine et placés dans /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, et /etc/cron.monthly/ dossiers, et sur certaines distributions, la /etc/cron.d/ dossier aussi bien. De manière générale, vous ne devriez pas avoir à gérer ces tâches, car la plupart d'entre elles sont créées automatiquement par les applications installées..

Comment planifier des tâches avec Cron

Cela semble simple: pour planifier des tâches, ajoutez-les simplement à votre crontab. Crontab étant un fichier de configuration spécial, il est déconseillé de le modifier manuellement. Au lieu de cela, utilisez le crontab -e commander. Pour éditer les fichiers crontabs de root ou d'autres utilisateurs, exécutez la commande avec des privilèges d'administrateur et ajoutez leur nom d'utilisateur après l'option -u:

sudo crontab -u root -e
sudo crontab -u nom d'utilisateur -e

Le fichier crontab a deux sections. Le premier contient des variables d'environnement configurées automatiquement. Vous pouvez modifier en toute sécurité les variables PATH, HOME et SHELL et modifier la variable MAIL..

La deuxième partie du fichier est la réelle “calendrier” avec vos tâches planifiées. Chaque tâche occupe une ligne (ligne) dans la table, avec des colonnes représentant les valeurs suivantes:

Pour planifier des tâches avec succès, vous devez connaître un peu la syntaxe de la crontab:

  • Les nombres doivent être des entiers (nombres entiers) et vous pouvez utiliser l'astérisque (*) de n'importe quelle colonne comme caractère générique, ce qui signifie “chaque minute / jour / mois… ”.
  • dans le “Jour du mois” colonne, veillez à ne pas définir une date qui ne se produit pas dans le mois spécifié dans le champ “Mois” colonne (par exemple, 30 février).
  • Tous les deux “Mois” et “Jour de la semaine” les colonnes acceptent les noms abrégés pour les mois et les jours, respectivement, et sont insensibles à la casse.
  • dans le “Jour de la semaine” colonne, 0 et 7 signifient dimanche. le “Heure” la colonne nécessite le “temps militaire” Format (24 heures), mais vous ne pouvez pas utiliser le nombre 24 - au lieu de cela, 0 correspond à 12 heures du fait que les valeurs pour minute, heure et jour de la semaine commencent à 0 au lieu de 1.
  • Les secondes ne sont pas prises en charge, vous ne pouvez donc pas planifier une tâche à une seconde particulière..

Ce que vous pouvez faire est de programmer des plages horaires incluses à l'aide d'un trait d'union (14-22 sous “Heures” exécutera la tâche en continu à partir de 14 heures. jusqu’à 22 h), ou exécuter plusieurs fois une même tâche en définissant une liste séparée par des virgules (1,3,5 sous “Jour de la semaine” exécutera la tâche lundi, mercredi et vendredi).

Pendant ce temps, les valeurs de pas sont représentées par une barre oblique (/) et indiquent le nombre de sauts dans une plage; par exemple, 3-20 / 3 sous “Heures” exécute la tâche toutes les trois heures de 3 heures à 20 heures. Ceci est utile lorsque vous souhaitez répéter des tâches toutes les X heures, car vous pouvez combiner un astérisque et une étape (* / X). Vous pouvez combiner des plages avec des listes et des étapes avec des plages tant que vous utilisez des nombres. En d'autres termes, des combinaisons comme “jan-mar” ou “Mar, ven-dim” ne sont pas permis.

Alternativement, au lieu de définir une valeur pour chaque colonne, vous pouvez simplement écrire au début de la ligne @weekly, @ year, @monthly, @daily ou @hourly, suivi d'une commande. Comme prévu, les tâches seront exécutées à la première instance possible. Ainsi, @weekly sera exécuté à minuit le premier jour de la semaine. Si vous souhaitez exécuter une tâche immédiatement au démarrage du système, utilisez la commande @reboot..

Dans cet exemple, nous avons programmé une sauvegarde tous les jours à 08h20 et à 20h20. Le papier peint change automatiquement tous les trois jours à 19h00 et un script recherche les nouveaux podcasts. Les 10 meilleures applications pour la gestion des podcasts sous Linux Les 10 meilleures applications pour la gestion des podcasts sous Linux mais ne vous inquiétez pas, presque tous les lecteurs de musique modernes pour Linux peuvent servir de podcatcher. Jetons un coup d'oeil aux options. Lire tous les lundis à 10h20 et 20h20. Un rappel d'anniversaire est programmé pour le 25 mars et s'exécute toutes les 30 minutes dans les délais spécifiés. Enfin, un script vérifie les e-mails toutes les 15 minutes de 8 à 20 heures, mais uniquement les jours ouvrables. Vous êtes libre d'organiser votre crontab avec des espaces et des tabulations entre les colonnes, mais pas entre elles (ne mettez pas d'espaces entre virgules, traits d'union et barres obliques)..

Si tout cela vous semble trop compliqué, ne vous inquiétez pas, vous pouvez toujours compter sur Internet. Des outils tels que Crontab Generator, Crontab.guru et Corntab vous aident à créer des tâches cron sans connaître la syntaxe de la crontab. Ils vous indiquent la prochaine exécution du travail et fournissent des modèles d'expressions couramment utilisées. Crontab.guru est ce qu'il y a de mieux, car il vous permet de tester en direct la syntaxe de la crontab afin que vous puissiez voir immédiatement comment vos modifications affecteront le calendrier..

Comment vérifier si les tâches cron sont exécutées

Cron est supposé fonctionner silencieusement en arrière-plan et vous permettre de travailler sans être dérangé pendant qu'il s'acquitte de vos tâches. Mais comment pouvez-vous vous assurer que cela fonctionne réellement?

Cron possède une fonctionnalité de notification par courrier électronique intégrée, mais cela nécessite la configuration d'au moins un serveur de messagerie local simple. Comment fonctionne un serveur de messagerie? [Technologie expliquée] Comment fonctionne un serveur de messagerie? [Technologie expliquée] Derrière chaque email se trouve un puissant moteur appelé serveur de messagerie qui envoie les emails via Internet. Lire la suite . Peu d'utilisateurs à domicile sont disposés à configurer ceci, et peu de distributions le fournissent par défaut (par exemple, Ubuntu ne le fait pas). Le moyen le plus rapide de vérifier cron est d’analyser le journal système avec cette commande:

chat / var / log / syslog | grep -i cron

L'option -i rend notre requête insensible à la casse. Il est possible que cron ait son propre fichier journal quelque part / var / log /, alors regardez-y si cette commande ne produit pas de résultats utiles.

Si vous devez enregistrer la sortie d'un travail cron particulier, vous pouvez le rediriger vers un fichier. Indiquez le chemin d'accès et le nom du fichier dans la dernière colonne de votre crontab, après la commande que vous voulez exécuter:

30 * * * * / usr / bin / votre commande> /home/username/logfile.txt

L'utilisation d'un seul symbole> écrase le fichier à chaque exécution de la commande. Pour éviter cela, utilisez >> à la place - il ajoute la sortie au fichier existant.

Et si Cron ne fonctionne pas?

Il se peut que vous ayez ajouté des tâches, vérifié les journaux système et constaté qu'ils ne s'exécutent pas comme ils le devraient. Voici quelques points à prendre en compte - et à surveiller - lorsque vous essayez de résoudre le problème.

Le service cron est-il actif??

Comme vous le savez, le démon cron devrait être exécuté en arrière-plan. Assurez-vous que c'est vraiment le cas. Le service s'appelle crond ou juste cron.

Pour les distributions utilisant systemd:

statut systemctl cron

Pour les distributions utilisant Upstart:

statut de service cron

Si votre distribution utilise le “vieux” Approche System V init, listez tous les services avec:

liste initctl

et voir si cron est listé.

Êtes-vous même autorisé à avoir un fichier crontab?

Vérifier votre /etc dossier pour les fichiers nommés cron.allow et cron.deny. Sur Ubuntu, ni devrait exister, ce qui signifie que tous les utilisateurs sont autorisés à gérer des tâches cron. Cependant, s'il y a un cron.allow fichier, il doit contenir votre nom d'utilisateur. Inversement, si le cron.deny Si le fichier existe, votre nom d'utilisateur ne devrait pas y figurer. Quittant le cron.deny fichier vide signifie que seuls les utilisateurs root et listés dans cron.allow peut avoir des fichiers crontab.

Vos variables sont-elles correctement définies??

Crontab définit automatiquement votre variable SHELL sur / bin / sh. Cependant, si votre shell de choix est fish 7 raisons pour lesquelles vous devez installer le shell shell 7 raisons pour lesquelles vous devez installer le shell shell Vous n'aimez pas le fonctionnement de votre terminal Linux? Pourquoi ne pas installer un nouveau shell? Un de ces coquillages est le poisson, qui introduit des caractéristiques qui auraient dû devenir banales, mais ne l’ont pas fait. Nous allons jeter un coup d'oeil. En savoir plus ou bash, vous devriez changer la variable SHELL. De même, la variable PATH ne contient que quelques répertoires par défaut. C'est ici que crontab recherche les commandes Linux. Si votre travail cron ne parvient pas à s'exécuter, c'est peut-être parce que crontab ne fonctionne pas. “voir” la commande que vous avez utilisée. Pour éviter cela, ajoutez des répertoires contenant les commandes à la variable PATH, séparés par des deux points:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Si vous ne voulez pas éditer ceci dans votre crontab, vous pouvez définir ces variables dans le script que vous voulez exécuter comme travail cron..

Est-ce que votre crontab met en forme?

La syntaxe de Crontab n’est pas une navigation fluide. Même si vous le vérifiez avec les outils en ligne mentionnés précédemment, une erreur mineure pourrait néanmoins empêcher cron d’exécuter vos tâches. Attention à:

  • ajoute une ligne vide à la fin du fichier crontab
  • échappe au signe% avec une barre oblique inverse si ta commande l’inclut
  • écrivez des commentaires en tant que lignes séparées commençant par #. N'écrivez pas de commentaires sur la même ligne que les variables d'environnement ou à côté des commandes de travail cron.

Devez-vous vraiment utiliser le terminal??

Absolument pas. Les utilisateurs de KDE peuvent planifier des tâches cron avec KCron, qui est accessible depuis le Paramètres système> Planificateur de tâches module. Avec une interface simple qui vous permet de tout choisir et de tout ajuster en quelques clics de souris, KCron est un plaisir à utiliser.

Si vous préférez GNOME, alors GNOME Schedule est fait pour vous. L’approche est similaire, bien que l’interface soit légèrement différente Il offre un mode avancé pour les modifications fines et est livré avec un applet de panneau à partir duquel vous pouvez gérer les tâches directement..

Vous devez connaître d'autres solutions, telles que Crontab-UI et Minicron. Ils conviennent mieux aux utilisateurs qui gèrent plusieurs machines et tâches cron, et l'une de leurs fonctionnalités les plus intéressantes est l'interface Web..

Y at-il des alternatives Cron?

Bien que cron soit plus ou moins le planificateur de tâches standard pour Linux Programmer et automatiser des tâches sous Linux avec Gnome Schedule Programmer et automatiser des tâches sous Linux avec Gnome Schedule, cet élément n'est certainement pas le seul. La commande at est idéale pour les tâches ponctuelles rapides qui peuvent être planifiées directement à partir de la ligne de commande, sans fichiers de configuration spéciaux. Si vous avez besoin de plus, il y a GNUbatch, qui introduit la notion de dépendance. Avec GNUbatch, vous pouvez définir des conditions spécifiques pour chaque travail ou associer une tâche planifiée à une précédente. Quelque chose de similaire peut être obtenu avec des minuteries systemd. Bien que moins pratique à configurer que cron, les timers systemd peuvent se rappeler si une tâche a manqué son emploi du temps lorsque l'ordinateur était éteint et l'exécuter la prochaine fois qu'il est allumé..

C'est quelque chose que cron ne peut pas faire seul. En tant que tel, il convient aux serveurs et aux ordinateurs qui fonctionnent en permanence, mais il n'exécutera pas de tâche planifiée alors que l'ordinateur était éteint. C'est ici qu'Anacron entre en jeu. Ce n'est techniquement pas un “alternative” ou un remplacement pour cron. Au lieu de cela, anacron complète cron et devrait être utilisé à ses côtés, ce qui est le cas sur de nombreuses distributions Linux, y compris les produits Ubuntu et basés sur Ubuntu. Anacron enregistre la dernière exécution d’une tâche et vérifie si des instances ont été manquées pendant la mise hors tension du système. Il les exécutera lorsque vous rallumez l'ordinateur, mais chaque tâche ne peut être exécutée qu'une fois par jour..

Certaines versions de cron, telles que fcron, offrent les fonctionnalités anacron par défaut. Les utilisateurs expérimentés voudront peut-être se tourner vers Hcron ou SuperCron, qui apportent de nombreuses améliorations aux fonctions de base de cron, mais qui sont également difficiles à gérer..

Et vous? Comment organisez-vous vos tâches numériques? Quelles tâches planifiez-vous sous Linux? Partagez vos histoires et astuces pour utiliser cron dans les commentaires.

Crédit image: tableau de Gonzalo Aragon via Shutterstock

En savoir plus sur: Linux.