emploi crontab ne démarre pas ... des idées?
Question
Merci de me aider la mise en mes tâches cron, crontab a vraiment été une mine d'or pour moi.
Malheureusement, j'ai un problème, et ne savent pas ce que si jamais ce qu'il pourrait être ... essentiellement un emploi ne démarre pas alors que les emplois voisins font. Je vais vous expliquer
Ceci est ma crontab liste des tâches:
* / 10 * * * * fetch_articles de /webapps/foo/manage.py python
* / 10 * * * * fetch_books de /webapps/bar/manage.py python
Je leur ai écrit comme dans un fichier et les stockés en utilisant crontab / chemin / vers / fichier.
vérifié avec crontab -l et les emplois sont là.
La chose étrange est que 1 de ces 10 minutes exécute tous normalement ... mais l'autre n'a pas. J'ai essayé de taper la commande manuellement, et il fonctionne très bien sans problème.
Quelqu'un at-il des suggestions?
L'aide serait très apprécié, merci les gars.
Mise à jour:
Je suis dans les fichiers journaux du système et je trouve ceci:
5 mars 02:50:01 localhost CRON [21652]: (root) CMD (fetch_books python de /webapps/foo/manage.py)
Est-ce crontab moyenne appelle l'amende de travail?
Merci pour vos réponses les gars!
fixe IT! je vous remercie beaucoup tout le monde !!
Le problème est que le script a échoué en silence, je crois qu'il est dû à l'PYTHON_PATH changer en raison de l'endroit où le script est appelé à partir ... Je suis tout à fait sûr.
La solution
Cron fonctionne toujours dans un environnement différent de ce que vous pensez: -)
J'ai toujours mes cronjobs mis en place comme:
*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1
pour assurer qu'il ya quelque chose connecté que je peux regarder.
Ceci permettra de réduire votre problème à soit:
- Cron, si le fichier temporaire ne semble pas; ou
- votre script, si elle n'apparaît.
Et, dans ce dernier cas, je l'espère, il y aura une sortie, vous pouvez déboguer. Sinon, mettez la sortie là-dedans.
Une façon de le faire est de mettre:
set -x
en haut du script qui entraînera toutes les lignes à sortir avant l'exécution. Tous mes scripts ont tendance à commencer:
#!/bin/bash
#set -x
donc je peux juste décommentez deuxième ligne lors du débogage.
Autres conseils
De la page de manuel crontab:
BUGS Bien que Cron exige que chaque entrée dans une extrémité crontab dans un retour à la ligne , ni la commande crontab ni le démon cron détecte ce Erreur. Au lieu, le crontab apparaîtra charger normalement. Cependant, la commande ne sera jamais exécuté. Le meilleur choix est de faire en sorte que votre crontab a une ligne blanche la fin.
(je souligne).
Je pense que ~ la réponse de unutbu est probablement correcte si elle est le deuxième emploi qui ne fonctionne pas.
Cependant, une autre chose à vérifier est de savoir si /webapps/bar/manage.py
nécessite un accès exclusif aux ressources, prises réseau, par exemple / tempfiles etc. Puisque vous commencez 2 processus en même temps, vous pouvez déclencher une condition de course.