J'ai essayé d'éliminer bon nombre des erreurs courantes,
s'assurer que les CHEMINS sont disponibles pour cron
il y a une fin à la fin du fichier crontab
le fuseau horaire est défini par:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
En cours d'exécution date
en bash, je reçois:
Tue Sep 17 15:14:30 SGT 2013
Afin de vérifier si cron utilise en même temps,
* * * * * date >> date.txt
donne la même sortie de date dans date.txt.
Voici le script que j'essaie d'exécuter:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
En utilisant crontab -e
, la ligne ci-dessous fonctionne,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Cependant, lorsque j'ai essayé d'autres arguments, en espérant qu'il fonctionnerait à 14 h 50:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
ou
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
cela ne fonctionnera plus. On dirait qu'il y a un problème avec mon argument d'heure. Rien n'a pu non plus être trouvé dans le /tmp/debug.log
fichier.
SOLUTION:
Il s'est avéré que je dois redémarrer le service cron après avoir apporté des modifications à TZ.
~/event.sh
essayer avec/home/username/event.sh
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
et confirmez qu'elledate
indique l'heure prévue. Notez que la définition de la variable d'environnement TZ à l' intérieur du crontab pourrait ne pas affecter le fuseau horaire tel qu'il est utilisé par le cron démon lui - même, mais il aura une incidence sur les processus lancés par cron, donc si vous définissez TZ dans votre crontab je vous suggère de le commenter sur temporairement et en définissant l'heure à l'aide du fuseau horaire de l'horloge système (probablement UTC si vous démarrez Linux, mais peut être l'heure locale) à la place.Réponses:
Tout d'abord, les probabilités que vous rencontriez un bogue qui entraîne une prise en compte incorrecte d'un champ semblent exceptionnellement faibles. Il est plus probable qu'il s'agisse d'une incompréhension de ce qui se passe et de ce que cron attend.
Dans ce cas, nous avons découvert dans les commentaires à la question qu'il s'agissait très probablement d'un problème lié au fuseau horaire. Pour cela, vous devez:
* * * * * date
à la crontabCela force
date
à s'exécuter avec le paramètre de fuseau horaire de l'invocateur, ce qui signifie le démon cron . Regardez la sortie; il montrera quel fuseau horaire cron utilise en interne, et donc très probablement dans quel fuseau horaire il veut que ses champs horaires se trouvent. Si vous avez une affectation TZ dans la crontab, il est facilement possible que l'affectation des variables d'environnement TZ soit transmise commandes invoquées mais cron lui-même utilise un autre fuseau horaire . En mettant en commentaire ou en supprimant l'affectation TZ, vous évitez cette ambiguïté.Notez également que toute modification des paramètres du fuseau horaire global du système (y compris par exemple / etc / localtime) nécessite presque certainement au moins un redémarrage du démon cron, et éventuellement (bien que peu probable) un redémarrage du système pour prendre pleinement effet. La modification de l'affectation TZ dans la crontab ne devrait pas nécessiter un rechargement du démon cron, car elle devrait détecter que le fichier a été modifié et le recharger automatiquement.
la source