J'ai donc un script python que je lance dans le terminal en tapant simplement le nom du script (python SCRIPTNAME.py)
Je me demande simplement s'il est possible de créer un script ou un travail cron qui s'arrête tout simplement, puis qui commence ce script python toutes les heures?
On dirait que vous voulez démoniser , ou créer un service pour votre script Python. C’est ainsi que d’autres applications démarrent, dans le bon ordre ou au bon moment.
Vous voudrez créer un service systemd
pour votre script Python, puis vous y connecter via systemctl
.
systemctl restart mypython
systemctl enable mypython
Une fois que votre script fonctionne de cette manière, vous pouvez configurer cron
pour faire tout ce dont vous avez besoin, à savoir probablement pour redémarrer le service.
En fonction de l'objectif de votre script et de votre capacité à déterminer s'il fonctionne correctement, vous pouvez améliorer le service pour signaler s'il cesse de fonctionner, ou même rechercher des solutions telles que monit
.
Comme indiqué, cette réponse fournit des informations utiles, mais contient des outils obsolètes, tels que rc.local
. Au lieu d'utiliser systemd
, vous pouvez suivre le PID du processus, puis arrêter ce processus et réexécuter votre script toutes les heures.
La meilleure approche serait via GNU timeout
comme dans
timeout -k 3600 python3 /path/to/script.py
où -k signifie "tuer après" et le temps en secondes.
Donc, pour que le script soit exécuté, terminé et redémarré toutes les heures, vous pouvez le faire
while timeout -k 3600 python3 /path/to/script; do
sleep 2
done
où sleep 2
consiste simplement à ajouter un petit délai avant de redémarrer
Vous pouvez également utiliser le module Threading dans Python pour planifier les parties pertinentes du script. Voir https://stackoverflow.com/a/50537798/3701431