Cron

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Cron

Afficher les tâches Cron existantes

La commande crontab -l permet d'afficher les tâches Cron existantes.

Créer une nouvelle tâche Cron

Exécuter un script plusieurs fois par jour avec une tâche cron

# Pour une automatisation avec une tâche cron, le script qui va lancer la ou les tâches doit être exécutable :
sudo chmod +x /usr/local/bin/Automatisation-sauvegarde-cron.sh
# Lancer l'assistant crontab avec la commande crontab -e
crontab -e
no crontab for <UTILISATEUR> - using an empty one

Select an editor.  To change later, run 'select-editor'.
 1. /bin/nano        <---- easiest
 2. /usr/bin/vim.tiny

Choose 1-2 [1]: Choisir le lanceur, ici, je choisis nano (1).
Pour changer l'éditeur par la suite, lancer la commande 'select-editor'.
# Éditer un modèle pour les tâches à accomplir.
# m h  dom mon dow   command
# m est pour minutes [0-59];
# h est pour heure [0-23];
# dom est pour journée du mois [1-31];
# mon est pour mois, de janvier à décembre [1-12];
# dow est pour journée du dimanche au samedi [0-6];
# command est le chemin d'accès absolu de votre script
# Après avoir lancé crontab -e un fichier texte s'affiche dans lequel on ajoute notre propre ligne :
crontab -e
15 */12 * * * /usr/local/bin/Automatisation-sauvegarde-cron.sh
Enregistrer le fichier.
# On peut lire qu'une nouvelle tâche cron a été ajoutée.
crontab: installing new crontab

Exemples de règles pour cron

Exécuter un script à tous les jours à minuit
# m h  dom mon dow   command
0 0 * * * /home/itx/scripts/script_a_executer.sh
Exécuter un script le lundi à 15h00
# m h  dom mon dow   command
0 15 * * 1 /home/itx/scripts/script_a_executer.sh
Exécuter un script à toutes les heures
# m h  dom mon dow   command
0 */1 * * * /home/itx/scripts/script_a_executer.sh
Exécuter un script à toutes les 15 minutes
# m h  dom mon dow   command
*/15 * * * * /home/itx/scripts/script_a_executer.sh
Exécuter un script deux fois par jour
# Pour un site peu fréquenté mais sur lequel un travail est journalièrement déposé, envisager par exemple deux sauvegardes par jour, toutes les 12 heures.
# Ce script commence à travailler à partir du moment ou il est ajouté dans les tâches cron.
# m h  dom mon dow   command
15 */12 * * * /usr/local/bin/Automatisation-sauvegarde-cron.sh

Tâches d'administration avec cron

# Il faut utiliser la crontab de root pour les tâches administratives.
# Cela évite d'avoir à renseigner le mot de passe d'un utilisateur sudoers, ou, de devoir modifier des permissions sur les fichiers.

Exemples de tâches cron

Lancer une musique

# Lancer une musique à 19h01 avec mplayer :
# Le programme xplayer ne m'a pas permis de lancer la musique via cron. Failed to connect to Mir: Failed to connect to server socket: No such file or directory ...
01 19 * * * DISPLAY=:0 /usr/bin/mplayer /home/UTILISATEUR/DOSSIER/CRON/walking-dead.mp3
# Utiliser mpv qui lui a un player graphique quand on joue de l'audio, ce n'est pas le cas de mplayer qui se contente d'afficher le tout en console.
# Pour stopper la musique un "killall mplayer" reste la solution la plus simple.
Source : https://www.ethicalhackx.com/fix-gtk-warning-cannot-open-display/

Supprimer les miniatures de plus de 30 jours

0 12 1   *   * find /home/<user>/.cache/thumbnails -type f -atime +30 -exec rm {} \;

Les notifications du Cron

Cron envoie un mail de notification à l’utilisateur quand la tâche est exécutée avec la sortie complète du script.
Cette notification permet de savoir si les actions se sont passées correctement.

Suppression les notifications pour une tâche en particulier

Ajouter "> /dev/null 2>&1" à la fin de la commande ou encore "&> /dev/null".
Exemple :
45 21 * * * root /home/backup/script.cmd &> /dev/null

Rediriger les notifications sur un compte mail différent

Au début du fichier de crontab, avant la définition des tâches, ajouter la ligne :
MAILTO="utilisateur@domaine.tld"

Rediriger les notifications sur un compte utilisateur

Au début du fichier de crontab, avant la définition des tâches, ajouter la ligne :
MAILTO=root

Supprimer toutes les notifications

Au début du fichier de crontab, avant la définition des tâches, ajouter la ligne :
MAILTO=""

CRON info depuis syslog - No MTA installed

On peut observer dans syslog, le message suivant : (CRON) info (No MTA installed, discarding output).
Linux utilise la messagerie pour envoyer des notifications à l'utilisateur.
Un service de messagerie (y compris un MTA) est installé sur la plupart des distributions Linux. Ubuntu par exemple, ne le fait pas.
Installer un service de messagerie, postfix par exemple, pour résoudre ce problème.
Choisir "Local" lors de l'installation.
sudo aptitude install postfix
La commande suivante devrait maintenant permettre de consulter les messages.
sudo tail -f /var/mail/<user>
Pour lire les messages mutt est également un bon lecteur de courrier système.

Renvoyer les messages dans les logs de syslog

Pour une simple commande, ajouter ">/dev/null 2>&1 | logger -t mycmd" après la commande Cron.
Pour plusieurs commandes, utiliser (cmd1;  cmd2) 2>&1 | logger -t mycmd après la commande Cron.
Cela mettra l'information en sortie dans syslog et arrêtera les alertes concernant l'absence du MTA.
Pour retrouver les informations qui ont été ajoutées dans syslog, lancer une recherche de votre tag "mycmd" avec la commande suivante :
grep 'mycmd' /var/log/syslog
Autre solution, pour renvoyer les messages dans les logs spécifiques à la commande :
# Pour un seul script :
0 3 * * * cmd >> /some/log/file 2>&1
# Pour deux scripts et deux fichiers de logs différents :
0 3 * * * cmd1 >> /some/log/file 2>&1; cmd2 >> /some/log/file 2>&1
# Pour deux scripts et le même fichier de logs :
0 3 * * * (cmd1; cmd2) >> /some/log/file 2>&1
Exemple :
sudo touch cron-dropbox.log
crontab -e
15 */12 * * * /usr/local/bin/Automatisation-sauvegarde-cron.sh >> /var/log/cron-dropbox.log 2>&1
Le propriétaire et le groupe du fichier cron-dropbox.log ont été changés pour l'utilisateur de debian.
L'écriture dans le fichier fonctionne correctement.

Sauvegarder la crontab d'un utilisateur

crontab -l -u utilisateur > /home/utilisateur/sauvegarde_crontab_utilisateur.bak

Anacron

# Anacron est une alternative à cron.
https://fr.wikipedia.org/wiki/Anacron
https://sourceforge.net/projects/anacron/
https://docs.gandi.net/fr/simple_hosting/operations_courantes/anacron.html

Bibliographie

 Source : https://technique.arscenic.org/commandes-linux-de-base/article/cron-gestion-des-taches-planifiees
 Source : https://askubuntu.com/questions/222512/cron-info-no-mta-installed-discarding-output-error-in-the-syslog
 Cron et crontab : le planificateur de tâches : https://www.linuxtricks.fr/wiki/cron-et-crontab-le-planificateur-de-taches
 Comment écrire une tâche cron qui va exécuter un script tous les jours à minuit : https://stackovernet.xyz/fr/q/927905
 Source : https://fr.wikipedia.org/wiki/Cron

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.