Programmation des actions(tâches) régulières: crontab
Crontab permet de programmer des tâches régulières sur votre poste. Vous pouvez par exemple décider de programmer une sauvegarde tous les 13 du mois , ou bien réaliser des tâches administratives tels que le lancement de tâches system (vérification de mail, extinctions de postes du réseau, etc…).
Remarquons tout d’abord que crontab se distingue par rapport à l’utilitaire at, en effet crontab permet de programmer des tâches régulières, c’est à dire répétitives, alors que at n’exécute qu’une seule et unique tâche.
Autoriser un utilisateur(user) à utiliser crontab
Mon nom d’utilisateur c’est {nadir}, il faut tout d’abord autoriser {nadir} à utiliser la commande crontab. On se met en root, et on regarde si le fichier /etc/cron.allow existe. S’il existe on ajoute l’utilisateur {nadir} dans le fichier, s’il n’existe pas le créer et mettre {nadir}. En pratique:
ou bien utiliser (vi,gedit, nedit, kwrite, etc…) et remplissez le fichier en conséquence.
Bon maintenant nous avons autoriser l’utilisateur(user) {nadir} à utiliser crontab. Il est donc possible de spécifier des utilisateurs (users) ayant le droit d’utiliser crontab ou ceux n’ayant pas le droit d’utiliser cette commande. On utilise pour cela les fichiers /etc/cron.allow and /etc/cron.deny.
Si le fichier /etc/cron.allow existe, seul les utilisateurs mentionnés auront le droit d’utiliser la commande cron.
Si le fichier /etc/cron.allow n’existe pas, c’est le fichier
/etc/cron.deny qui est pris en compte: les utilisateurs mentionnés n’auront pas le droit d’utiliser la commande cron.
Si aucun des deux fichiers n’existe, seul le super utilisateur (root) aura le droit d’utiliser la commande cron.
Remarque: un fichier /etc/cron.deny vide signifie que tout les utilisateurs peuvent utiliser la commande cron.
Utilisation de crontab
Maintenant que j’ai autorisé l’utilisateur(user) {nadir}, ce dernier va pouvoir utiliser crontab. à€ l’aide de l’option crontab -l, je vais lister les tâches en cours:
On voit clairement que je n’ai pas défini de tâche. C’est le moment où jamais!
Dans un premier temps, on crée un fichier de tâches
Il faut à présent le remplir. La syntaxe est la suivante: m h dom mon dow command
- m pour minute(minute) comprise entre 0 et 59
- h pour hour(heure) comprise entre 0 et 23
- dom pour day of month(jour du mois) comprise entre 1 et 31
- mon pour month(mois) comprise entre 1 et 12
- dow pour day of week(jour de la semaine) comprise entre 0 et 7, le dimanche étant 0 ou 7, le lundi 1, etc …
- command pour la commande ou la suite de commande à exécuter.
Regardons à présent, quelques caractères spéciaux (métacaractères):
- *, si l’un des champs m h dom mon dow possède le caractère *, alors cela indique qu’il s’agit de toutes les minutes ou de toutes les heures ou tous les jours du mois ou tous les mois ou tous les jours de la semaine, cela dépend du champ où est placé *.
- / permet de spécifier une répétition.
- - permet de définir une plage.
- , pour spécifier plusieurs valeurs.
Voici quelques exemples:
*/5 * * * * commande permet d’exécuter une commande toutes les cinq minutes.
0 22 * * 1-5 commande permet d’exécuter une commande tous les jours de la semaine du lundi ou vendredi à 22h.
17 19 1,15 * * commande veut dire les premier et quinzième du mois à 19h17
23 0-16/2 * * * commande signifie toutes les 2 heures à la 23ième minute, entre minuit et 16 heures.
Il y a également des chaà®nes de caractères spéciales:
Chaà®ne | Action |
@reboot | exécution une fois au démarrage |
@yearly | exécution une fois par an, “0 0 1 1 *” |
@annually | exécution une fois par an, “0 0 1 1 *” |
@monthly | exécution une fois par mois, “0 0 1 * *” |
@weekly | exécution une fois par semaine, “0 0 * * 0**” |
@daily | exécution une fois par jour, “0 0 * * *” |
@midnight | execution une fois par jour, “0 0 * * *” |
@hourly | execution une fois par heure, “0 * * * *” |
A vous de jouer!
Si vous avez trouvé cet article ou ce site utile et souhaitez soutenir notre travail, veuillez envisager de faire un don. Merci !
Aidez-nousArticles dans la même rubrique
- Trouver les processus consommant le plus de cpu/mémoire à l'aide de la commande ps
- Trouver/déterminer les options avec lesquelles python a été compilé
- Trouver/déterminer la version de numpy de numpy que j'utilise
- Télécharger de la musique et des vidéos .mp3, .wma, .avi, .mpg , divx avec google
- Taille du disque et de répertoire: df du
- SVN -- Comment ignorer des fichiers ou des répertoires avec subversion?
- Rechercher un fichier: locate, find et which
- Quelle est la version de mon noyau Linux : uname
- Programmation des actions(tâches) régulières: crontab
- phpMyAdmin: rechercher et remplacer dans une base MySQL
- Ouverture et fermeture de session: login, logout et password
- Nombre de lignes, de mots d'un fichier: wc
- Linux Comment supprimer une imprimante en ligne de commande
- Linux comment se connecter à Windows via remote desktop RDP en CentOS 7 / RedHat 7
- Lancer une commande un jour donné, à une heure donnée: at
- How to shut down or reboot: shutdown command
- Historique des commandes: history
- Faire un diff sur des fichiers distants en utilisant ssh
- Effacer l'écran et enlever certains caractères bizarres: clear reset
- Comment synchroniser les données mémoire sur le disque: sync
- Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
- Comment faire un déni de service en BASH à l'aide de fork ?
- Comment éteindre ou redémarrer son pc: shutdown
- Comment définir un timeout lors d'une tentative de connexion SSH ?
- Comment chiffrer/déchiffrer un fichier ou un répertoire sous Linux?
- Chronométrer une tâche: time
- Archivage et compression de données: tar
- Affichage du calendrier en ligne de commande: cal
- Accélérer le processus de compilation et de build avec GNU make
- Accéder à une page de manuel: man
- Linux - Commande du jour