Bonjour,
J’ai écrit un script en python, sans rentrer trop dans les détails sa fonction est de scanner une arborescence située sur une autre machine du réseau et de l’écrire dans un fichier. Lorsque je lance le script manuellement depuis une console ssh (et Screen), il s’exécute pendant environ 1h15 et la tâche se termine normalement, le fichier produit est correct. Mauvaise surprise par contre au moment d’automatiser l’exécution du script pour qu’il tourne la nuit. Si je programme un lancement via le crontab, à l’heure dite le script démarre correctement mais est interrompu au bout de 7-8 minutes. Le fichier produit alors est incomplet, comme si on avait interrompu son écriture en cours d’écriture.
J’ai essayé sans succès de changer l’heure de lancement. Un peu au hasard j’ai aussi fait un script bash de lancement, peut être que crontab préfère le bash à python, mais non, même résultat, la tâche est interrompue au bout de quelques minutes. Enfin j’ai essayé de mettre en tache de fond en ajoutant l’esperluette « & » à la fin de la commande à lancer sans guerre davantage de chance. C’est sûrement quelque chose de tout bête ?
@ vous lire, d’avance merci
Bonjour, ca ressemble à un pb de service qui s’arrete et redémarre: rajoutez un test adequat dans le script
Accessoirement regardez les logs systemes
Merci loicmtp pour ta réponse, je vais regarder les logs et tester le script. J’ai avancé dans la résolution du problème.
Depuis le serveur (où se situe l’arborescence à retranscrire) j’ai lancé le script depuis une ligne ssh dans le crontab.(Pour ça j’ai dû installer l’authentification par clés pour ne pas avoir à me connecter en ssh par mot de passe). Le script s’est lancé correctement et son exécution s’est poursuivie normalement, produisant un fichier exploitable, youpi.
Cependant c’est frustrant de ne pas comprendre pourquoi le script ne fonctionne pas si je le lance via le crontab local. On dirait que le script a besoin d’une session ssh pour fonctionner ?
Accessoirement, j’ai remarqué qu’un disque ( comprenant des fichiers inclus dans l’arborescence à scanner) est tombé cette nuit. Peut être donc que c’est à cause de ce disque instable que le script s’est interrompu. Ca sera peut être dans les logs de python ?
D’après moi, sous réserves, je dirais qu’il serait intéressant, au vu de ce que vs me dites sur le disk, de regarder les logs systèmes, par exemple dmesg en filtrant tout ce qui n’a pas de rapport au disque. Ainsi que de regarder les logs Python également. Pour ce qui est du pb ssh faut voir si ds votre script vous avez écrit un test pour la co. Pour finir je dirais que ce que je vs ai dit anterieurement tient tjs.
Bonjour,
À la lecture de ton problème, ça me fait penser à un problème d’environnement d’exécution de ton script.
Vu que tu n’entres pas plus dans les détails, je ne sais pas trop comment t’aiguiller plus, mais j’ai généralement le même problème quand je n’ai pas les bonnes valeurs de variables d’environnement ou que je n’exécute pas le script en tant que le bon utilisateur.
bonne idée, enregistre les variables d’environnement dans ton script
A mon avis, le script a besoin d’un terminal. Lancée depuis une tâche planifiée (cron) la commande du crontab est en arrière plan, sans terminal (/dev/tty). Depuis le python, il faudrait lancer la commande tty
pour savoir dans quel contexte le script est lancé.
Pour confirmer cette hypothèse, pourrait-on avoir accès au script ?
Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة
F. Petitjean
« Il est souvent trop tôt pour savoir s’il n’est pas trop tard. »
Pierre Dac
« Rien ne sert de penser, faut réfléchir avant. »
Pierre Dac
Merci pour vos réponses.
Cependant je n’ai pas pu investiguer sur ce problème plus avant dans la mesure où j’ai dû faire face à la panne de disque d’abord. Dès que c’est réglé j’y reviens.
Miaou