Créer des fichiers de logs pour les tâches cron

Les tâches cron peuvent échouer pour de nombreuses raisons (erreur de syntaxe, commande non disponible dans le contexte de cron, etc.), l'enregistrement de la sortie des commandes permet d'historiser et d'identifier les erreurs afin de les corriger.

La commande date accepte des arguments afin d'afficher différentes parties d'une date, par exemple :

$ date '+%Y-%m'

Retourne cette valeur :

2018-07

On peut se servir de cette commande afin d'obtenir la date courante au format que l'on souhaite.

Par exemple pour une tâche exécutée toutes les heures, on déclare une variable date qui stocke la date actuelle et qui sera utilisée pour créer un fichier contenant l'année et le numéro du mois :

0 * * * * date=$(date '+\%Y-\%m') ; echo "test" >> ~/${date}_test.log 2>&1"' . Cela créera un fichier ~/2017-07_test.log.

On peut également ajouter les heures, minutes et secondes

0 * * * * datetime=$(date '+\%Y-\%m-\%d_\%H-\%M-\%S') ; echo "test" >> ~/${datetime}_test.log 2>&1"'

Cela créera un fichier ~/2017-07-23_23-17-54_test.log.

Mise à jour du 30 juillet 2018 : ajout d'antislash \ afin d'échapper les signes pourcent %, l'échappement est nécessaire dans une ligne cron.