Cron job : Guide de base et des exemples de codes pour les débutants
De nos jours, nous cherchons constamment le moyen optimal pour produire le maximum de résultats avec le minimum du temps et d’énergie. Nous pourrons prendre comme exemple les développeurs web qui gèrent des tâches chronophages et répétitives au moyen d’une procédure automatisée et efficiente. Lors d’une utilisation d’un système d’exploitation de type Unix, vous êtes en mesure d’économiser un temps remarquable avec un cron job qui vous permettra d’exécuter les tâches d’une manière automatique.
Dans ce tutoriel, nous tenterons de vous expliquer les bases du Cron job et comment l’exploiter afin de planifier des tâches.
Qu’est-ce que le Cron job
Cron job ou planificateur de tâches est un service Linux qui a pour mission d’effectuer une tâche spécifique dans un délai précis que l’utilisateur a choisi. Il est d’une utilité optimal surtout pour les administrateurs système surmenés parce qu’il leur donne la possibilité d’exécuter certaines commandes ou des scripts dans une plage horaire donnée et ce d’une manière automatique. C’est la solution parfaite pour les tâches récurrente. Au fait, Cron est un daemon c’est-à-dire que c’est un programme qui agit en arrière-plan afin d’effectuer des tâches non-interactives.
Grâce aux Cron jobs, des commandes et des scripts peuvent être déclenchés chaque jour, mois, semaine, trimestre etc en suivant un calendrier spécifique programmé par l’utilisateur. Par le biais de ce programme, vous serez en mesure de démarrer de différents types de scripts tels que PHP, FRAPPER, PERL.
Bien que les cron Job soient exploités dans la majorité des cas par les administrateurs de système, ils sont extrêmement efficaces pour les développeurs également.
Les bases d’un cron job
En utilisant des simples méthodes, vous avez la possibilité de créer et de modifier des cron job. Dans ce guide de base, nous vous montrerons quelques opérations de cron avec Linux Shell Prompt (Terminal) :
- La commande crontab –e vous permet de modifier un fichier crontab de l’utilisateur actuel. (Comme il utilise le vi editor, vous pourrez apprendre les vi commandes afin de vous assurer d’exécuter les actions correctement)
- Pour éditer le crontab d’un autre utilisateur, tapez crontab -u [utilisateur] –e. N’oubliez pas que cette action n’est possible qu’en tant que « superuser » alors assurez-vous de taper sudo suavant la commande.
- Si vous souhaitez retirer le fichier crontab actuel de l’utilisateur actuel tapez la commande crontab –r
- La commande crontab –i est similaire à -r néanmoins elle propose à l’utilisateur des options oui/non avant de retirer le crontab
- La commande crontab –l vous permet d’afficher le contenu du fichier sur lequel vous êtes connecté.
Par le biais de cette commande, vous pouvez également voir si des fichiers crontab ont été crées. Si aucun fichier n’a été crée ce résultat apparaîtra :
En plus vous êtes en mesure de voir la liste des fichiers crontab des autres utilisateurs néanmoins il est primordial que vous soyez un « superuser ». Pour ce faire tapez crontab -u [utilisateur] -l
Maitriser la syntaxe de base est aussi important qu’apprendre les opérations de base. En général, un fichier crontab est constitué de deux parties : le planificateur et la commande.
Voici comment la commande est écrite : * * * * /bin/sh sauvegarde.sh
- * * * * /bin/sh sauvegarde.sh : cette commande vous permettra d’effectuer une sauvegarde toutes les minutes.
- 30 20* * * rm /home/sydtesting/tmp/* veut dire que le fichier tmp sera retiré de /home/sydtesting/tmp chaque jour à 20h30
Comment écrire sans faute la syntaxe Cron
Comme nous l’avons remarqué précédemment, un fichier crontab se constitue de cinq champs (chaque champ est représenté par un astérisque) afin de fixer la date et l’heure d’une tâche spécifique à faire d’une façon répétitive.
- Minute : La minute de l’heure à laquelle vous souhaitez que la commande soit faite (de 0 à 59)
- Heure : L’heure à laquelle vous souhaitez la commande sera faite (de 0 à 23)
- Jour du mois : Lejour du mois où la commande sera faite (de 1 à 31)
- Mois : Le mois où vous souhaitez que la commande en question soit exécutée.
- Jour de la semaine :Le jour de la semaine où vous voulez que la commande soit faite (de 0 à7)
Il existe également des caractères appropriés pour chaque fichier Crontab
- Astérisque (*) : ce caractère est utilisé pour la définition des paramètres de planification.
- Virgule (,) : Pour fixer deux ou plusieurs dates d’exécution de la même commande.
- Tiret (-) : afin de fixer le créneau horaire lorsque vous définissez de nombreuses dates d’exécution d’une commande
- Barre oblique (/) : cette commande vous permet de fixer des intervalles de temps prédéterminées dans un créneau spécifique.
- Last (L) : (Dernier en anglais). Cette commande est utilisée pour fixer le dernier jour d’une semaine ou d’un mois spécifique. A titre d’exemple, 4L signifie le dernier jeudi.
- Weekday (W) : (le jour de la semaine en anglais) alors cette commande a pour fonction de déterminer le jour de la semaine le plus proche d’un moment donné. Par exemple si vous souhaitez exécuter la commande le lundi le 3 et que le 1erest un samedi, vous devriez taper 1W.
- Hash (#) : Cette commande a pour but de préciser le jour de la semaine, suivi d’un nombre allant de 1 à 5. Pour déterminer un deuxième lundipar exemple tapez 1#2.
12 exemples de Cronjob
Maintenant que vous avez commencé à assimiler les syntaxes de base du Cronjob, nous allons essayer de les appliquer sur des exemples spécifiques pour comprendre davantage leurs fonctionnalités.
Tout d’abord, tenez en compte que vous serez automatiquement notifié du résultat de la commande par mail. Alors, si vous ne voulez plus recevoir ces mails tapez >/dev/null 2>&1 juste après la commande :
0 5 * * * /root/sauvegarde.sh >/dev/null 2>&1
Lorsque vous voulez transférer le contenu de l’email à un compte particulier tapez MAILTO suivi de l’adresse e-mail :
MAILTO= »[email protected] »
0 3 * * * /root/sauvegarde.sh >/dev/null 2>&1
Nous avons choisi une sélection d’exemples de syntaxe qui pourrait vous être utile ci-dessous :
- 0 0 * * * /bin/sh backup.sh
Grâce à cet exemple, vous serez en mesure d’effectuer une sauvegarde de la base de données à minuit une fois par jour.
- 0 8,20 * * * /bin/sh backup.sh
Cet exemple vous sera utile pour effectuer une sauvegarde de la base de données deux fois par jour à 8h et à 20h.
- 0 */8 * * * /scripts/monitor.sh
Cet exemple vous permettra de faire un suivi toutes les huit heures.
- */5 * * * * /home/user/script.sh
Pour exécuter un cron job pour le fichier script qui se trouve dans le répertoire home toutes les 5 minutes.
- 0 * 15 8 * /bin/sh backup.sh
Cet exemple vous permettra de faire une sauvegarde de la base de données touts les heures tous les 15 août.
- 0 0 * * 3 * /bin/sh
Afin d’effectuer une sauvegarde de la base de données à minuit tous les mercredis.
- * * 3,7,9 * /script/script.sh
Cet exemple vous permettra d’exécuter une commande en Mars, Juillet et Septembre.
- 10-59/5 5 * * * /home/user/script.sh
Pour effectuer une commande chaque 5 minutes à 5h débutant à partir de 5 h10.
- 0 9 1 */3 * /home/user/script.sh
Cet exemple vous permettra d’effectuer une commande trimestrielle le premier jour à 9h.
- * * * * /scripts/script.sh; /scripts/scrit2.sh
Si vous souhaitez déterminer un planning pour de multiples tâches sur un unique Cron job, tapez cette syntaxe Cron.
- @reboot /scripts/script.sh
Si vous voulez faire une tâche particulière à chaque fois que vous démarrez le système, tapez cette syntaxe Cron.
- 0 0 1 * * /home/user/script.sh
Pour effectuer une commande spécifique le premier jour de chaque mois.
Les autorisations de Cron
Deux fichiers ont une fonction cruciale pour l’usage des Cron jobs.
- /etc/cron.allow
Si le cron.allow existe, il est impératif qu’il contienne le nom de l’utilisateur pour que l’utilisateur ait la possibilité d’exploiter les cron jobs
- /etc/cron.deny
Lorsque au lieu d’un cron. allow, vous retrouvez cron.deny alors le nom de l’utilisateur ne doit pas figurer dans le fichier cron.deny pour qu’il puisse utiliser les cron jobs.
Conclusion
En plus d’être pratique et efficace, planifier une tâche automatiquement vous évitera les erreurs et les oublis. Vous ne manquerez plus jamais l’action.
Cron Job est une solution miracle pour gérer vos différentes tâches à temps. Tout ce que vous avez à faire est de connaitre la commande exacte et de choisir le moment idéal ainsi le tour est joué !