Manuel Crontab – Planification des tâches sous Linux

Réaliser les mêmes tâches encore et encore, que ce soit sur une base quotidienne, hebdomadaire ou mensuelle, est une tâche qui, avec le temps, fatigue et dégénère, selon sa complexité, dans laquelle on la laisse de côté. La solution à ce problème est de l'automatiser autant que possible. Juste comme Windows nous permet d'automatiser certaines tâches, Linux/Unix nous propose également cette option via Crontab, mais pas exclusivement.

Si nous voulons automatiser le fonctionnement de Linux, que ce soit pour faire une copie de sauvegarde, pour générer des rapports, pour modifier la configuration ou pour toute autre chose, la solution consiste à utiliser Crontab en combinaison avec Cron, car, contrairement à Windows, nous avons besoin de deux demandes minimales.

Manuel Crontab

Qu'est-ce que le Crontab ?

Crontab est un fichier texte où les automatisations sont créées en fonction d'une série de paramètres, un fichier texte qui est lu par Cron . Les deux applications sont disponibles nativement dans la plupart des distributions Linux les plus courantes, il n'est donc pas nécessaire d'installer un référentiel sur notre ordinateur pour pouvoir les utiliser.

Crontab nous propose une série de scripts, un par ligne, qui nous permet de personnaliser le temps exact dans lequel nous voulons effectuer une ou plusieurs tâches et leurs répétitions dans le temps. En fait, son nom dérive du mot grec Cronos , ce qui signifie temps. Chaque script contient des informations sur la date exacte à laquelle il doit être exécuté, laquelle date est indiquée par une série de chiffres. Pour exemple, un bouton. Le script suivant exécutera nfsfind tous les dimanches à 5h30 du matin

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

Les deux premiers chiffres représentent l'heure à laquelle la commande sera exécutée, le premier chiffre étant la minute et le second les heures. Le format d'heure utilisé par Crontab est de 24 heures, donc si nous voulons effectuer la tâche à 5 heures de l'après-midi, ce serait le nombre 17. Les astérisques représentent toutes les valeurs, tandis que le nombre 0 correspond aux dimanches.

Ne confondez pas Cron avec Crontab

Tandis que Crontab nous permet d'effectuer les automatisations , ceux-ci sont exécutés, mais pas exclusivement, avec l'application Cron, une application qui s'exécute en arrière-plan et qui exécute toutes les tâches que nous avons précédemment configurées dans Crontab. Cette application utilise notre temps système pour les exécuter, il est donc important, si nous utilisons une machine virtuelle, que l'heure de la machine invitée et celle de notre ordinateur soient toujours les mêmes, car sinon, l'heure programmée ne sera pas correct.

Cron lit le contenu du fichier Crontab toutes les minutes, nous pouvons donc le modifier à tout moment pour effectuer des tâches que nous voulons effectuer dans la même session, sans avoir à forcer l'application à relire son contenu pour trouver de nouveaux scripts à exécuter.

Tous les utilisateurs n'ont pas la possibilité de créer des fichiers Crontab pour automatiser les tâches système. L'administrateur système a la possibilité d'autoriser ou de refuser cette option via le fichier cron.allow ou cron.den respectivement, fichiers trouvés dans /etc/cron.do /etc/ selon la version de la distribution Linux que nous avons. installé sur notre ordinateur.

Comment automatiser des tâches sous Linux

Comme nous l'avons mentionné ci-dessus, les scripts Crontab commencent par la date à laquelle nous voulons qu'ils soient exécutés, suivis de la commande. La syntaxe Crontab est la suivante.

Gestion des horaires

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minute, cela peut aller de 0 à 59
  • Heure, comme nous l'avons mentionné, Crontab utilise l'heure de 24 heures, donc la plage de nombres va de 0 à 23.
  • Jour du mois, il n'y a pas grand mystère, dans ce paramètre puisqu'il va de 1 à 31.
  • Mois, de 1 à 12
    • Janvier 1
    • Février 2
    • Mars 3
    • Avril 4
    • Mai 5
    • Juin 6
    • Juillet 2023
    • Août 8
    • Septembre 9
    • Octobre 10
    • Novembre 11
    • Décembre 12.
  • Jour de la semaine, de 0 à 6, dimanche étant le chiffre 0 bien que certaines versions de Crontab permettent également d'utiliser le chiffre 7. De cette manière, le code des jours de la semaine est
    • 0 dimanche
    • 1 lundi
    • 2 mardi
    • 3 mercredi
    • 4 jeudi
    • 5 vendredi
    • 6 samedi

Mais, en plus, on peut aussi utiliser l'astérisque (*) pour spécifier toutes les valeurs possibles d'une variable. Si nous voulons établir plusieurs valeurs, nous pouvons le faire par la virgule (,) ou une plage de valeurs les séparant par un trait d'union (-). Nous pouvons également définir différentes étapes avec "/".

Si ce n'est toujours pas très clair, alors nous vous montrons les codes horaires que nous pouvons utiliser pour effectuer des tâches périodiquement en fonction de leur périodicité

  • 0 * * * * En utilisant le code temporel, le script sera exécuté toutes les heures sur l'heure.
  • 0 0 * * * Chaque jour le script ne sera exécuté qu'une seule fois
  • 0 0 * * 0 Le script s'exécute une fois par semaine
  • 0 0 1 * * Sera exécuté une fois par mois
  • 0 0 1 1 * Le script sera exécuté une fois par an

