Math-Linux.com

Knowledge base dedicated to Linux and applied mathematics.

Accueil > Linux > Commande du jour > Programmation des actions(tâches) régulières : crontab

Programmation des actions(tâches) régulières : crontab

Toutes les versions de cet article : <English> <français>

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 :

root@ipower:~# nano -w /etc/cron.allow

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 :

nadir@ipower:~$ crontab -l
no crontab for nadir

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

nadir@ipower:~$ crontab -e

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 !

Dans la même rubrique

  1. Historique des commandes : history
  2. Archivage et compression de données : tar
  3. Taille du disque et de répertoire : df du
  4. Quelle est la version de mon noyau Linux : uname
  5. Comment éteindre ou redémarrer son pc : shutdown
  6. Nombre de lignes, de mots d’un fichier : wc
  7. Chronométrer une tâche : time
  8. Accéder à une page de manuel : man
  9. Lancer une commande un jour donné, à une heure donnée : at
  10. Affichage du calendrier en ligne de commande : cal
  11. Effacer l’écran et enlever certains caractères bizarres : clear reset
  12. Ouverture et fermeture de session : login, logout et password
  13. Rechercher un fichier : locate, find et which
  14. Comment synchroniser les données mémoire sur le disque : sync
  15. Télécharger de la musique et des vidéos .mp3, .wma, .avi, .mpg , divx avec google
  16. How to shut down or reboot: shutdown command
  17. SVN — Comment ignorer des fichiers ou des répertoires avec subversion ?
  18. Comment définir un timeout lors d’une tentative de connexion SSH ?
  19. phpMyAdmin : rechercher et remplacer dans une base MySQL
  20. Comment chiffrer/déchiffrer un fichier ou un répertoire sous Linux ?
  21. Trouver/déterminer les options avec lesquelles python a été compilé
  22. Trouver/déterminer la version de numpy de numpy que j’utilise
  23. Accélérer le processus de compilation et de build avec GNU make
  24. Comment faire un déni de service en BASH à l’aide de fork ?
  25. Linux Comment supprimer une imprimante en ligne de commande
  26. Linux comment se connecter à Windows via remote desktop RDP en CentOS 7 / RedHat 7
  27. Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
  28. Programmation des actions(tâches) régulières : crontab
  29. Faire un diff sur des fichiers distants en utilisant ssh
  30. Trouver les processus consommant le plus de cpu/mémoire à l’aide de la commande ps