« Cron » : différence entre les versions
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 32 : | Ligne 32 : | ||
# toutes les heures | # toutes les heures | ||
0 * * * * $HOME/mon_script.sh | 0 * * * * $HOME/mon_script.sh | ||
# tout les 1er de chaque mois à 8h00 | |||
0 8 1 * * $HOME/mon_script.sh | |||
# after reboot | |||
@reboot $HOME/mon_script.sh | |||
# 60 seconds after reboot | |||
@reboot sleep 60 && $HOME/mon_script.sh | |||
</filebox> | </filebox> | ||
Ligne 68 : | Ligne 76 : | ||
# désactiver l'envoie d'emails | # désactiver l'envoie d'emails | ||
MAILTO="" | MAILTO="" | ||
</filebox> | </filebox> | ||
{{info | Par défaut: | {{info | Par défaut: | ||
Ligne 81 : | Ligne 82 : | ||
* sujet {{boxx|Cron <user@hostname> command}}}} | * sujet {{boxx|Cron <user@hostname> command}}}} | ||
=== Envoyer un email seulement en cas d'erreur === | === [http://habilis.net/cronic Envoyer un email seulement en cas d'erreur avec Cronic] === | ||
Installer {{boxx|cronic}} | |||
<filebox fn=crontab lang=bash> | <filebox fn=crontab lang=bash> | ||
0 * * * * cronic /path/mon_script.sh | |||
0 * * * * | |||
</filebox> | </filebox> | ||
=== Installation de msmtp === | === Installation de msmtp === |
Dernière version du 1 octobre 2023 à 12:31
crontab
# lister les tâches crontab -l # éditer les tâches crontab -e |
Utiliser sudo pour accéder au cron de root. |
Spécifier le chemin complet des exécutables. |
crontab |
# format # mm hh DD MM W /path/progam # run every day at 4:00 am 0 4 * * * $HOME/mon_script.sh # toutes les minutes se terminant par 0 ou 5, toutes les 5 minutes # entre 9:00 et 16:55 # pas de restriction sur day_of_month # pendant les mois de janvier à mai (inclu) et septembre à décembre, tous sauf juin, juillet et août # du lundi au vendredi (inclu) *0,*5 9-16 * 1-5,9-12 1-5 $HOME/mon_script.sh # toutes les 30 minutes */30 * * * * $HOME/mon_script.sh # toutes les heures 0 * * * * $HOME/mon_script.sh # tout les 1er de chaque mois à 8h00 0 8 1 * * $HOME/mon_script.sh # after reboot @reboot $HOME/mon_script.sh # 60 seconds after reboot @reboot sleep 60 && $HOME/mon_script.sh |
mm | hh | DD | MM | W |
---|---|---|---|---|
minute 0 - 59 | hour 0 - 23 | day_of_month 1 - 31 | month 1 - 12 | day_of_week 0 = Sunday - 6 |
Éditeur par défaut
~/.bashrc |
# par défaut l'éditeur est vi export EDITOR=/usr/bin/nano |
# forcer l'éditeur sudo EDITOR=nano crontab -e |
Si MAILTO est définit, la sortie du script est envoyée par email.
crontab |
MAILTO=compte@gmail.com MAILFROM=compte@mon-domaine.fr # ne fonctionne pas # MAILFROM par défaut: root@hostname # désactiver l'envoie d'emails MAILTO="" |
Par défaut:
|
Envoyer un email seulement en cas d'erreur avec Cronic
Installer cronic
crontab |
0 * * * * cronic /path/mon_script.sh |
Installation de msmtp
Si Postfix n'est pas déjà installé.
# installation sudo pacman -S msmtp-mta # configuration system sudo cp /usr/share/doc/msmtp/msmtprc-system.example /etc/msmtprc # ou configuration par utilisateur cp /usr/share/doc/msmtp/msmtprc-user.example ~/.msmtprc # test sendmail -t << END_MESSAGE > To: xxx@gmail.com > Subject: sujet > message > END_MESSAGE echo "message" | mail -s "sujet" -r expéditeur@mon-domaine.fr destinataire@gmail.com |
~/.msmtprc |
# Accounts will inherit settings from this section defaults auth on tls on tls_trust_file /usr/share/ca-certificates/mozilla/Thawte_Premium_Server_CA.crt # A first gmail address account gmail host smtp.gmail.com port 587 from xxx@gmail.com user xxx@gmail.com password xxx tls_trust_file /etc/ssl/certs/ca-certificates.crt # Set a default account account default : gmail |
Modifier crontab depuis un script
# commenter une ligne crontab -l | sed 's|^[^#].*/script.sh|#\0|' | crontab - # décommenter une ligne crontab -l | sed 's|^#\(.*/script.sh\)|\1|' | crontab - |
Anacron
Cron n’exécute pas les tâches qui étaient programmées lorsque l'ordinateur était éteint.
Sur les postes de travail qui ne sont pas en permanence allumés, il est préférable d'utiliser « Anacron » pour s'assurer que si le poste était éteint à l'heure où la tâche était prévu, celle-ci ne sera pas perdu mais exécutée au prochain démarrage du poste.
Anacron exécute les scripts présents dans les répertoires suivants:
- /etc/cron.hourly/
- /etc/cron.daily/
- /etc/cron.weekly/
- /etc/cron.monthly/
Les scripts du dossiers « /etc/cron.hourly/ » ne fonctionne pas en asynchrone Si l'ordinateur n'est pas allumé, la tache n'est pas lancée au prochain démarrage. |
Anacron utilise l'utilisateur root pour exécuter ses tâches. |
Configuration
/etc/anacrontab |
SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # the maximal random delay added to the base delay of the jobs RANDOM_DELAY=45 # the jobs will be started during the following hours only START_HOURS_RANGE=3-22 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly |
Comme il est possible d'ajouter des scripts dans les dossiers « /etc/cron.*/ », il n'est pas nécessaire de modifier la configuration d'Anacron. |
Fichiers timestamp
Le dossier « /var/spool/anacron » contient les fichiers timestamp. Ces fichiers contiennent la date de la dernière exécution de leur tache.
/var/spool/anacron/cron.weekly |
20140616 |
Ici la tache cron.weekly a été exécutée le 16/06/2014. C'est cette date qui servira a calculer quand cette tache devra a nouveau être exécutée.
Debug
# affiche la sortie lorsque des tâches sont exécutées anacron -fnd |
Installation
Cronie est déjà installé (paquet base).
# démarrer cronie sudo systemctl start cronie # activer cronie au démarrage sudo systemctl enable cronie |