Le service **cron** (diminutif de *crontab*, pour **c**h**ron**o **tab**le) est le planificateur de tâches standard sur les systèmes UNIX/Linux. Il permet le déclenchement de commandes à des dates récurrentes et à la minute près.
D'autres options de configurations peuvent être pris en charge par défaut pour toutes les tâches crons via le fichier `/etc/default/cron`. Notamment en ce qui concerne le niveau de verbosité de la journalisation, définir des variables d'environnements, etc.
Pour lancer un script à **une date précise** : il suffit de le rendre exécutable et de le placer dans l'un des répertoires `/etc/cron.*` en fonction de la fréquence souhaitée.
Pour lancer un script à **une fréquence personnalisée** : il suffit de créer un nouveau fichier pour le placer dans `/etc/cron.d/` incluant une suite de paramètres pour indiquer la fréquence et l'utilisateur qui doit lancer la commande, par exemple :
> Attention : En cas d'erreur de syntaxe dans un script, toutes les autres tâches crons du même répertoire ne seront pas lancés ! Il faut donc réserver cette utilisation à des scripts bien vérifiés!
> Attention : Les noms de scripts contenant des points sont ignorés. Cette particularité est utile pour désactiver un script en ajoutant .disabled comme extension.
Cette commande permet d’éditer/lister/supprimer les tâches planifiées gérées par le service cron et sont automatiquement liées à des comptes utilisateurs. Elles sont conservées dans /var/spool/cron/. L'avantage de cette commande est la vérification syntaxique en quittant l'éditeur.
> Attention : Méfiez-vous de la touche "r" qui est proche de la touche "e" sur un clavier Azerty ou Qwerty où `crontab -r` efface définitivement toute votre crontab!
On peut utiliser `*` pour toutes les occurrences (tous les jours, ou toutes les heures, etc.). On peut également utiliser des listes à virgule (`3,5,7`) ainsi des intervalles (`2-6`) ; on peut aussi avoir des intervalles réguliers (`*/15`).
On peut utiliser les mots clés `@hourly`/`@daily`/`@weekly`/`@monthly` pour lancer à la première minute de chaque heure/jour/semaine/mois (à ne pas confondre avec les répertoires /etc/cron.* qui sont lancés à des dates particulières).
`MAILTO` : Un email est envoyé à l'utilisateur lorsqu'une commande génère une sortie (stdout/stderr). On peut changer le destinataire ainsi qu'en mettre plusieurs ou empêcher l'envoi d'un message avec `MAILTO=""`.
Lors d'un changement d'heure d'été ou d'hiver en France où un script est planifié pour être exécuté entre 2h et 3h du matin, il peut être lancé deux fois! Le service cron sait détecter ce souci mais par précaution, on évite d'en établir durant cette tranche horaire.