GNU/Linux >> Tutoriels Linux >  >> Linux

Dépannage des tâches Cron

Cron est un service pour les serveurs Linux qui exécute automatiquement les commandes planifiées. Une tâche cron peut être une série de commandes shell, de scripts ou d'autres programmes. Les tâches périodiques ou les tâches peuvent exécuter diverses fonctions et, une fois exécutées, peuvent envoyer un message électronique pour vous informer de leur achèvement ou de leurs erreurs. Si vous recevez une erreur, il existe plusieurs façons de dépanner la tâche périodique. Utilisez cet article pour une assistance au dépannage ou un didacticiel sur les bases des tâches cron. Si vous souhaitez en savoir plus sur la création d'une tâche cron, consultez les didacticiels de notre base de connaissances sur le sujet.

Vérification des configurations avec Crontab

À partir de la ligne de commande, vous pouvez consulter les tâches cron planifiées en répertoriant la crontab de l'utilisateur. Cette commande envoie le contenu de la crontab de l'utilisateur au terminal.

En tant qu'utilisateur, vous pouvez exécuter :
crontab -l

En tant que root, vous pouvez voir la crontab de n'importe quel utilisateur, en spécifiant le nom d'utilisateur.
crontab -l -u username

Vous pouvez trouver des informations détaillées sur la façon de formater les tâches cron dans le /etc/crontab dossier. Vous trouverez ci-dessous l'exemple dans ce fichier. Chaque astérisque peut être remplacé par un chiffre ou par son champ correspondant. Ou vous pouvez laisser l'astérisque en place pour représenter tous les nombres possibles pour cette position. Par exemple, s'il est laissé avec un astérisque, cela signifie que la tâche cron s'exécutera toutes les minutes, tout le temps.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

Modification de l'adresse e-mail d'un Cron

Une fois lancé, un cron envoie une notification à une adresse e-mail, définie dans la ligne MAILTO de la crontab.

MAILTO="[email protected]"

Pour modifier la crontab, vous pouvez exécuter les commandes suivantes en tant qu'utilisateur :

crontab -e

Ou si vous êtes connecté en tant que root, vous pouvez saisir le nom d'utilisateur de n'importe lequel de vos utilisateurs pour voir une tâche planifiée qu'ils ont créée.

crontab -e -u username Ceux-ci ouvrent la crontab de l'utilisateur dans l'éditeur par défaut. Typiquement le vim ou nano commande ouvrira le fichier. Sachez que cela revient à ouvrir tout autre fichier texte dans lequel vous enregistrerez avant de fermer.

La ligne MAILTO indique où le statut d'exécution d'un cron doit être envoyé. L'adresse d'envoi sera généralement le nom d'utilisateur du créateur de la tâche périodique ainsi que le nom d'hôte du serveur. Ainsi, l'adresse de l'expéditeur d'un e-mail suivrait cette syntaxe, [email protected]. Si vous ne voyez pas un e-mail tout de suite, il peut être judicieux de vérifier votre boîte de courrier indésirable.

Crons silencieux

Parfois, les tâches cron sont configurées pour ne produire aucune sortie ou pour que leur sortie soit réduite au silence, même si elles sont définies avec une adresse MAILTO. Si vous voyez une tâche cron répertoriée avec l'un des éléments suivants à la fin, c'est un signe que la sortie cron a été réduite au silence. Ceux-ci envoient n'importe quelle sortie au périphérique nul (le trou noir sur un serveur Linux). Dans de tels cas, vous devrez supprimer la ligne du script de tâche cron pour générer une sortie.

&> /dev/null

2>&1 /dev/null Certaines tâches cron sont entièrement désactivées. Celles-ci auront un "#" devant la commande, ce qui entraînera des lignes ignorées lors de l'exécution. Supprimez le "#" pour réactiver la tâche cron.

Vérification du service Crond

Une fois que vous avez confirmé les paramètres corrects, il est temps de vérifier que le système cron est activé et en cours d'exécution. Les trois commandes suivantes peuvent chacune être utilisées pour vérifier si le crond (le service cron) est en cours d'exécution.

/etc/init.d/crond status

service crond status

systemctl status crond

Après avoir exécuté l'une des commandes ci-dessus, si vous constatez que le service crond n'est pas en cours d'exécution, vous pouvez le démarrer avec l'une des commandes suivantes :

/etc/init.d/crond start

service crond start

systemctl start crond

/var/log/cron

Une fois que vous savez que le cron est activé, non silencieux et que crond est en cours d'exécution, il est temps de vérifier le journal cron, situé dans le chemin de /var/log/cron .

cat /var/log/cron

Exemple de sortie :

Oct 2 23:45:01 host CROND[3957]: (root) CMD (/usr/local/lp/apps/kernelupdate/lp-kernelupdate.pl > /dev/null 2>&1)
Oct 2 23:50:01 host CROND[4143]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 2 23:50:01 host CROND[4144]: (root) CMD (/usr/local/maldetect/maldet --mkpubpaths >> /dev/null 2>&1)
Dans le journal, vous verrez si, quand et quel utilisateur a exécuté le cron. S'il est lancé, vous verrez la date et l'heure d'exécution suivies de parenthèses du numéro cron individuel. Cet horodatage ne confirme pas que le script s'est exécuté normalement ou pas du tout, il indique seulement quand le système cron a exécuté la tâche pour la dernière fois. Au-delà de cela, vous devrez peut-être examiner le script cron lui-même ou les configurations au niveau de l'application et leurs journaux respectifs pour vous assurer que le code s'exécute correctement.

Autres services Cron

Cet article est simplement un aperçu du service crond principal, car il existe de nombreux autres services de tâches cron. Le système anacron est un service cron couramment utilisé qui configure des tâches quotidiennes ou horaires, et peut même être configuré pour s'exécuter au redémarrage. Les journaux pour ces types de tâches se trouvent dans /var/log/cron , et ne sont pas exécutés par crond.

Les autres tâches planifiées, bien qu'également appelées tâches cron, ne sont pas exécutées à partir du système crond. Ces tâches cron sont souvent configurées dans le code ou la configuration d'un site Web. Pour déterminer s'il est exécuté, vous devrez examiner d'autres configurations et journaux avec lesquels le script cron interagit.

Comme pour tous les services cron, les tâches automatisées peuvent être manipulées pour exécuter de nombreuses tâches quotidiennes, vous n'avez donc pas à le faire. Les tâches cron peuvent parfois mal tourner même sans les modifier ou des années, mais savoir où chercher est la moitié de la bataille dans le dépannage d'une tâche cron.


Linux
  1. Tâches Cron / Tâches automatisées

  2. Tâches Cron de cluster

  3. Comment planifier des tâches Cron avec Crontab

  4. RCRON – Configuration de la haute disponibilité des tâches cron

  5. Utiliser les tâches CRON pour visiter l'url ?

Comment automatiser des tâches avec des tâches cron sous Linux

Comment afficher ou répertorier les tâches Cron sous Linux

Tâches Cron planifiées

Cron Jobs et Crontab sur Linux expliqués

Comment configurer les tâches Cron dans cPanel ?

10 exemples cron utiles pour planifier des tâches sous Linux