J’ai un script Python qui ne paraît pas démarrer depuis
l’autostart(.config/autostart).
Selon Google cela se fait avec crontab :
J’ai bien la ligne en “@reboot…” ajoutée en fin de fichier (sudo
crontab -e).
La commande “crontab -l” m’indique bien cet ajout.
J’ai ajouté le user “aciah” dans /etc/cron.allow
Mais au redémarrage le script .py n’est pas exécuté.
Peux-tu nous afficher la ligne de ton crontab ainsi que le contenu éventuel du fichier exécuté ? (shell ou python directement) ?
Enfin, en général, tu peux essayer avec un script shell tout bête qui log un “Hello world” afin de vérifier qu’une commande est bien exécutée.
Mais surtout ajouter des logs au niveau de ton script python.
Une bonne idée également : exécuter la commande du crontab pour voir si tout se passe comme tu le souhaites !
Pas fait de crontab depuis longtemps. Mais dans mon souvenir, le problème principal était l’environnement très pauvre dans lequel se lançaient les scripts invoqués par cron. Dans ta shell, tu peux voir ton environnement par la commande “set”: des centaines de variables d’environnement et de fonctions définies, la plupart tu sais pas pourquoi. Mais certaines vitales pour l’exécution de ton script. Je n’ai pas de solution miracle, mais creuse de ce coté:
essaies de faire un script cron qui se contente de mémoriser l’environnement courant.
essaies de lancer une shell avec cet environnement: il te faudra probablement ajouter des variables pour que le shell tourne.
essaies de lancer ton script python depuis cette shell: les erreurs qui ne manqueront pas de péter seront au moins dans un environnement interactif, et s’afficheront à l’écran.
tu dois pouvoir ajouter les variables nécessaires pour le lancement cron de ton script.
Donc on dirait qu’il faut activer un environnement python avec pyxhook installé en début de tache cron ou sinon (fortement déconseillé) installer pyxhook dans le python du systeme, ce qui peut provoquer des effets de bord - incompatibilité avec d’autres taches systeme, difficulté a monter en version, …
en général, on a un environnement virtuel, dans lequel on installe les librairies (genre pyxhook) et ensuite, le cron lance le python de l’environnement virtuel donc ici :