J'utilise Python pour exécuter un programme externe en utilisant simplement la bibliothèque « os » Python:Deux emplois bash exécutés en même temps
os.system("./script1") # script1 generates several log files and the most important for me is "info.log" !
os.system("./script2") # script2 uses the output from script1
Le problème est que ces scripts sont dans l'élément 50000 « boucle » et "script1" a besoin d'au moins 2 min pour terminer son travail (il a une durée fixe) Dans les 1-2 premières secondes, je peux savoir si j'ai besoin des données de sortie ou non en regardant le "info.log" fichier. Cependant, comme "script1" est un programme déjà compilé et que je ne peux pas le modifier, je dois attendre que cela se termine.
Je pensais à une méthode Bash qui me permet de lancer deux processus en même temps: on est de commencer ./script1
et l'autre est de surveiller tout changement dans le fichier « info.log » ...
Si "info.log" a été mis à jour ou a changé de taille, le second script doit terminer les deux processus.
Quelque chose comme:
os.system("./mercury6 1 > ./energy.log 2>/dev/null & sleep 2 & if [ $(stat -c %s ./info.log) -ge 1371]; then kill %1; else echo 'OK'; fi")
– qui ne fonctionne pas ...
S'il vous plaît, si quelqu'un connaît une méthode, laissez-moi savoir!
Umm no. C'est une question à propos de Python. –
@OlehPrypin Il a lui-même suggéré une solution bash, je ne vois pas pourquoi une réponse bash serait invalide. – kutschkem