dimanche 18 décembre 2016

Raspberry épisode 12 : CRON ou comment planifier des actions

Bonjour,

Si vous souhaitez planifier des actions, des lancements de script, rien de tel qu'un bon CRON.
Oui, mais encore ...

Déjà on va faire le NANO l'éditeur par défaut:


En attendant, rajoutez la ligne suivante à la fin de votre fichier .bashrc :
export EDITOR=nano
Vous pouvez aussi écrire la commande suivante :
$ echo "export EDITOR=nano" >>  ~/.bashrc


Ensuite on ouvre l'outil CRON grâce à la commande
crontab -e

·         -e : modifier la crontab ;
·         -l : afficher la crontab actuelle ;
·         -r : supprimer votre crontab. Attention, la suppression est immédiate et sans confirmation !

ensuite pour chaque action ou script à lancer on ajoute une ligne de ce type:


* * * * * /home/pi/webcam.sh 2>&1

ce n'est pas très clair, mais voici un peu comment cela fonctionne :
(il s'agit d'un commentaire en raison du caractère #)


# m h  dom mon dow   command

 ·         m : minutes (0 - 59) ;

·         h : heures (0 - 23) ;
·         dom (day of month) : jour du mois (1 - 31) ;
·         mon (month) : mois (1 - 12) ;
·         dow (day of week) : jour de la semaine (0 - 6, 0 étant le dimanche) ;
·         command : c'est la commande à exécuter. (saisissez le chemin absolu de la commande)
 exemple pour tous les 1/4 d'heure
0,15,30,45 * * * * /path/to/command
Ou
*/15 * * * * /path/to/command
 
tous les jours à 15h47
 47 15 * * * touch /home/mateo21/fichier.txt

Toutes les heures à 47 minutes exactement.> & Donc à 00 h 47, 01 h 47, 02 h 47, etc.
47 * * * * commande
 
Tous les lundis à minuit (dans la nuit de dimanche à lundi). 
0 0 * * 1 commande

 
Tous les premiers du mois à 4 h du matin.
0 4 1 * * commande 

Tous les jours du mois de décembre à 4 h du matin.
0 4 * 12 * commande 
 
Toutes les heures les 4 décembre. 
0 * 4 12 * commande 
 
Toutes les minutes 
* * * * * commande 




Pour chaque champ, on a le droit à différentes notations :
·         5 (un nombre) : exécuté lorsque le champ prend la valeur 5 ;
·         * : exécuté tout le temps (toutes les valeurs sont bonnes) ;
·         3,5,10 : exécuté lorsque le champ prend la valeur 3, 5 ou 10. Ne pas mettre d'espace après la virgule ;
·         3-7 : exécuté pour les valeurs 3 à 7 ;
·         */3 : exécuté tous les multiples de 3 (par exemple à 0 h, 3 h, 6 h, 9 h…).


30 5 1-15 * * commande
À 5 h 30 du matin du 1er au 15 de chaque mois.
0 0 * * 1,3,4 commande
À minuit le lundi, le mercredi et le jeudi.
0 */2 * * * commande
Toutes les 2 heures (00 h 00, 02 h 00, 04 h 00…)
*/10 * * * 1-5 commande
Toutes les 10 minutes du lundi au vendredi.
 
faire un fichier de log


47 15 * * * touch /home/mateo21/fichier.txt >> /home/mateo21/cron.log

 
log + erreurs  
47 15 * * * touch /home/mateo21/fichier.txt >> /home/mateo21/cron.log 2>&1

Ne rien récupérer:
47 15 * * * touch /home/mateo21/fichier.txt > /dev/null 2>&1




Certes c'est un peu du copier/coller mais il n'y rien à ajouter :)