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 31/03/2024, à 14:21

alrito

[Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Bonjour,

Je cherche un script bash permettant d'ouvrir Minetest + Antimicrox et quand je quitte Minetest,  je quitte aussi Antimicrox.

Dernière modification par alrito (Le 31/03/2024, à 22:54)


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#2 Le 31/03/2024, à 21:33

Hizoka

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Salut, un truc du genre ?

mintest &
pid_mintest=$!
antimicrox &
pid_antimicrox=$!
while ps -p $pid_mintest &>/dev/null; do sleep 1; done;
kill $pid_antimicrox

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 31/03/2024, à 21:37

Watael

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

je crois qu'on peut remplacer la boucle while par wait [PID]...
?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 31/03/2024, à 21:53

Hizoka

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

je ne connaissais pas cette commande plus adaptée en effet smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 31/03/2024, à 22:52

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Merci Hizoka,

Grâce à toi j'ai un script qui va très bien pour mon utilisation.
Je n'ai pas pris tout le script mais seulement une ligne et j'ai fait quelque modification.

while ps -p $pid_mintest &>/dev/null; do sleep 1; done;

Le script est enregistrer dans ~/.local/bin/kill-minetest.sh et ça donne ceci :

#!/bin/bash


while pgrep "minetest" &>/dev/null; do sleep 1; done;

killall antimicrox

Puis dans le fichier desktop du jeu situer dans /usr/share/applications/net.minetest.minetest.desktop, je modifie la ligne nécessaire :

Exec=minetest | antimicrox --tray | kill-minetest.sh

Et là, j'ai bien Minetest et Antimicrox qui sont fonctionne en même temps. Puis, quand je quitte Minetest, j'ai bien Antimicrox qui disparait aussi.

Encore merci Hizoka wink


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#6 Le 31/03/2024, à 23:09

kamaris

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Comme a dit Watael, au lieu de while ps il y a wait, et au lieu de while pgrep il y a pidwait.

Hors ligne

#7 Le 01/04/2024, à 09:48

Hizoka

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Merci pour ces commandes que je ne connaissais pas smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 01/04/2024, à 13:08

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Je viens de tester ces deux manières de faire.
D'abord avec wait :

#!/bin/bash

minetest &
pid_minetest=$!
antimicrox --tray &
pid_antimicrox=$!
wait $pid_minetest &>/dev/null ;
kill $pid_antimicrox

Celle-ci répond bien à ma problématique.

Avec pidwait :

#!/bin/bash

minetest &
pid_minetest=$!
antimicrox --tray &
pid_antimicrox=$!
pidwait $pid_minetest &>/dev/null;
kill $pid_antimicrox

Ça ne répond pas bien. J'ai bien Minetest qui démarre mais je n'ai pas Antimicrox.

Peut-être que j'ai une commande qui ne va pas ?

Les deux commandes, celle de wait et la soluces dans la discussion #5 fonctionnent.

Merci à toi aussi Watael pour ton aide smile

Dernière modification par alrito (Le 01/04/2024, à 13:09)


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#9 Le 01/04/2024, à 13:54

lynn

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Bonjour,

Un truc comme ça devrait fonctionner, non ?

#!/bin/bash

minetest &
antimicrox --tray &

pidwait -f minetest && kill $#

* Rectification sur la dernière ligne: kill $! et non pas kill $# roll

Dernière modification par lynn (Le 01/04/2024, à 15:43)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#10 Le 01/04/2024, à 14:22

Watael

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

hmmm... pas le kill sur le nombre d'arguments du script ($#), mais avec le process ID du précédent job en arrière plan ($!, ici, antimicrox), oui ! smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 01/04/2024, à 15:41

lynn

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Yes ! $! tongue


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#12 Le 01/04/2024, à 21:33

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Bonjour lynn,

J'ai tester ton script avec le bon symbole à la fin wink et ça ouvre Minetest mais pas Antimicrox.

J'ai essayer autre choses :

#!/bin/bash

minetest & m=$!
antimicrox --tray & a=$!
pidwait -c $m && killall antimicrox $a

Là, j'ai bien Minetest et Antimicrox qui s'ouvre mais quand je ferme Minetest et bien j'ai toujours Antimicrox d'ouvert.


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#13 Le 01/04/2024, à 21:39

Watael

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

pourquoi pidwait -c ?
pourquoi indiquer le nom ET le PID à killall ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 01/04/2024, à 22:28

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Pour pidwait -c, c'est pour voir si ça améliore le résultat. Pour le nom ET le pid, heu c'est une erreur big_smile smile

Pour ceci corriger :

#!/bin/bash


minetest & m=$!
antimicrox --tray & a=$!
pidwait -f $m && killall $a

Je viens de tester, c'est pareil que pour le dernier test

Dernière modification par alrito (Le 01/04/2024, à 22:29)


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#15 Le 01/04/2024, à 22:41

Watael

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

parce que killall prend un nom en argument; c'est kill qui prend un PID, et il faudra peut-être lui indiquer un signal à lui envoyer.

Dernière modification par Watael (Le 01/04/2024, à 22:42)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#16 Le 01/04/2024, à 22:54

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Comme ceci ?

#!/bin/bash


minetest & m=$!
antimicrox --tray & a=$!
pidwait --f $m && kill -KILL $a

Dernière modification par alrito (Le 01/04/2024, à 22:54)


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne

#17 Le 05/04/2024, à 20:07

kamaris

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Je n'ai signalé pidwait que parce que tu voulais utiliser pgrep en #5, mais tu peux très bien en rester à la version builtin qui fonctionne en #8 smile
Sinon ceci devrait fonctionner:

minetest &
antimicrox --tray &
pidwait minetest
pkill antimicrox

Hors ligne

#18 Le 11/04/2024, à 15:41

alrito

Re : [Résolu]Bash : Arrêter Minetest et Antimicrox quand je quitte Minetest

Bonjour,

@kamaris : pgrep fonctionne, ps ne fonctionne pas, wait fonctionne et pidwait ne fonctionne pas.

Si on veut avoir juste un exécutable pour effectuer l'action voulue et utiliser le fichier desktop du jeu pour lancer le jeu, alors je privilégie la discussion #5.
Si on veut démarrer le jeu avec un fichier sh, là je privilégie la discussion #8 avec wait.

Dernière modification par alrito (Le 12/04/2024, à 09:19)


Je dirais que le secret pour résoudre un problème, c'est de la patience. On y arrive :)

Hors ligne