Bonjour à tous,
Je me permets de solliciter votre aide pour un problème qui doit certainement en rappeler d'autres. Mon script Python pour gérer l'arrosage automatique fonctionne comme un charme... quand je le lance manuellement. Mais le faire démarrer automatiquement, c'est une autre histoire !
J'ai découvert un excellent fil de discussion sur le forum Raspberry Pi français ( https://forum.raspberry-pi.fr/t/faire-f ... seye/14407 ) qui m'a mis sur la piste. J'ai suivi toutes les étapes avec crontab, mais mon script refuse obstinément de se lancer au boot.
Ce qui me laisse perplexe :
Le script utilise bien le chemin complet (/home/pi/mon_script.py)
J'ai vérifié les permissions (chmod +x)
Pourtant, dans les logs système, je vois toujours ce maudit "Permission denied"
Est-ce que certains d'entre vous ont déjà résolu ce casse-tête ? Je me demande si :
Il manque un délai au démarrage avant l'exécution
Les variables d'environnement diffèrent
Je devrais passer par un service systemd plutôt que cron
Toute piste serait la bienvenue ! Peut-être avez-vous une astuce qui ne figure pas dans les tutos classiques ?
Un grand merci par avance pour vos lumières,
Problème de lancement automatique d'un script Python
Modérateur : Francois
-
- Messages : 1
- Enregistré le : mer. 18 juin 2025 06:36
-
- Administrateur
- Messages : 3271
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Problème de lancement automatique d'un script Python
Bonjour,
Il faudrait expliquer comment tu lance le script en "manuel", quel user ?
Comment tu le lances en auto, le cron de quel user ?
si c'est du python, il faut mettre le chemin d'accès à python :
exemple
Donne plus d'info
Il faudrait expliquer comment tu lance le script en "manuel", quel user ?
Comment tu le lances en auto, le cron de quel user ?
si c'est du python, il faut mettre le chemin d'accès à python :
exemple
Code : Tout sélectionner
0 0 * * * /usr/bin/python /home/pi/mon_script.py
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Re: Problème de lancement automatique d'un script Python
Bonjour,
Comme le précise @domi, il est recommandé de placer l'appel au programme python avec son chemin complet devant le script. Vérifiez bien ce chemin si vous êtes par exemple sous pythton3, passez la commande `$ which python3` pour récupérer ce chemin.
De mémoire (je n'en suis pas très sûr), il me semble l'appel à @reboot dans la crontab n'est valable que pour l'utilisateur root pour les Debian et dérivées ? A creuser de ce coté.
De mon coté, pour toute mise en place d'une crontab récalcitrante j'opère pas à pas. Dans un premier temps je lance la cron toutes les minutes avec une commande qui fonctionne à coup sûr.
Puis je modifie un à un mes paramètres pour arriver à ma ligne de commande idéale. C'est un peu rébarbatif, mais terriblement efficace pour pointer le moment entre là où ça fonctionne et plus.
Lorsque vous dites vouloir démarrer automatiquement un script, est-ce au boot uniquement où à heure et dates spécifiques ?
A+
Comme le précise @domi, il est recommandé de placer l'appel au programme python avec son chemin complet devant le script. Vérifiez bien ce chemin si vous êtes par exemple sous pythton3, passez la commande `$ which python3` pour récupérer ce chemin.
De mémoire (je n'en suis pas très sûr), il me semble l'appel à @reboot dans la crontab n'est valable que pour l'utilisateur root pour les Debian et dérivées ? A creuser de ce coté.
De mon coté, pour toute mise en place d'une crontab récalcitrante j'opère pas à pas. Dans un premier temps je lance la cron toutes les minutes avec une commande qui fonctionne à coup sûr.
Code : Tout sélectionner
* * * * * /usr/bin/date >> /tmp/date.txt 2>&1
Lorsque vous dites vouloir démarrer automatiquement un script, est-ce au boot uniquement où à heure et dates spécifiques ?
A+
-
- Raspinaute
- Messages : 249
- Enregistré le : mar. 7 oct. 2014 09:46
- Localisation : Morsang / Orge - Essonne
- Contact :
Re: Problème de lancement automatique d'un script Python
Bonjour
l'appel à @reboot fonctionne pour tous les utilisateurs. Voici un cron qui fonctionne chez moi;
et voici mon fichier batch:
et voici un exemple de script py démmarrant au reboot.
Il faut que dans les permissions du script, la case exécutable soit coché.
l'appel à @reboot fonctionne pour tous les utilisateurs. Voici un cron qui fonctionne chez moi;
Code : Tout sélectionner
MAILTO=""
@reboot /home/michel/scripts/bash/Boot
@hourly /home/michel/scripts/bash/heure
@weekly /home/michel/scripts/bash/semaine
@daily /home/michel/scripts/bash/jour
2 0 * * * /home/michel/scripts/py/tmpstat
15 0 * * * find /var/www/console/graphes/ -type f -mtime +30 -delete
Code : Tout sélectionner
#! /bin/sh
########################################################
LOG="/home/michel/scripts/logs/logs.txt"
sleep 5
UNAME=$(uname -a)
NOW=$(date +"%d/%m/%Y %H:%M:%S")
echo $NOW" | !! Démarrage du système | "$UNAME >> $LOG
sudo smartctl --info /dev/sda -d sat | grep "Device Model" | awk -F":" '{print $2}'> /var/www/console/data/hdd.txt
/home/michel/scripts/py/getmodel
sleep 10
/home/michel/scripts/py/getreso.py
exit 0
Code : Tout sélectionner
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
# ----------------------------------------------------------------------------
# Information de version
# ----------------------------------------------------------------------------
Minor_Version = "1029"
Major_Version = "3"
Date_version = "29/10/2023"
NomScript = "getmodel"
# ----------------------------------------------------------------------------
# import des modules
# ----------------------------------------------------------------------------
import datetime
import time
import sys
import os
import subprocess
# ----------------------------------------------------------------------------
# procédure config
# ----------------------------------------------------------------------------
def config():
global CFG
dossier = os.path.dirname(os.path.abspath(__file__))
print (sys.version)
print (dossier)
if dossier not in sys.path:
sys.path.append(dossier)
try:
import Lib
except ImportError:
print ("Erreur: module %s/pylib3.py absent" % (pylib))
sys.exit(1)
from Lib import pylib3
CFGFILE = '%s/config/%s.ini' % (dossier,NomScript)
CFG = pylib3.Get_Config(CFGFILE)
# ----------------------------------------------------------------------------
# procédure log
# ----------------------------------------------------------------------------
def log():
LOG = CFG.get('Config','log')
txt = "%s (%s)" % (model,mem)
print(txt)
fichier = open(LOG, "w")
fichier.write(txt)
os.chmod(LOG, 0o666)
# ----------------------------------------------------------------------------
# procédure get_mem
# ----------------------------------------------------------------------------
def get_mem():
global mem
cmd = "cat /proc/cpuinfo | awk '/Revision/ {print $3}'"
revcode = subprocess.check_output(cmd, shell=True)
code = int(revcode, 16)
id = (code >> 20) & 0x7
mem = CFG.get('Mem',str(id))
# ----------------------------------------------------------------------------
# procédure get_model
# ----------------------------------------------------------------------------
def get_model():
global model
cmd = "cat /proc/cpuinfo | grep 'Model'"
p = subprocess.Popen(cmd,stdout=subprocess.PIPE, shell=True)
out, error = p.communicate()
val = str(out,'utf-8')
model = val.split(':')[1].strip()
#----------------------------------------------------------------------------
# Procédure main
# ----------------------------------------------------------------------------
def main():
config()
get_model()
get_mem()
log()
# ----------------------------------------------------------------------------
# début du script
# ----------------------------------------------------------------------------
if __name__ == "__main__":
main()
Code : Tout sélectionner
michel@RASPI-40:~/scripts/py $ ls -al getmodel
-rwxr-xr-x 1 michel michel 2716 30 oct. 2023 getmodel
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Re: Problème de lancement automatique d'un script Python
Bonjour,
A+
Mea culpa, effectivement ce n'est pas le cas. Désolé.De mémoire (je n'en suis pas très sûr), il me semble l'appel à @reboot dans la crontab n'est valable que pour l'utilisateur root pour les Debian et dérivées ? A creuser de ce coté.
A+