Une fois que nous sommes clairs sur le fonctionnement de la planification des tâches dans Crontab, la première chose que nous allons faire est de créer le fichier dans lequel nous allons créer tous les processus que nous voulons automatiser à l'aide de la commande suivante

crontab nombre-archivo

Si nous ne voulons pas en créer un nouveau, ou si nous l'avons déjà créé et que nous voulons le modifier, nous utilisons cette commande

crontab -e

Si nous voulons supprimer le fichier Crontab créé

crontab -d

Avec la commande suivante, nous pouvons lister toutes les tâches incluses dans le fichier Crontab

crontab -d

Les administrateurs système peuvent limiter l'utilisation des automatisations système en éditant les fichiers cron.allow ou cron.den, fichiers se trouvant dans /etc/cron.d/ ou /etc/ si nous n'avons pas préalablement modifié leur emplacement.

automatiser les tâches

Pour éditer le fichier Crontab que nous avons créé, nous allons utiliser l'éditeur de texte inclus dans toutes les distributions Linux, bien que nous puissions également l'éditer directement depuis Crontab en ajoutant la variable -e.

nano nombrearchivo

Nous introduisons le code numérique accompagné d'astérisques et le script que nous voulons exécuter. Ensuite, nous devons donner à Cron les autorisations pour l'exécuter, sinon il ne connaîtra pas son existence et ne pourra jamais l'exécuter. Pour ce faire, nous utiliserons la commande

chmod ugo+x nombrearchivo

Au départ, utiliser Crontab pour automatiser des tâches ne semble pas du tout facile et rappelle le besoin (presque courant) de Linux de recourir à la ligne de commande pour pratiquement tout, empêchant ainsi davantage d'utilisateurs d'adopter Linux comme système d'exploitation un jour. au jour le jour. .

Le planificateur de tâches de Windows utilise une interface graphique qui n'est pas très facile à utiliser sans les connaissances nécessaires, cependant, il est beaucoup plus intuitif que celui proposé par Linux via la ligne de commande.

Exemple de travail Crontab et Cron

La première chose que nous devons faire pour automatiser les tâches sous Linux est de créer le fichier dans lequel nous allons inclure toutes les commandes que nous voulons exécuter sur l'ordinateur au moment de la configuration. Dans cet exemple, nous allons créer le fichier « test » qui se chargera de supprimer tous les fichiers et dossiers vides présents dans le répertoire tmp. Pour ce faire, nous allons entrer la commande suivante.

crontab prueba

Ensuite, nous devons entrer la commande (ou les commandes en les séparant par des points-virgules ";" sans les guillemets). Dans cet exemple, nous allons utiliser Crontab pour supprimer les fichiers du dossier tmp.

find /tmp -type f -empty -delete

Ensuite, nous éditons le fichier pour ajouter le calendrier, c'est-à-dire quand nous voulons que les tâches que nous avons entrées dans le fichier soient exécutées.

crontab -e

Pour qu'il soit exécuté tous les jours à 10 heures du matin, il faut ajouter 0 10 * * * avant le script, en laissant la ligne comme suit

0 10 * * * find /tmp -type f -empty -delete

Si nous voulons qu'il soit exécuté à un autre moment, il suffit de modifier le nombre 10 pour l'heure (au format 24 heures) à laquelle nous voulons qu'il soit exécuté. Nous pouvons également utiliser le codes horaires que nous avons montré dans la section Gestion de la programmation pour le configurer. Enfin, nous utilisons la commande suivante pour que Cron puisse exécuter le fichier d'automatisations que nous avons créé.

[code]chmod ugo+x prueba

Alternatives à Cron

Comme nous l'avons mentionné dans les sections précédentes, Cron est chargé d'exécuter les commandes que nous avons précédemment saisies dans Crontab. Cron est un outil parfait pour les équipes qui fonctionnent 24 heures sur XNUMX, bien que nous puissions également l'adapter à notre horaire de travail, même s'il enlève des ressources à l'équipe pendant l'exécution des tâches. Si nous recherchons des options plus simples pour Cron, nous vous montrons certaines des meilleures alternatives.

anachron

Anacron nous permet de programmer l'exécution automatisée de tâches sur une journée, une semaine ou un mois, à tout moment. Si l'ordinateur est éteint, la prochaine fois que nous démarrerons l'ordinateur, la tâche que nous avons précédemment entrée dans Crontab sera effectuée. Avec Cron, si l'ordinateur est éteint à la date spécifiée, la tâche ne sera pas effectuée lorsque nous allumerons l'ordinateur. Anacron est disponible dans la plupart des distributions Linux et nous pouvons l'installer sur l'ordinateur via la commande suivante.

sudo apt install anacron

copain

Cronie nous offre une expérience beaucoup plus complète que Cron, et un petit ensemble d'applications (parmi lesquelles Anacron est inclus) et avec lesquelles nous pouvons programmer des workflows très rapidement et facilement via Crontab. Contrairement à Anacron, pour installer Cronie, il n'est pas disponible dans les dépôts Linux, il faut donc visiter sa page web sur GitHub pour le télécharger, ou utilisez la commande suivante.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz