Le terminal Linux nous permet de faire des choses au-delà de la simple saisie de commandes. Dans ce cas, nous parlerons de l'automatisation des tâches avec Cron. L’automatisation nous permet non seulement d’éviter les tâches répétitives, mais aussi de faire en sorte que l’ordinateur les exécute lorsque nous ne sommes pas présents. Ceci est particulièrement utile sur les serveurs.
Cron est un démon chargé d'effectuer des tâches à un intervalle de temps spécifique. Bien que sa fonction soit de gérer les tâches de maintenance régulières du système, nous pouvons en ajouter d'autres qui nous intéressent.
Lorsque nous parlons de démons, nous ne faisons pas référence à un petit diable à l’intérieur de notre ordinateur. En informatique, un démon est une application ou un processus qui s'exécute en arrière-plan du système d'exploitation sans nécessiter d'interaction directe avec l'utilisateur. Leurs responsabilités incluent les connexions réseau, l’impression, les serveurs Web et la surveillance des ressources.
Certaines de ses principales caractéristiques
- Ils démarrent généralement au démarrage du système.
- Ils s’exécutent en arrière-plan, sans que l’utilisateur ait besoin d’être conscient de leur existence.
- Ils sont conçus pour exécuter des tâches de manière permanente ou en réaction à certains événements.
Automatiser les tâches avec Cron
Si nous voulons dire à Cron quoi faire, nous pouvons le faire en utilisant un fichier crontab. Il s’agit simplement d’un fichier texte qui indique une série de commandes que cron doit exécuter à une date spécifiée. Il existe deux types de fichiers crontab : le fichier crontab créé par le système et le fichier crontab créé par l'utilisateur.
En aucun cas nous ne devons toucher au fichier crontab du système, qui est utilisé par Linux pour la configuration et la maintenance. Il est impossible de le modifier par erreur puisque ce fichier se trouve dans le dossier. /etc/crontab.
Créer nos propres crontabs
Cron exige que les tâches que nous lui assignons aient les paramètres indiqués dans cet ordre :
h: Heure de début dans la plage 0-23.
m: Minutes dans l'intervalle 0-59.
d: Jour du mois compris entre 1 et 31
mes: Spécifie le mois de l'année avec une plage de 1 à 12
s: Jour de la semaine avec l'intervalle 0-6
Ces données vont à l'intérieur du fichier crontab. Pour créer ce fichier, nous écrivons la commande :
crontab –u nombre de usuario –e
Si le crontab doit être destiné à l'utilisateur par défaut, nous pouvons omettre le paramètre -u
Lorsque nous l'exécutons pour la première fois, il nous indiquera que le fichier n'existe pas et proposera d'en créer un et de le modifier avec l'un des éditeurs installés sur l'ordinateur.
Voici quelques points à garder à l'esprit lors de l'édition de crontab :
- Chaque tâche se déroule sur une ligne
- Dans tous les cas, la date et l’heure à laquelle chaque tâche doit être exécutée doivent être indiquées. Pour indiquer la périodicité (par exemple mardi à 18 heures), des astérisques sont écrits à la place du reste des paramètres.(*)
- Il est possible d'attribuer plusieurs valeurs à un paramètre (Par exemple mardi et jeudi à 18h) en séparant les deux valeurs par des virgules.
- Des espaces doivent être laissés entre les paramètres.
- Spécifiez le répertoire dans lequel se trouve le lanceur de commandes.
Pour donner un exemple, si nous voulons redémarrer l’ordinateur tous les jours à 19 heures :
0 19 * * * /sbin/reboot
Pour que le redémarrage se fasse uniquement le mercredi, la consigne serait :
0 20 * * 3 /sbin/reboot.
Il existe quelques raccourcis qui permettent d’éviter d’écrire tous les paramètres :
@hourly:Si nous voulons exécuter une commande au début de chaque heure.
@du quotidien: Pour exécuter la commande au début de chaque journée.
@hebdomadaire: Exécutez la commande le premier jour de la semaine.
@mensuel: La commande est exécutée la première minute de chaque mois.
@annuel:Le même mais dans la première minute de chaque année.
Quelques exemples d’utilisation de cette commande :
@daily /bin/sh /ruta_al_script/nombre_del_script.sh Exécutez des instructions personnalisées dans un script bash au début de la journée.
@hourly /bin/python3 /ruta_al_script/nombre_del_script.py Exécute un script Python toutes les heures.
Nous devons toujours nous assurer que les scripts disposent d’autorisations d’exécution.