Cron

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche
Naviguer dans ce wiki : Accueil du wiki - Objectifs - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur     Consulter le Redmine : Accueil du Redmine

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

Exemples

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

Bibliographie

Ok-ko.png Source : https://technique.arscenic.org/commandes-linux-de-base/article/cron-gestion-des-taches-planifiees
Ok.png Source : https://askubuntu.com/questions/222512/cron-info-no-mta-installed-discarding-output-error-in-the-syslog
Ko.png Source : https://fr.wikipedia.org/wiki/Cron

NAVIGATION

PARTICIPER ET PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur ce wiki sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur 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 :
Gagner des Altcoins - Miner des Altcoins.
Consulter le miroir du wiki depuis Planet Hoster : Le miroir du wiki version du 12 Juillet 2019.