web-dev-qa-db-fra.com

Exécutez le script python via la crontab

J'essaie d'exécuter un script python à l'aide de la crontab de Linux, mais j'ai trouvé beaucoup de solutions et aucune d'entre elles ne fonctionne. Par exemple: éditez l'anacron dans /etc/cron.d ou utilisez crontab -e.

Je veux exécuter ce script toutes les 10 minutes.

Quel fichier dois-je éditer pour configurer ceci?

Merci d'avance

EDIT

Je mets cette ligne à la fin du fichier, mais cela ne change rien. Dois-je redémarrer un ou plusieurs services?

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py

EDIT [2]

Les gars, j'ai suivi le code source. Il y a peut-être un problème ici, mais quand je l'exécute manuellement, cela fonctionne:

http://Pastebin.com/qsWHNzqT

80
guisantogui

Utilisez simplement crontab -e et suivez le tutoriel ici:

http://adminschoice.com/crontab-quick-reference

Regardez le point 3 pour un guide sur la manière de spécifier la fréquence.

En fonction de vos besoins, il devrait effectivement être:

*/10 * * * * /usr/bin/python script.py
118
Raul Marengo

Mettez votre script dans un fichier foo.py à partir de

#!/usr/bin/python

puis donner l'autorisation d'exécuter à ce script en utilisant

chmod a+x foo.py

et utilisez le chemin complet de votre fichier foo.py dans votre crontab.

Voir la documentation de execve (2) qui gère le Shebang

56

Comme vous l'avez dit ne change rien,

Tout d'abord, vous devez rediriger stdin et stderr depuis l'exécution de crontab comme ci-dessous:

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py > /tmp/listener.log 2>&1

vous pouvez ensuite afficher le fichier /tmp/listener.log pour voir si le script a fonctionné comme prévu.

Deuxièmement, devinez ce que vous voulez dire changer quoi que ce soit est en regardant les fichiers créés par votre programme:

f = file('counter', 'r+w')
json_file = file('json_file_create_server.json','r+w')

le travail crontab ci-dessus ne crée pas ce fichier dans le répertoire /home/souza/Documets/Listener _, car le travail cron n'est pas exécuté dans ce répertoire et vous utilisez un chemin relatif dans le programme. Donc, pour créer ces fichiers dans le répertoire /home/souza/Documets/Listener, le travail cron suivant fera l'affaire:

*/2 * * * * cd /home/souza/Documets/Listener && /usr/bin/python listener.py > /tmp/listener.log 2>&1

Allez dans le répertoire de travail et exécutez le script à partir de là, vous pourrez alors voir les fichiers créés sur place.

15
greenqy