Une explication plausible (selon moi) est que cron lance les deux scripts quasi en même temps, mais que ta commande d'envoi d'e-mail va suffisamment plus vite que la commande python pour que le fichier gna.txt ait déjà été purgé par ">" mais pas encore mis à jour. Une façon de vérifier ça serait de chronométrer le temps d'exécution de chaque commande.
Une première solution serait de décaler le traitement des deux commandes (une toute les minutes paires, l'autre toutes les minutes impaires par exemple). Je n'ai pas la syntaxe cron de tête, mais c'est possible. Mais c'est pas terrible parce que ça divise la fréquence du traitement par deux. On pourrait s'en sortir avec deux couples de scripts utilisant deux fichiers d'échanges différents et lancés en alternance avec le premier couple de script, mais c'est très moche, faut pas faire ça :-)
Une autre façon de régler le problème est d'écrire un script shell qui encapsule les deux commandes (python puis mail) et de lancer ce script à partir de cron. C'est la solution que je recommanderais si tu commençais à vouloir enchaîner beaucoup de commandes.
Si c'est juste pour ces deux commandes là, tu peux aussi les lancer l'une à la suite de l'autre en utilisant une seule entrée de crontab en utilisant des parenthèses. Genre:
normal que ça ne fonctionne pas, le redirection de la sortie de standard (>) va aboutir à interpréter mail comme un fichier de destination et pas comme la commande mail.
cat gna.txt | mail ... idem
Il y a probablement moyen d'ordonner à la commande mail de lire l'objet de l'e-mail à partir de son entrée standard, et donc d'utiliser une structure python ... | mail ... , mais manifestement pas aussi simplement qu'avec un |. Je ne connais pas assez les options de mails pour avoir une réponse définitive là dessus (et je n'ai pas du tout envie de lire la page de man de mail :-) )
# un seul script pour les gouverner tous
Posté par gaaaaaAab . En réponse au message pb d'accès fichier sous CRON. Évalué à 5.
Une explication plausible (selon moi) est que cron lance les deux scripts quasi en même temps, mais que ta commande d'envoi d'e-mail va suffisamment plus vite que la commande python pour que le fichier gna.txt ait déjà été purgé par ">" mais pas encore mis à jour. Une façon de vérifier ça serait de chronométrer le temps d'exécution de chaque commande.
Une première solution serait de décaler le traitement des deux commandes (une toute les minutes paires, l'autre toutes les minutes impaires par exemple). Je n'ai pas la syntaxe cron de tête, mais c'est possible. Mais c'est pas terrible parce que ça divise la fréquence du traitement par deux. On pourrait s'en sortir avec deux couples de scripts utilisant deux fichiers d'échanges différents et lancés en alternance avec le premier couple de script, mais c'est très moche, faut pas faire ça :-)
Une autre façon de régler le problème est d'écrire un script shell qui encapsule les deux commandes (python puis mail) et de lancer ce script à partir de cron. C'est la solution que je recommanderais si tu commençais à vouloir enchaîner beaucoup de commandes.
Si c'est juste pour ces deux commandes là, tu peux aussi les lancer l'une à la suite de l'autre en utilisant une seule entrée de crontab en utilisant des parenthèses. Genre:
Sinon, pour ça :
bash
cat gna.txt > mail...
normal que ça ne fonctionne pas, le redirection de la sortie de standard (>) va aboutir à interpréter mail comme un fichier de destination et pas comme la commande mail.
Il y a probablement moyen d'ordonner à la commande mail de lire l'objet de l'e-mail à partir de son entrée standard, et donc d'utiliser une structure python ... | mail ... , mais manifestement pas aussi simplement qu'avec un |. Je ne connais pas assez les options de mails pour avoir une réponse définitive là dessus (et je n'ai pas du tout envie de lire la page de man de mail :-) )