web-dev-qa-db-fra.com

Crontab n'exécute pas le script python

J'ai le problème suivant: mon script 'hello world' python ne peut pas être exécuté par crontab.

Si je règle l'instruction crontab comme ceci:

* * * * * cd /home/ && /usr/bin/python /home/hello.py

Le texte n'apparaît pas dans le terminal.

Mais si je le fais:

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /home/log.txt

Ubuntu ajoute le texte 'hello world' au fichier log.txt

voici mon script:

#!/usr/bin/env python
print('Hello World!')

Qu'est-ce que je fais mal?

P.S. déjà lu ce sujet Pourquoi les scripts crontab ne fonctionnent pas?

1
Artem Andreev

Votre script est exécuté par Cron et tout fonctionne comme prévu. Just Cron n'est pas conçu pour produire quoi que ce soit dans un terminal. Donc, IMO, la bonne question ici devrait être quelque chose comme: Où va la sortie standard dans Cron?

À moins qu’il ne soit redirigé (>, >>) ou redirigé vers (|) vers un autre programme, tout ce qui sera généralement transmis à STDOUT (si vous exécutez une commande dans la ligne de commande), y compris tous les messages d'erreur, sera envoyé à la boîte aux lettres locale de l'utilisateur qui exécute le Cronjob. Pour envoyer/recevoir ces emails, vous devez appliquer une configuration minimale telle qu’elle est décrite ici: Comment configurer Cron pour envoyer des emails?

La plupart des suggestions de duplication proposée expliquent comment rediriger la sortie d'un fichier Cronjob vers un téléscripteur ou une fenêtre de terminal, mais pour obtenir le résultat, vous devez vous identifier (dans cette fenêtre de terminal ou de terminal) à l'avance. . Voici quelques exemples supplémentaires:


De plus, dans ce cas:

  • cd /home/ n'est pas nécessaire car votre script n'y écrit rien et le script est appelé par son chemin complet.
  • /usr/bin/python n'est pas nécessaire, car vous indiquez au système qu'il s'agit d'un script Python par Shebang #!/usr/bin/env python. Mais dans ce cas, le fichier doit avoir des autorisations exécutables: chmod +x /home/hello.py.
2
pa4080

Vous pouvez essayer ça!

* * * * * cd /home/ && /usr/bin/python /home/hello.py >> /dev/tty3

(ou votre tty, sinon tty3)

0
SETO 1989