Python, linux: lancer automatiquement un script python

Fermé
Flayme - Modifié le 17 oct. 2022 à 15:13
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 17 oct. 2022 à 15:21

Bonjour,

Je me demande comment lancer un script automatiquement sur linux (ubuntu).

Ce que je cherche à faire est que quand l'utilisateur lance un programme A, le programme B se lance à chaque démarrage de la machine jusqu'à que je relance le programme A (avec la fenêtre en arrière plan).

Exemple de programme A ou lancer_programme permet de lancer automatiquement le programme B :

import lancer_automatique

with open("actif?.txt, "r") as f:
   actif = "True" if f.read() == "False" else "False"

with open("actif?.txt, "w") as f:
   f.write(actif)

with open("programmeB.py, "r") as f:
   programmeB = f.read()


if actif == "True":
   lancer_automatique.lancer(programmeB)
else:
   lancer_automatique.stoper(programmeB)

Si ce n'est pas clair posez-moi la question

Merci d'avance pour votre aide
 

2 réponses

J'ai trouvé une solution pour lancer un script tout seul au démarrage : crontab et le module python-crontab

0
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
17 oct. 2022 à 15:21

Bonjour,

Sous Linux :

  • pour lancer un programme au démarrage du système, il faut normalement créer un fichier service, qu'on enregistre dans la chaîne de démarrage (voir commande systemctl) : voir cette page.
  • pour lancer un programme au démarrage d'une session en mode texte, il suffit de le lancer dans ~/.profile ou ~/.bashrc : voir cette page
  • pour lancer un programme au démarrage d'une session graphique, il suffit de l'enregistrer en tant que tel dans le panneau de ton configuration de ton environnement graphique.

Ta réponse avec cron fait peut être ce que tu veux, mais elle est fausse dans le cas général. Un cron permet d'exécuter une tâche périodique. Il faut donc que cet instant périodique ait lieu pour que le programme invoqué par cron se lance.

Ensuite pour répondre à ta question, tu ne peux pas forcer l'exécution d'un programme suite à l'exécution d'un autre programme. Ce serait un trou de sécurité. Par contre, ce que tu peux faire, c'est configurer un alias bash nommé programme A ainsi défini :

alias programmeA="programmeA ; programmeB"

ou un script /usr/local/bin/programmeA qui exécute les deux programmes.

Bonne chance

0