Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cron [Le 17/03/2023, 16:09] Feinerstoff [Tests] |
cron [Le 03/03/2024, 12:57] (Version actuelle) 86.202.8.12 [Distinction avec Anacron] meilleure présentation |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
[[Anacron]] est plutôt utilisé pour des machines à fonctionnement discontinu (comme les PC). | [[Anacron]] est plutôt utilisé pour des machines à fonctionnement discontinu (comme les PC). | ||
- | En effet, cron lance une tâche à un moment pré-déterminé (« le 14 janvier 2018 à 15h 30 »). 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. | + | 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]] utilise au contraire des indications de temps relatives (« une fois par jour / par semaine / par mois »). 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. | + | [[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 logiciels peuvent être utilisés sur un PC régulièrement éteint, mais Anacron a le gros avantage de lancer tous les traitements en retard à chaque allumage du PC, même si ceux-ci sont peu nombreux. Avec Cron, des allumages PC trop intermittents risquent d'annuler une grande partie des traitements programmés. | ||
===== Comment fonctionne Cron ===== | ===== Comment fonctionne Cron ===== | ||
Ligne 26: | Ligne 27: | ||
Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l'ordre__ (un champ qu'on ne souhaite pas renseigner doit être rempli avec une *) : | Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l'ordre__ (un champ qu'on ne souhaite pas renseigner doit être rempli avec une *) : | ||
- | * //minute// (les minutes se numérotent de 0 à 59) | + | * //minute// de lancement (les minutes se numérotent de 0 à 59) |
- | * //heure// (les heures se numérotent de 0 à 23) | + | * //heure// de lancement (les heures se numérotent de 0 à 23) |
- | * //jours dans le mois// (les jours se numérotes de 1 à 31) | + | * //jours dans le mois// de lancement (les jours se numérotes de 1 à 31) |
- | * //mois// (les mois se numérotent de 1 à 12, ou s'énoncent par leur libellé abrégé anglais - jan ; feb ; mar ; apr ; ...) | + | * //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// (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) | + | * //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. | * La commande à lancer. | ||
Ligne 69: | Ligne 70: | ||
* @midnight | * @midnight | ||
* @hourly | * @hourly | ||
+ | |||
+ | Exemples de lancements de tâches : | ||
+ | |||
+ | 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 : | Cf. aussi : | ||
man 5 crontab | man 5 crontab | ||
- | |||
Ligne 82: | Ligne 95: | ||
===== Commandes pour gérer les tâches planifiées Cron ===== | ===== Commandes pour gérer les tâches planifiées Cron ===== | ||
- | Pour examiner les tâches planifiées de l'utilisateur courant (le contenu de votre **crontab**, tapez : | + | Pour examiner les tâches planifiées de l'utilisateur courant (le contenu de votre **crontab**), tapez : |
<code bash> | <code bash> | ||
Ligne 184: | Ligne 197: | ||
Une autre façon de contrôler la bonne exécution des tâches cron est d'utiliser sa capacité à envoyer des courriels. | 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 : | Pour cela il suffit de renseigner la variable MAILTO dans votre fichier crontab, exemple : | ||
- | <code>MAILTO:"jean.dupont@example.com"</code> | + | <code>MAILTO="jean.dupont@example.com"</code> |
- | **Attention**, pour que cela fonctionne il faut que votre machine soit capable d'envoyer des courriels. | + | **Attention**, pour que cela fonctionne il faut que votre machine soit capable d'envoyer des courriels. (voir par exemple : [[msmtp|MSMTP]] ou [[postfix_systeme_satellite|Système Satellite pour Postfix]], [[exim4-satellite|Système satellite pour exim4]]) |
Pour plus d'informations, lisez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:tutoriel:console_ligne_de_commande|les commandes basiques]]). | Pour plus d'informations, lisez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:tutoriel:console_ligne_de_commande|les commandes basiques]]). |