Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/09/2021, à 19:10

lebossejames

Bash script python se relance alors qu'il est toujours exécuté

Bonjour,

Je souhaiterais lancer ManagerBrowser.py lorsqu'il ne tourne pas et le tuer puis le relancer dans certains cas, je remarque qu'à chaque fois il relance ManageBrowser.py alors qu'il est déjà lancé, je précise qu'une boucle infinie est présent dans ManageBrowser.py  et que je constate qu'il est toujour présent via la commande ps.

Le problème provient de la commande pgrep -f "$SERVICE"

SERVICE="ManageBrowser.py"
            if pgrep -f "$SERVICE" >/dev/null
            then
                echo "$SERVICE is running"
                                    
                if [[ $1 == "true" ]]; then
                    kill -9 $(pidof 'ManageBrowser.py')
                    python ManageBrowser.py true                            
                fi 
                                    
            else
                echo "$SERVICE stopped"
                if [[ $1 == "true" ]]; then
                     python ManageBrowser.py true                            
                else
                    python ManageBrowser.py false
                            
                fi 
            fi         

Merci de votre aide

Hors ligne

#2 Le 06/09/2021, à 20:54

pingouinux

Re : Bash script python se relance alors qu'il est toujours exécuté

Bonsoir,
Tu montres un script bash qui appelle un script python. Que contient ManageBrowser.py ?

Hors ligne

#3 Le 06/09/2021, à 21:02

lebossejames

Re : Bash script python se relance alors qu'il est toujours exécuté

ManageBrowser.py

from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import selenium.common.exceptions
from selenium.common.exceptions import NoSuchElementException,TimeoutException
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.common.action_chains import ActionChains
import time,schedule
import sys,os

while True:
   print ("ManageBrowser is running")

Dernière modification par lebossejames (Le 07/09/2021, à 08:10)

Hors ligne

#4 Le 06/09/2021, à 21:23

pingouinux

Re : Bash script python se relance alors qu'il est toujours exécuté

Je ne comprends pas la logique. Dans ManagerBrowser.py, tu ne testes pas l'argument true ou false.
Comment appelles-tu le script bash ?

Hors ligne

#5 Le 06/09/2021, à 22:07

lebossejames

Re : Bash script python se relance alors qu'il est toujours exécuté

pingouinux a écrit :

Je ne comprends pas la logique. Dans ManagerBrowser.py, tu ne testes pas l'argument true ou false.
Comment appelles-tu le script bash ?

C'est pour le début, je n'ai pas encore développer le script ManagerBrowser. La source de mon problème provient de la condition défini dans mon bash.

Hors ligne

#6 Le 06/09/2021, à 23:40

kamaris

Re : Bash script python se relance alors qu'il est toujours exécuté

ManageBrowser != ManagerBrowser ?

Hors ligne

#7 Le 07/09/2021, à 08:10

lebossejames

Re : Bash script python se relance alors qu'il est toujours exécuté

kamaris a écrit :

ManageBrowser != ManagerBrowser ?

Une erreur de frappe, désolé.

Hors ligne

#8 Le 07/09/2021, à 19:03

kholo

Re : Bash script python se relance alors qu'il est toujours exécuté

salut...
je passe vite fait par là...
tu veux faire un service, alors pk ne pas utiliser les services ?
as tu regardé du côté de systemd ?

Dernière modification par kholo (Le 07/09/2021, à 19:10)

Hors ligne

#9 Le 07/09/2021, à 21:25

lebossejames

Re : Bash script python se relance alors qu'il est toujours exécuté

kholo a écrit :

salut...
je passe vite fait par là...
tu veux faire un service, alors pk ne pas utiliser les services ?
as tu regardé du côté de systemd ?

C'est un script python qui sera lancé puis pourra se mettre à jour de manière automatique.

Hors ligne

#10 Le 08/09/2021, à 21:33

kholo

Re : Bash script python se relance alors qu'il est toujours exécuté

salut...
tu as donc deux opérations différentes en effet...
ton script et sa mise à jour...
cette autre très récente discussion... un peu courte, est sur le même sujet

si tu veux que ton script se lance tout seul, alors systemd peut le faire mais tu peux aussi utiliser applications au démarrage de Ubuntu

ensuite pour la mise à jour de ton script, soit il vérifie lui même la nécessité de se mettre à jour et la fait seul, soit, à nouveau, un service peut s'occuper de cela avec, au choix, une vérification au lancement du système, ou à intervalles réguliers.

dans tous les cas, ton script bash est inutile dans son état...
tant qu'à être en python autant le rester...
tu peux utiliser un fichier créé au lancement de ton application et supprimé à son extinction qui permettra à ton système de mise à jour de savoir si il peut ou non lancer cette mise à jour...
beaucoup de logiciels utilisent ce procédé.
à toi de choisir comment tu veux le gérer...

... j'imagine que tu vas être un peu perdu par ma réponse...
reprenons...

tu as un script qui tourne... avec une boucle qui en fait un service...
pour lancer ce script fait des tests avec systemd pour la gestion de son lancement...
c'est la base...

ensuite comme tu seras dans une boucle de ton script, tu peux faire une procédure qui vérifie la nécessité de se mettre à jour puis une autre procédure (un script à part) qui fait cette mise à jour...
pour ne pas passer ton temps à vérifier la présence de cette mise à jour, un simple fichier texte avec un timestamp te permettra de savoir la date de la dernière vérification et donc tu pourras choisir si tu veux vérifier la présence d'une mise à jour tous les jours, les semaines,...
tu mets ce fichier "où tu veux"... c'est toi le boss programmeur !
si tu dois faire une mise à jour... comme tu es toujours dans la boucle de ton script python, tu fermes proprement les procédures en cours et lance la mise à jour

il sera bon de lire un peu la gestion des thread sous python

suis je clair ? hmm

Hors ligne