J'ai essayé tout et j'ai vu d'autres questions ici à propos de cela, mais je ne peux pas pour la vie de moi exécuter un script python en tant que cronjob.
J'ai essayé ce qui suit.
* * * * * /usr/bin/python /home/myhome/myscript.py
Tout myscript.py
fait un sommeil pendant 30 secondes afin que je puisse vérifier les processus s'il est en cours d'exécution mais je ne l'ai pas encore vu.
import time time.sleep(30)
Qu'est-ce qui me manque? Ne devrait-il pas fonctionner? J'ai même essayé d'ouvrir un fichier dans / tmp et de sortir là-bas, mais pas de chance. Je suppose qu'il s'agit d'un problème de variable d'environnement mais je ne sais pas par où commencer.
BTW fonctionne correctement sur la ligne de commande.
Oui, cela devrait fonctionner correctement, en supposant que lorsque vous dites "ça marche bien sur la ligne de commande", vous collez littéralement la même commande à partir de l'entrée crontab. Choses à vérifier:
pidof cron
) service cron restart
ou /etc/init.d/cron restart
) /var/log
pour une sortie appropriée: le fichier spécifique dépend de votre configuration syslog, mais /var/log/messages
et /var/log/syslog
sont de bonnes options si /var/log/cron
n'existe pas. Remarque: Vous devrez être root
pour faire la plupart de ces choses – si vous n'avez pas accès, vous devrez parler à la personne qui administre la machine.
En outre, lorsque vous dites que vous ouvrez un fichier dans /tmp
, c'est probablement la chose la plus fiable que vous pouvez faire pour assurer son fonctionnement. Dès le début de votre script (avant importation ou quoi que ce soit), ajoutez ceci:
with open("/tmp/testfile", "a") as fd: fd.write("I am running\n")
Vous pouvez également vérifier si votre crontab est correctement installé – il devrait être placé dans quelque chose comme /var/spool/cron/crontabs
(c'est-à-dire sur Ubuntu Linux, il peut différer sur différents saveurs Unix). Vous devriez voir un fichier ici avec votre nom d'utilisateur qui devrait contenir votre saisie.
Enfin, si vous êtes vraiment désespéré, vous pourriez strace
votre processus de cron pour voir ce qu'il fait:
sudo strace -f -p `pidof cron`
Vous ne devez pas trop vous soucier des détails, mais il devrait faire quelque chose à chaque minute. Si ce n'est pas le cas, tout va bien mal.