Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
cron [Le 03/02/2020, 16:45] – [Liens] liens vers askubuntu bcag2cron [Le 27/05/2026, 20:24] (Version actuelle) – [Choix de l'utilisateur cron] note important -> warning krodelabestiole
Ligne 1: Ligne 1:
 {{tag>système administration}} {{tag>système administration}}
  
-----+====== Programmer des tâches avec cron ====== 
 + 
 +===== Qu'est-ce que cron  ===== 
 + 
 +**[[wpfr>cron]]** est une application permettant d'exécuter automatiquement des scripts, des commandes ou d'autres applications à une date et une heure spécifiée précise, ou selon un cycle défini à l’avance. 
 + 
 +Chaque [[:utilisateur]] possède un fichier ''crontab'' associé, lui permettant d'indiquer les actions à exécuter.\\ 
 +**cron** est parfois appelé « planificateur de tâches » ou « gestionnaire de tâches planifiées ». 
 + 
 +<note>Sur les systèmes modernes, **cron** tend à être remplacé par des [[:creer_un_service_avec_systemd#qu_est_ce_qu_un_timer|timers]] [[:systemd]].</note> 
 + 
 +==== Distinction avec Anacron ==== 
 + 
 +  * **cron** est plutôt utilisé pour des machines à fonctionnement permanent (comme les serveurs). 
 +  * **[[:Anacron]]** est plutôt utilisé pour des machines à fonctionnement discontinu (comme les ordinateurs personnels). 
 + 
 +**cron** a plus d'options qu'**Anacron**. Comme ce dernier, il peut lancer une tâche à un intervalle déterminé : par exemple chaque 5e jour de la semaine, chaque heure, ou chaque mois. Contrairement à **Anacron**, il peut aussi lancer une tâche à un moment pré-déterminé (« le 14 janvier 2018 à 15h 30 »).\\ 
 +Limite par rapport à **Anacron** : si la machine n'est pas allumée, la tâche n'est pas lancée, et ne le sera jamais, même après le re-démarrage. Elle est perdue. Les prochaines seront évidement lancées, si la machine est allumée. 
 + 
 +**[[:Anacron]]** n'utilise que des indications de temps relatives (« une fois par jour / par semaine / par mois »). Autre différence d'avec **cron**, si vous avez demandé une tâche toute les semaines, et que votre PC est démarré seulement au bout de 10 jours, **Anacron** constatera le retard, et lancera donc la tâche juste après le démarrage de votre PC. 
 + 
 +Les 2 applications peuvent être utilisées sur un PC régulièrement éteint, mais **Anacron** a le gros avantage de lancer tous les traitements en retard à chaque allumage de l'ordinateur, même si ces derniers sont peu nombreux. Avec **cron**, des allumages PC trop intermittents risquent d'annuler une grande partie des traitements programmés. 
 + 
 +La syntaxe de **cron** est plus complexe que celle d'**Anacron**. 
 + 
 +===== Choix de l'utilisateur cron  =====
  
-====== Programmer des tâches avec CRON ======+Il est important de définir clairement sous quel compte [[:utilisateur]] est lancé **cron**. Ce peut-être vous (votre //user//), ou ce peut-être //root// (utilisateur qui a tous les droits).
  
 +Pour des opérations demandant normalement un mot de passe, il faudra utiliser **cron** en  //root//. En effet, l'utilisateur //root// peut tout faire sans mot de passe. 
 +<note warning>Soyez prudents avec ces scripts, ils peuvent tout faire, y compris casser votre système !</note>
  
 +Pour des opérations en espace utilisateur (dans votre [[:arborescence#répertoire personnel]] ''/home/$USER''), donc sans mot de passe, utilisez le **cron** de votre compte [[:utilisateur]].
  
 +Pour lancer le **cron** de votre espace [[:utilisateur]] : ''crontab -e''. Pour consulter ce **cron** sans l'ouvrir : ''contrab -l''.
  
 +Pour lancer le **cron** //root// : ''sudo crontab -e''. Pour consulter ce **cron** sans l'ouvrir : ''sudo contrab -l''.
  
-===== Qu'est-ce que Cron ? ===== +===== Comment fonctionne cron  =====
-**Cron** est le gestionnaire des tâches devant être exécutées à un moment précis.  Chaque utilisateur a un fichier **crontab**, lui permettant d'indiquer les actions à effectuer régulièrement.+
  
 +Les tâches planifiées **cron** sont définies au niveau du système dans le fichier ''/etc/crontab'' et dans le répertoire ''/etc/cron.d/''.\\
 +Pour modifier vos tâches planifiées entrez : ''crontab -e'' ou ''sudo crontab -e'' (lance un éditeur du fichier ''crontab'').
  
 +Voici une courte description de la structure d'une entrée dans un fichier ''crontab''. Les champs à renseigner sont, //dans l'ordre// :
 +  - //minute// de lancement (les minutes se numérotent de 0 à 59)
 +  - //heure// de lancement (les heures se numérotent de 0 à 23)
 +  - //jours dans le mois// de lancement (les jours se numérotes de 1 à 31)
 +  - //mois// de lancement (les mois se numérotent de 1 à 12, ou s'énoncent par leur libellé abrégé anglais - jan ; feb ; mar ; apr ; ...)
 +  - //jour de la semaine// de lancement (les jours se numérotent de 1 (lundi) à 7 (dimanche), ou s'énoncent par leur libellé abrégé anglais - sun ; mon ; tue ; wed ; thu ; fri ; sat)
 +  - La commande à lancer.
 +Un champ contenant une étoile ''*'' signifie '//tous//' => dans le champs "mois", ''*'' signifie donc : "//à lancer chaque mois//").
  
-===== Comment fonctionne Cron ? ===== +Récapitulatif des 5 premiers champs : 
-<note important>Il est conseillé de ne pas modifier /etc/crontab directement et d'utiliser plutôt la méthode décrite dans la section suivante (crontab -e)</note> +| | 1er | 2nd | 3è | 4è | 5è | 
-Pour utiliser **cron**, ajoutez simplement les entrées à votre fichier **crontab** (situé dans le répertoire /etc).  +| | * | * | * | * | *  | 
-Une entrée dans **cron**.  Les champs, dans l'ordre(( Le mois et le jour de la semaine permettent une abréviation (suivant les jours et mois en anglais), telle que **jan** pour janvier, **thu** pour jeudi (Thursday).)) : +| id | minute | heure | jour dans le mois | mois | jour de la semaine  | 
-    * //minute//, +| valeur | 0-59 | 0-23 | 1-31 | 1-12 ou jan, feb, mar… | 1-7 ou mon, tue, wed… |
-    * //heure//, +
-    * //jours dans le mois//, +
-    * //mois//. +
-    * //jour de la semaine// +
-  * La commande à lancer.+
  
 ---- ----
-Si __//jour du mois//__ et __//mois//__ sont définis, __//jour de la semaine//__ n'est pas nécessaire. Cependant, si le champ est indiqué en plus, la commande sera executée à la date //jour du mois// et //mois// mais AUSSI tous les  //jour de la semaine// définis. +Si //jour du mois// et //mois// sont définis, //jour de la semaine// n'est pas nécessaire. Cependant, si le champ est indiqué en plus, la commande sera exécutée à la date //jour du mois// et //mois// mais AUSSI tous les  //jour de la semaine// définis. 
-Exemple avec  <code>0 0 13 1 5 tâche</code>  la tâche sera exécutée le 13 janvier ET tous les vendredis.+Exemple avec  <code>0 0 13 1 5 tâche</code> 
 +La "tâche" (non définie ici) sera exécutée 0 min et 0 h après le démarrage, le 13e jour du 1er mois (janvier) //et// tous les vendredis (5e jour de la semaine).
  
----- L'exemple ci-dessous exécutera ///usr/bin/apt-get update//, chaque jour, de chaque mois à 03:05 (le **cron** fonctionne sur 24 h) avec les droits de l'utilisateur **nomdutilisateur**.+----  
 +L'exemple ci-dessous exécutera ''/usr/bin/apt-get update'' à 3:05 (5e minute de la 3e heure), chaque jour de chaque mois (les ''*'' dans "jour", "mois" et "jours de la semaine"), avec les droits de l'utilisateur //nomdutilisateur//.
 <code> <code>
 5 3  * *  * nomdutilisateur /usr/bin/apt-get update 5 3  * *  * nomdutilisateur /usr/bin/apt-get update
 </code> </code>
----- Vous pouvez faire tourner **cron** toutes les 5 minutes tout au long de la journée de travail (9am-5pm) avec un message : +----  
 +Vous pouvez faire tourner **cron** toutes les 5 minutes, entre 9 h à 17 h, et uniquement du lundi au vendredi, avec un message "Où en es tu ?" (on met ''*'' pour les colonnes "jour dans le mois" et "mois", puisqu'on utilise pas ces données) :
 <code> <code>
 */5 9-17 * * mon,tue,wed,thu,fri wall "Où en es tu ?" */5 9-17 * * mon,tue,wed,thu,fri wall "Où en es tu ?"
 </code> </code>
- 
  
 ou vous rappeler un anniversaire à 9h du matin le 10 janvier chaque année : ou vous rappeler un anniversaire à 9h du matin le 10 janvier chaque année :
- 
 <code> <code>
 0 9 10 jan  * echo "C'est l'anniversaire de ta Maman aujourd'hui !" >>~/readme 0 9 10 jan  * echo "C'est l'anniversaire de ta Maman aujourd'hui !" >>~/readme
Ligne 49: Ligne 83:
 Il existe des raccourcis intéressants : Il existe des raccourcis intéressants :
  
-    * @reboot # se lance au boot avec les droits utilisateurs, bien commode +    * ''@reboot'' se lance au boot avec les droits utilisateurs, bien commode 
-    * @yearly +    * ''@yearly'' 
-    * @annually +    * ''@annually'' 
-    * @monthly +    * ''@monthly'' 
-    * @weekly +    * ''@weekly'' 
-    * @daily +    * ''@daily'' 
-    * @midnight +    * ''@midnight'' 
-    * @hourly+    * ''@hourly''
  
-Cf aussi :+Exemples de lancements de tâches :
  
-   man 5 crontab+chaque demie-heure (''*/30'' est une instruction, pas deux) 
 +<code>*/30 * * * * commande</code>
  
 +chaque heure, au début de l'heure (0 minute au démarrage de l'heure) :
 +<code>0 * * * * commande</code>
 +chaque heure, à la 30e minute de l'heure :
 +<code>30 * * * * commande</code>
 +
 +chaque heure, mais uniquement entre 9h00 et 5h00 :
 +<code>0 9-5 * * * commande</code>
 +
 +Cf. aussi :
 +
 +   man 5 crontab
  
-Pour exécuter des applications graphiques, il faut tout d'abord être sûr que l'usager root a accès au //display// si jamais le contrôle d'accès est actif (cf. **xhost**), par exemple en exécutant (soi-même, ou en rajoutant la ligne dans un script de démarrage comme //rc.local//) : 
-<code> 
-xhost + local:root 
-</code> 
-Puis il faut préciser quel //display// utiliser lors de l'exécution de la commande à cron en ajoutant DISPLAY=//nom_du_display// au début de la commande à exécuter ; par exemple : 
-<code> 
-0 8 * * * DISPLAY=:0.0 totem "mon_fichier_son.mp3" 
-</code> 
  
 Vous pouvez générer le code grâce à ces outils en ligne : Vous pouvez générer le code grâce à ces outils en ligne :
Ligne 76: Ligne 114:
 https://crontab-generator.org https://crontab-generator.org
 http://www.cronmaker.com http://www.cronmaker.com
-===== Commande pour Cron ===== 
  
-Pour regarder le contenu de votre **crontab**, tapez :+===== Commandes pour gérer les tâches planifiées cron =====
  
-<code> +Pour examiner les tâches planifiées de l'utilisateur courant (le contenu de votre ''crontab''), entrez : 
-crontab -l +<code bash>crontab -l</code>
-</code>+
  
-Pour éditer le fichier de votre **crontab**, tapez :+Pour modifier vos tâches planifiées entrez : 
 +<code bash>crontab -e</code> 
 +pour celles nécessitant normalement un mot de passe (qui dès lors ne sera pas demandé) : 
 +<code bash>sudo crontab -e</code> 
 +et pour modifier celles d'un autre utilisateur : 
 +<code bash>sudo crontab -e -u nom_utilisateur</code>
  
-<code>crontab -e</code>+Quand vous sortez de l'éditeur, le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ''/var/spool/cron/crontabs/$USER'' mais doit seulement être modifié par l'intermédiaire de la commande ''[[man>crontab]]''.
  
-Quand vous sortez de l'éditeur, le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ///var/spool/cron/crontabs/<user>// mais doit seulement être édité par l'intermédiaire de la commande **crontab**.+<note important>Il faut auparavant indiquer que l'utilisateur a le droit d'utiliser ''crontab''.\\ 
 +Pour cela il faut créer un fichier ''/etc/cron.allow'' et y saisir le nom des utilisateurs autorisés à utiliser ''crontab''.</note>
  
-Note : sur xubuntu, il faut auparavant indiquer que l'utilisateur a le droit d'utiliser crontab. Pour cela il faut créer un fichier ///etc/cron.allow// et y saisir le nom des utilisateurs autorisés à utiliser crontab. +L'éditeur utilisé pour modifier le ''crontab'' peut être modifié par la commande :
- +
-L'éditeur utilisé pour modifier la crontab peut être modifié par la commande :+
 <code> <code>
 sudo update-alternatives --config editor sudo update-alternatives --config editor
 </code> </code>
-ou par :+ou par un :
   select-editor   select-editor
      
-<note tip>  Lors du premier accès à "crontab -e" un menu apparaît et donne le choix de l'éditeur à utiliser.</note>+<note tip> Lors du premier accès à ''crontab -e'' un menu apparaît et donne le choix de l'éditeur à utiliser.</note> 
 + 
 +Certains environnements de bureau, comme KDE dans sa « Configuration du système », offrent une interface graphique pour gérer les tâches **cron**. 
 ===== Lancement graphique ===== ===== Lancement graphique =====
-Si vous avez besoin d'une interface graphique par exemple pour utiliser zenity, kdialog, dialog ou encore totem, vlc, ... Il vous faudra effectuer plusieurs choses : + 
-1° ajouter un DISPLAY=:0 devant la commande dans le cron. +Par défaut, l'exécution de **cron** n'affiche rien. Si vous avez besoin de démarrer une interface graphique par exemple pour utiliser [[:zenity]], kdialog, dialog ou encore [[:totem]], [[:VLC]], ... Il vous faudra ajouter un ''DISPLAY=:0'' devant la commande lancée. Exemple :
-Exemple :+
 <code> <code>
 */5 * * * * DISPLAY=:0 zenity --info --text="Toto va bien" */5 * * * * DISPLAY=:0 zenity --info --text="Toto va bien"
 </code> </code>
  
-<note important>Il est parfois nécessaire de faire "xhost +" dans un terminal pour autoriser l'accès à X</note>+<note important> 
 +Il est parfois nécessaire de faire ''xhost +'' dans un terminal pour autoriser l'accès à [[:Xorg]].
  
-2° Si vous utilisez un script nécessitant des caractères tels que des accents, n'oubliez pas d'ajouter un export LANG="fr_FR.UTF-8" ou LANG="fr_BE.UTF-8" au début de ce script. D'autre part il est grandement conseillé de mettre le chemin absolu vers les exécutables et fichiers. +FIXME : À mettre à jour concernant [[:Wayland]]. 
-Exemple : +</note>
-<code> +
-#!/bin/bash+
  
-export LANG="fr_BE.UTF-8"+===== Caractères UTF8 =====
  
-/usr/bin/zenity --info --text="Toto va bien.\nReviens manger à la maison\!"+Si vous utilisez un script nécessitant des caractères tels que des accents, n'oubliez pas d'ajouter un export **LANG="fr_FR.UTF-8"** ou **LANG="fr_BE.UTF-8"** au début de ce script. 
 + 
 +===== Chemin des scripts, commandes à exécuter ou fichiers à utiliser ===== 
 + 
 +Une tâche **cron** est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d'environnement habituelles et en particulier ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'' ne sont pas connues. **cron** n'a donc pas de ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'' par défaut. 
 + 
 +Il faut donc :\\ 
 +- soit mettre les emplacements //complets// des exécutables dans les commandes et les scripts appelés par **cron**, par exemple : 
 +<code>/usr/bin/zenity --info --text="Toto va bien!"</code> 
 +- soit ajouter une ligne de ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'' dans le fichier ''crontab'', //avant// les appels de scripts. Cette ligne définie où il est très probable que se trouveront les programmes appelés : 
 +<code>PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin</code> 
 +- Soit faire les deux si on est très prudent :). 
 + 
 +Enfin, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l'exécution de votre script par un changement de répertoire : 
 +<code bash> 
 +* * * * * cd /home/mon-compte/wokspace/ && /home/mon-compte/miniconda3/bin/python3 mon_script.py
 </code> </code>
  
 +===== Utilisation des répertoires /etc/cron.hourly, daily, weekly, monthly  =====
 +
 +Si vous avez examiné le fichier ''/etc/crontab'' de votre système, vous avez remarqué qu'il contient des tâches pour exécuter toutes les heures, jours, semaines, mois les fichiers contenus dans les répertoires ''/etc/cron.hourly'', ''/etc/cron.daily'', ''/etc/cron.weekly'', ''/etc/cron.monthly''.
 +
 +Si vous avez besoin qu'un script soit exécuté toutes les heures au niveau du système (par //root//), il suffit donc de le placer dans le répertoire ''/etc/cron.hourly'' et de le rendre exécutable. De même s'il s'agit d'une tâche quotidienne (//daily//), hebdomadaire (//weekly//) ou mensuelle (//monthly//).
 +
 +===== Utilisation du répertoire /etc/cron.d  =====
 +
 +IL est possible d'éditer des services à exécuter automatiquement en rajoutant un fichier du nom que l'on souhaite dans le répertoire /etc/cron.d
 +
 +Attention contrairement aux lignes d'un fichier ''crontab'', elles doivent préciser quel utilisateur (nom_utilisateur dans l'exemple ci-dessous)  exécute le script :
 +<code>* * * * * nom_utilisateur /bin/touch /home/me/ding_dong</code>
  
 ===== Autres Considérations ===== ===== Autres Considérations =====
  
-Les commandes ci-dessus sont stockées dans un fichier **crontab** appartenant à votre compte d'utilisateur et exécutées avec votre niveau des permissions. Si vous voulez exécuter, régulièrement, une commande exigeant un plus haut niveau de permission (root), vous devez utiliser le fichier **crontab** root (ou racine) :+Les commandes ci-dessus sont stockées dans un fichier ''crontab'' appartenant à votre compte d'utilisateur et exécutées avec votre niveau des permissions. Si vous voulez exécuter, régulièrement, une commande exigeant un plus haut niveau de permission (//root//), vous devez utiliser le fichier ''crontab'' //root// :
  
 <code>sudo crontab -e</code> <code>sudo crontab -e</code>
  
-Remarque : cette commande édite directement le fichier // /var/spool/cron/crontabs/<utilisateur>// (avec ici root comme utilisateur).+<note>Cette commande édite directement le fichier ''/var/spool/cron/crontabs/root''.</note>
  
-Dans ce cas il ne faut pas préciser l'utilisateur sinon ''root'' est compris comme une instruction à exécuter et il ne se passera rien. +Une autre façon de créer une tâche planifiée devant être exécutée par //root// est d'ajouter une entrée au fichier ''/etc/crontab'' ou de créer un nouveau fichier dans ''/etc/cron.d'' (cf. point précédent) en précisant bien //root// comme nom d'utilisateur.
-  * Bon : <code>@midnight /sbin/shutdown -r now></code> +
-  * Mauvais : <code>@midnight root /sbin/shutdown -r now</code>+
  
-(Vérifié avec ubuntu-server 14.04.1, xubuntu 14.04.1 et xubuntu 16.0.1)+==== Tests ====
  
-Selon les commandes à exécuter, vous devrez changer la variable //PATH// des utilisateurs ayant les droits //root// en mettant la ligne suivante au dessus de leurs fichiers **crontab** :+Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer la tâche dans le ''crontab'' pour qu'elle s'exécute quelques minutes plus tard et contrôler le résultat, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile d'envoyer les retours des commandes dans un fichier texte pour voir les succès ou les échecs, par exemple :
  
-<code> +<code bash> 
-PATH=/usr/sbin:/usr/bin:/sbin:/bin+echo "Sauvegarde de nuit: $(date)" >>/tmp/mybackup.log
 </code> </code>
  
-Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer le travail dans la **crontab** pour qu'il se fasse quelques minutes plus tard et de vérifier les résultats, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile de mettre les résultats des commandes dans un fichier texte qui notent les succès ou les échecs, par exemple :+Une autre façon de contrôler la bonne exécution des tâches **cron** est d'utiliser sa capacité à envoyer des courriels. 
 +Pour cela il suffit de renseigner la variable MAILTO dans votre fichier ''crontab'', exemple : 
 +<code bash>MAILTO="jean.dupont@example.com"</code> 
 +<note important>Pour que cela fonctionne il faut que votre machine soit capable d'envoyer des courriels. (voir par exemple : [[:msmtp]] ou les systèmes satellites pour [[:postfix_systeme_satellite|Postfix]] ou [[:exim4-satellite|exim4]]).</note> 
 +Au contraire, si vous ne voulez pas envoyer d’emails, ajouter simplement comme 1ère ligne utile ''MAILTO=""''.
  
-<code> +Pour plus d'informations, lisez les pages du //man// pour **[[man>cron]]** et ''[[man>crontab]]'' (le //man// est détaillé sur [[:tutoriel:console_ligne_de_commande|les commandes basiques]]). 
-echo "Sauvegarde de nuit: $(date)" >>/tmp/mybackup.log+ 
 +Sur une machine qui n'est pas allumée en permanence, **[[:anacron]]** (installé par défaut) permet de s'assurer que les taches **cron** sont bien exécutées en vérifiant à intervalles régulier si une tâche n'est pas en retard. 
 + 
 +==== Journal ==== 
 + 
 +Par défaut on retrouve des logs de commandes **cron** dans ''/var/log/syslog'' mais ce n'est pas très pratique. 
 + 
 +Pour activer le log spécifique de **cron**:\\ 
 +Éditer le fichier ''/etc/rsyslog.d/50-default.conf'' qui est appelé par ''/etc/rsyslog.conf'' et décommenter la ligne : 
 +<code bash> 
 +cron.*                         /var/log/cron.log
 </code> </code>
  
-**NOTA IMPORTANT:** Dans le cas où votre **crontab** refuserait de s'exécuter, vérifiez que vous disposez bien du package mailutils. +Relancer //rsyslog// et //cron// 
-En effet, **cron** logue ses actions en envoyant un mail à l'utilisateur courant. +<code bash> 
-<code> +sudo systemctl restart rsyslog 
-sudo apt-get install mailutils+sudo systemctl restart cron
 </code> </code>
-Si vous ne voulez ou pouvez pas envoyer d'email, pas besoin d'installer mailutils, il suffit de rajouter au tout début : +Il ne reste plus qu'à surveiller les logs de **cron**: 
-<code> +<code bash> 
-MAILTO=""+sudo tail -f /var/log/cron.log
 </code> </code>
-Et si ça ne marche toujours pas, alors il se peut que le démon **cron** soit planté, il faut le réinitialiser en faisant : 
-<code> 
-sudo service cron restart 
-</code>  
  
-Pour plus d'information, regardez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:tutoriel:console_ligne_de_commande|les commandes basiques]]). Si votre machine est régulièrement éteinte, vous pouvez également être intéressé par **at** (fait partie de l'installation de base d'Ubuntu) et **[[anacron|anacron]]** (installé par défaut) qui fournit d'autres approches aux tâches programmées.+Si on préfère des tâches silencieuses((https://unix.stackexchange.com/questions/163352/what-does-dev-null-21-mean-in-this-article-of-crontab-basics)), ajouter à la fin des lignes **cron** : 
 +<code bash> > /dev/null 2>&1</code> 
 +pour rediriger les messages //et// les erreurs vers le « trou noir ».
  
-**NOTE:**  +===== Voir aussi =====
-pour modifier crontab directement (par un script par exemple)  +
-<code> +
-crontab <(crontab -l ; echo "0 * * * * echo plop") +
-</code> +
  
-===== Liens ===== +  * **(//en//)**  [[https://help.ubuntu.com/community/CronHowto]]
-  * [[https://help.ubuntu.com/community/CronHowto]] (EN)+
   * [[http://www.math-linux.com/spip.php?article16|Programmation des tâches régulières : crontab]]   * [[http://www.math-linux.com/spip.php?article16|Programmation des tâches régulières : crontab]]
-  * [[:nano|Editeur de texte de Crontab : gnu nano]] +  * [[:nano|Éditeur de texte GNU nano]] 
-  * [[incron]] : effectuer une action, commande(s), scripts, etc, en cas de modifications de fichiers ou de répertoires donnés+  * [[:incron]] : effectuer une action, commande(s), scripts, etc, en cas de modifications de fichiers ou de répertoires donnés
   * [[https://www.easycron.com/|EasyCron - Cron Jobs Alternatives]]   * [[https://www.easycron.com/|EasyCron - Cron Jobs Alternatives]]
   * [[:Anacron]] : planificateur de commande « anachronique »   * [[:Anacron]] : planificateur de commande « anachronique »
-  * [[fcron]] : programmer des tâches devant être exécutées/+  * [[:fcron]] : programmer des tâches devant être exécutées/
   * [[https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working|why crontab scripts are not working?]]   * [[https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working|why crontab scripts are not working?]]
  
 ---- ----
- +//[[:Contributeurs]] : Martigo, l'entreprise Simplistay, [[:utilisateurs:krodelabestiole]].//
-//Contributeurs : Martigo, [[:contributeurs|Les contributeurs d'Ubuntu-fr]], l'entreprise Simplistay.//+