GNU/Linux >> Tutoriels Linux >  >> Linux

Problème Crontab :la tâche Cron ne fonctionne pas lors de l'utilisation d'un pourcentage

Question : Quelle est la raison pour laquelle mon travail cron n'est pas exécuté lorsque j'utilise le pourcentage '%' dans mon travail cron. Comment résoudre ce problème ?

Réponse : '%' est le nouveau spécificateur de ligne dans la commande cron. Ainsi, lorsque vous utilisez %, il est interprété comme une nouvelle ligne dans la tâche cron. Voyons comment résoudre ce problème et utiliser % dans la tâche cron.

Définition du problème avec l'exemple :'%' dans la tâche cron (tâche cron non réussie)

* * * * * date +"%d" >> /tmp/non-working-ex1.txt

 
A des fins de test, tous les champs de l'exemple de crontab ci-dessus contiennent *. Cela exécutera la tâche cron spécifiée toutes les minutes.
 
Pour comprendre la configuration crontab, lisez notre article précédent qui contient 15 exemples de tâches cron impressionnants.
 
Si vous avez accès à syslog, vous verrez une ligne similaire à la suivante.

Jun 20 08:31:01 ubuntu-laptop /USR/SBIN/CRON[6752]: (ramesh) CMD (date +")

 
Dans l'entrée syslog de cet exemple spécifique, la commande s'affiche uniquement sous la forme :(date +") . Idéalement, cela devrait être affiché comme :date +"%d" . Cela indique que le pourcentage est analysé comme un symbole spécial dans le cron. c'est-à-dire qu'il termine la commande exactement au %age.

Solution avec exemple :contourner le problème en utilisant « % » dans la tâche cron.

Vous pouvez résoudre ce problème en utilisant les deux méthodes suivantes. Cette solution devrait résoudre le problème sur toutes les versions d'Unix/Linux, y compris Ubuntu, Debian, Fedora, RedHat, CentOS, AIX etc.,

Méthode 1 :échapper le pourcentage avec \

Vous pouvez échapper le pourcentage avec une barre oblique inverse et le faire fonctionner comme un travail normal.

$ crontab -l
* * * * * date +"\%M" > /tmp/working-ex1.txt

 
Remarque : Ce ‘\’ ne sera pas vu par la commande date, ou toute autre commande que vous invoquez. Le \ sert à échapper au comportement spécial du pourcentage dans cron.

Méthode 2 :Utiliser un script shell

Créez un script shell avec la commande pourcentage et planifiez le script shell en tant que tâche cron.

$ cat /bin/date.sh
date +"%d"

$ crontab -l
* * * * * /bin/sh /bin/date.sh > /tmp/working-ex2.txt

À la minute suivante, vous aurez la sortie de la commande exécutée dans le /tmp/working-ex2.txt
 
Vous aurez maintenant la ligne suivante qui a exécuté la commande avec succès dans le syslog.

Jun 20 08:36:01 ubuntu-laptop /USR/SBIN/CRON[6962]: (ramesh) CMD (/bin/sh /bin/date.sh >> /tmp/working-ex2.txt)

 
Remarque : N'oubliez pas de supprimer ces entrées cron de test car elles seront exécutées toutes les minutes.
 
Si vous rencontrez un autre problème avec la crontab, faites-le nous savoir dans la section des commentaires.


Linux
  1. Ubuntu – Crontab ne fonctionne pas ?

  2. Problèmes avec le clavier ne fonctionnant pas au démarrage ?

  3. Gestion des tâches Cron en double lors de l'exécution de scripts

  4. Linux :exécuter la tâche cron au premier plan

  5. Comment afficher une tâche cron en cours d'exécution ?

Comment automatiser des tâches sous Linux à l'aide de Crontab

Linux Crontab :15 exemples de tâches Cron impressionnants

Pourquoi ma tâche cron ne m'envoie-t-elle pas d'e-mail ?

Comment ajouter un travail crontab à crontab à l'aide d'un script bash ?

Le transfert d'agent SSH ne fonctionne pas même en utilisant `ssh -A`

Pourquoi ma crontab ne fonctionne-t-elle pas et comment puis-je la dépanner ?