#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
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
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
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
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 $#
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 !
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 ! $!
«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 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
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
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