Un travail Cron ou Cron est un planificateur temporel commun dans les systèmes Linux/Unix. Il planifie des tâches utilisateur spécifiées pour qu'elles s'exécutent périodiquement à une date, une heure ou des intervalles fixes. La plupart de ces tâches sont des scripts pour exécuter des fonctions telles que des sauvegardes, etc. Pour créer ces tâches cron, nous utilisons les commandes crontab. Un crontab est une commande/utilitaire UNIX utilisé pour créer et gérer des tâches cron.
Comme vous le verrez ci-dessous, créer et éditer une tâche cron est assez simple. La partie la plus étonnante est que vous n'avez pas besoin de redémarrer cron ou même votre PC après avoir créé ou modifié une tâche cron. Enregistrez simplement le fichier et vous êtes prêt à partir.
Utilisations courantes des tâches Cron
- Réglage de l'heure matérielle : Le Network Time Protocol est utilisé par de nombreux ordinateurs pour régler l'heure système mais ne règle pas l'heure matérielle. Avec cron, vous pouvez définir l'heure du matériel en fonction de l'heure du système.
- Planification de tâches et exécution de programmes exécutant des programmes quotidiens : avec le service cron, vous pouvez exécuter de nombreux services système qui nécessitent une invite quotidienne comme Logwatch.
- Nettoyage automatique du répertoire, exécution des programmes de sauvegarde et bien plus encore.
Éléments de base d'une commande cron
La syntaxe standard de la crontab est la suivante :
a b c d e USERNAME /chemin/vers/sortie du script
1.L'heure et la date ainsi que le degré de répétitivité du travail sont spécifiés par les cinq champs :
-
- une: Minutes : (allant de 0 - 59)
- b : Horaires : (allant de 0 - 23 )
- c : Jours : (allant de 0 - 31 )
- ré: Mois : (allant de 0 - 12 )
- e : Jours de la semaine : (allant de 0 - 7. )
- une: Minutes : (allant de 0 - 59)
Remarque : les jours commencent par le lundi. 0 et 7 représentent dimanche
2. NOM D'UTILISATEUR
: N'oubliez pas de le remplacer par votre nom d'utilisateur
3. L'emplacement spécifique et le script à exécuter par cron sont spécifiés par le troisième segment :
/chemin/vers/script
4. La dernière section définit la notification à l'utilisateur à la fin du travail comme moyen de garder une trace des tâches :
production
Cependant, votre boîte de réception peut être pleine de tâches mineures qui sont fréquemment canalisées. Pour éviter cela, vous pouvez désactiver la sortie automatique des e-mails en ajoutant la chaîne ci-dessous à votre commande cron :
>/dev/null 2>&1 e.g a b c d e NOM D'UTILISATEUR /chemin/vers/script>/dev/null 2>&1
De plus, cron utilise quatre autres valeurs utilisées pour spécifier plusieurs valeurs dans un champ. Elles sont:
- Astérisque (*) : Fait référence à toutes les valeurs d'un champ.
- La virgule (,): Utiliser pour séparer une liste de valeurs dans la commande cron.
- Tiret (-): Spécifier une plage de valeurs.
- Barre oblique (/) : divise une valeur en différentes étapes.
Configuration des tâches cron
Les commandes crontab sont responsables de la création et de la modification des tâches cron car les fichiers cron ne doivent pas être modifiés directement. La crontab définit comment vous pouvez créer, modifier, répertorier, déboguer, installer et désinstaller les tâches cron.
Avant de commencer avec les tâches cron, il est essentiel de vous assurer que votre bureau ou serveur Linux est à jour en exécutant les commandes ci-dessous :
mise à jour sudo apt mise à jour sudo apt
Si vous n'avez pas installé le package cron sur votre système, installez-le avec la commande ci-dessous :
sudo apt-get install cron
Comment modifier le fichier crontab?
Pour terminer le processus, vous devrez configurer la tâche cron. L'utilisateur connecté lors de la création d'une tâche cron en devient automatiquement le propriétaire. Cela peut être changé en créant un propriétaire de tâche qui sera en charge de gérer la tâche cron, comme nous le verrons dans cet article.
Pour ouvrir le fichier de configuration crontab pour l'utilisateur actuellement connecté, exécutez la commande ci-dessous :
crontab -e
Vous serez invité par le système à choisir un éditeur approprié. Dans notre cas, nous choisirons la première option (nano éditeur).
Vous pouvez ajouter une tâche planifiée par ligne selon vos préférences.
Après avoir ajouté les tâches, terminez en sauvegardant le fichier et quittez. Toutes les instructions fournies seront lues et exécutées par le démon cron. Les modifications seront appliquées même sans redémarrer votre système car le référentiel est mis à jour automatiquement.
Modifier la crontab pour un autre utilisateur
Crontab peut être modifié pour différents utilisateurs à l'aide d'une commande dans la syntaxe ci-dessous :
crontab -u autre_nom_utilisateur -e
Comment utiliser des caractères spéciaux dans les commandes crontab
Les caractères et les opérateurs dictent une plus grande personnalisation de votre système car ils étendent les capacités d'une tâche cron.
- La barre oblique est utilisée pour diviser une chaîne de temps en étapes spécifiées. Par exemple, pour exécuter une sauvegarde toutes les 30 minutes, nous pouvons utiliser :
*/30 * * * *
- L'astérisque (*) est utilisé pour exécuter toutes les valeurs à exécuter. Par exemple:
*/15***
- Le tiret (-) est utilisé pour déterminer la plage d'activités, comme le nombre de jours. Pour
exemple, en exécutant le code à 6 heures du matin tous les jours de la semaine, nous utiliserons ;
0 6* * 1-5 /racine/sauvegarde.sh
Ici, 06 signifie 6 heures du matin 1-5 signifie le nombre de jours (du lundi au vendredi).
- Une virgule spécifie les instances individuelles lorsque le code doit s'exécuter :
0 4 * * 2,4 /root/backup.sh
La commande ci-dessus exécuterait votre code de script à 4 heures du matin le mardi et le jeudi.
- Vous pouvez également combiner divers caractères génériques pour personnaliser encore plus vos commandes. Par exemple, pour exécuter notre script tous les deux jours à 35 minutes après l'heure, nous pouvons utiliser la commande ci-dessous :
35 1-23/2 * * * /chemin/vers/script/script.sh
1-23 spécifie la plage d'heures, /2 définit l'intervalle à toutes les deux heures.
Options de Cron
- Lister toutes les tâches cron
Vous voudrez peut-être répertorier les tâches cron dans votre système sans déverrouiller le fichier de configuration crontab. Cela peut être fait en lançant votre terminal et en tapant la commande ci-dessous :
crontab -l
Cette commande répertorie toutes les tâches cron présentes dans votre système.
- Supprimer toutes les tâches crontab
Pour supprimer toutes les commandes crontab, vous pouvez utiliser la commande ci-dessous :
crontab -r
- Supprimer une tâche cron pour un autre utilisateur.
crontab -r -u autre-nom d'utilisateur
Utiliser des chaînes dans Crontab
Les chaînes sont des outils extrêmement utiles pour les développeurs car elles évitent l'écriture répétitive de segments de code. Heureusement, les crontabs prennent en charge diverses valeurs de chaînes. Ils incluent:
@ toutes les heures :
-identique à - " 0 * * * * " ( s'exécute une fois tous les heure)@minuit:
-identique à - " 0 0 * * * " ( s'exécute une fois tous les journée)@du quotidien:
comme minuit@hebdomadaire:
-identique à - " 0 0 * * 0 " ( s'exécute une fois tous les semaine)@mensuel:
-identique à - " 0 0 1 * * " ( s'exécute une fois tous les mois)@annuellement:
-identique à - " 0 0 1 1 * " ( s'exécute une fois tous les an)@annuel:
similaire à @annuellement@reboot :
Exécuté une fois après chaque redémarrage/redémarrage/démarrage.
Un bon exemple; si vous avez un script de sauvegarde que vous souhaitez exécuter tous les jours, utilisez la commande ci-dessous :
@daily /chemin/vers/script_de_sauvegarde.sh
Exemples de tâches cron
Voici une liste des tâches cron de base qui peuvent être utilisées pour commencer :
-
- Pour exécuter un script toutes les minutes :
* * * * * /votre/script/chemin.sh
- Pour exécuter un script toutes les 40 minutes :
40 * * * * /votre/script/chemin.sh
- Pour exécuter un script toutes les heures :
0 * * * * /votre/script/chemin.sh
- Pour exécuter un script chaque minuit :
0 0 * * * /votre/script/chemin.sh
- Pour exécuter un script toutes les 23 minutes après minuit, 2 h 00 et 4 h 00 tous les jours :
23 0-23/2 * * * /votre/script/chemin.sh
- Pour exécuter un script à 4.05 tous les dimanches.
5 4 * * soleil /votre/script/chemin.sh
- Pour exécuter un script à 22h en semaine.
0 22 * * 1-5 /votre/script/chemin.sh
- Pour exécuter un script le 1er décembre - minuit.
0 0 0 12 * /votre/script/chemin.sh
- Pour exécuter un script le samedi à minuit.
0 0 * * 6 /votre/script/chemin.sh
- Pour exécuter un script toutes les heures.
0 * * * * /votre/script/chemin.sh
- Pour exécuter un script toutes les minutes :
Avec ces exemples de base, vous comprendrez mieux la séquence et comment elle peut être modifiée.
Limiter l'accès à Cron
Nous voyons que les tâches cron peuvent être très utiles, surtout lorsque vous souhaitez automatiser vos tâches. Cependant, cela peut aussi être risqué si le système permet à n'importe quel utilisateur de créer une tâche cron. Même si cela n'a pas d'impact sur les données personnelles, certaines tâches cron peuvent prendre une quantité assez importante de ressources système, retardant ainsi le PC. Pour éviter de tels scénarios, l'administrateur système (utilisateur root) peut créer un /etc/cron.Autoriser
ou alors /etc/cron.Nier
le fichier qui contient uniquement les utilisateurs qui peuvent 'créer/ne pas créer' un travail de cron.
le /etc/cron.Autoriser
le fichier contient des utilisateurs qui peuvent créer, modifier, afficher ou supprimer des fichiers crontab. Si ce fichier n'existe pas, tous les utilisateurs peuvent créer et gérer des tâches cron autres que celles du /etc/cron.Nier
déposer. Si aucun de ces fichiers n'est présent, des privilèges de superutilisateur sont requis pour exécuter la commande crontab.
Maintenant que vous avez empêché les utilisateurs non root de créer des tâches cron s'ils en avaient déjà, vous pouvez envisager d'ajouter leurs tâches cron dans le fichier crontab racine. Mais voici un casse-tête - En ajoutant leurs tâches cron à la crontab racine, cela n'exécute-t-il pas leurs tâches cron en tant que root? Eh bien, voici l'importance du champ USERNAME dont nous avons parlé ci-dessus dans la syntaxe de la commande cron. Par exemple, la commande ci-dessous :
0 * * * * fosslinux /chemin/vers/script.sh
S'exécutera en tant qu'utilisateur "fosslinux" tâche cron et non en tant qu'utilisateur root.
Conclusion
Vous disposez désormais d'un guide clair sur l'utilisation des tâches Cron pour automatiser diverses tâches sur votre système. Cela ne devrait pas vous confondre avec les applications de démarrage. Utilisez les exemples ci-dessus pour essayer d'automatiser des scripts simples. Avec le temps, vous pouvez combiner des caractères spéciaux et des caractères génériques pour effectuer des tâches beaucoup plus banales. Si vous ne faites que commencer, ce serait formidable de lire notre article sur le didacticiel de script bash avec des exemples qui vous aideront à créer votre premier script.