Problème pour tuer un processus ou un thread
Résolulenainjaune Messages postés 672 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 23 août 2024 - 23 août 2024 à 20:24
- Problème pour tuer un processus ou un thread
- Tuer playboy x ou dwayne ✓ - Forum Jeux vidéo
- Modifier priorité processus windows 10 permanent - Forum Programmation
- Le processus est interrompu en raison du manque de mémoire epson - Forum Imprimante
- Tuer dimitri ou pas gta 4 - Forum Jeux vidéo
- System thread exception not handled nvlddmkm.sys - Forum Windows 10
7 réponses
Modifié le 21 août 2024 à 15:09
Bonjour,
En réponse à #20
/usr/bin/autokey n'est que le point d'entrée, il ne permet donc pas réellement de voir ce que fait le programme. Si on veut plonger dans le code, il vaut mieux directement regarder les sources. Dans ton cas, c'est à terme dans cette classe qu'on entre. On voit que :
- autokey est basé sur des threads.
- C'est confirmé par le résultat de ps, il n'est donc pas vraiment possible d'utiliser pkill ou kill puisqu'on ne sait pas exactement quel processus viser.
- Je me demande ce qui se passerait si tu cliquais sur une fenêtre avec xkill sur une fenêtre autokey (ou de manière équivalent, un kill sur un thread particulier).
- Rien ne semble prévu pour stopper un thread en particulier dans autokey.
- Je n'ai rien vu dans la documentation ni dans l'implémentation.
- Mes recherches Internet n'ont rien donné non plus.
- Si l'application ne le permet pas, il faudrait pouvoir le faire soi-même avec les commandes systèmes appropriées. Or si on relis cette discussion (que j'ai déjà évoquée), ainsi que celle-ci, je ne pense pas que ce soit faisable.
Concernant ta vidéo, merci pour cette présentation, cela m'a permis de découvrir un peu autokey. L'outil est intéressant, mais toutefois, je n'en vois pas la réelle utilité de nos jours (en tout cas, me concernant).
- Les raccourcis globaux permettent de remplacer autokey.
- Beaucoup de cas d'usage qui avait motivés la création d'autokey sont désormais nativement implémentés :
- dans la barre de lancement (alt+f2)
- lancement/arrêt d'un programme
- opérations "simples" (calculatrice, etc.)
- recherches (sur Internet, sur le bureau...)
- dans ton IDE
- dans la barre de lancement (alt+f2)
Bonne chance
2 août 2024 à 22:03
Merci beaucoup Agito :D
Oui j'ai complètement statué sur l'accès au processus depuis l'extérieur, mais ai occulté l'action depuis l'intérieur.
Je teste et essaye de comprendre les solutions que tu m'as proposé et ferais un retour quand j'obtiendrais satisfaction ... ou si je bloque :)
PS : comment fais-tu pour écrire du code iniligne au fil du message depuis l'éditeur de CCM ? Comme je ne sais pas faire, soit je mets en gras, soit j'utilise le bouton "Insérer un extrait de code" mais qui prend beaucoup de place ...
Bonjour
Copié collé c'est bon?
root@host:~# ps aux | grep autokey | grep -v grep
user 198833 6.2 0.2 1146724 83252 ? Sl 00:52 0:01 /usr/bin/python3 /usr/bin/autokey-gtk -c
root@host:~# pstree -p $( pgrep autokey | sort | tail -1 )
autokey-gtk(198833)─┬─{autokey-gtk}(198835)
# 11 autres threads autokey-gtk
root@host:~# ps -T -p $( pgrep autokey | sort | tail -1 )
PID SPID TTY TIME CMD
198833 198835 ? 00:00:00 gmain
198833 198836 ? 00:00:00 gdbus
198833 198844 ? 00:00:00 autokey-gtk
...
198833 198857 ? 00:00:00 dconf worker
3 août 2024 à 00:16
Hein ! Je ne comprends pas ton message ...
3 août 2024 à 00:36
Bonjour
Ah, j'ai copié collé ton code dans l'éditeur de ccm et te demande si tu le vois bien.
Dans cette discussion:
3 août 2024 à 00:42
oui (non formaté) mais pourquoi me demandes tu ça ?
3 août 2024 à 00:43
Pour le code iniligne ?
Bonjour
Oui, j'ai pas trouvé la définition de iniligne.
Alors le copier collé ça prend un peu moins de place garde les tabulations (mais l'éditeur passe à la ligne pour celles qui sont trop longues), et pas de numérotation comme avec l'insertion de code, j'ai vu des exemples de python 3 sur internet.
Modifié le 3 août 2024 à 12:38
Ma question n'est sans doute pas claire ...
@Agito, un autre membre qui a participé au fil, avait posté un message dont le code était intégré dans le texte (de mémoire en rouge et sur fond gris) et non dans une zone "Insérer un extrait de code". Pour une raison qui m'échappe, son message a été supprimé, donc je ne peux pas te le montrer.
CCM autorise l'extrait de code qui est prévu pour plusieurs commandes mais qui prend de la place (sauts de ligne avant et après). Parfois on veut indiquer du code directement depuis le texte comme dans cette exemple en gras : "pour calculer la taille totale des profils fait du -sh /home". Apparemment Agito avait l'astuce pour le faire.
Je viens de me rendre compte que iniligne c'est une erreur de traduction de ma part car je confirme que ça n'existe pas. Le mot exact est uniligne (en anglais inline). Il concerne les commandes multiples écrites sur une seule ligne (comme par exemple dans les crons Linux qui n'autorisent qu'une ligne unique).
J'espère que c'est plus clair :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question8 août 2024 à 19:04
J'ai abandonné l'idée de faire fonctionner ces scripts Python3 sous autokey. Autant tout faire avec un EDI digne de ce nom. D'ailleurs j'en viens presque à me demander la valeur ajoutée d'une telle application. Autant tout faire depuis les scripts ...
Donc définitivement NON résolu !
16 août 2024 à 14:45
Bonjour @lenainjaune StatutContributeur
De manière générale tu peux tuer un processus avec :
pkill -9 nom_du_processus
S'il s'agit d'une application graphique tu peux aussi utiliser :
- Avec X11, l'application xkill transforme ton curseur en tête de mort et invoque pkill pour tuer la prochaine application cliquée. Attention à ne pas viser dans la barre des programmes car cela dégommera la barre des programmes.
xkill
- Avec Wayland : xkill n'existe pas, mais il y a un raccourci dédié qui permet d'avoir le même comportement. Ce raccourci se personnalise dans le panneau de configuration (voir raccourcis globaux). Personnellement je l'ai mis sur ctrl alt échap.
Bonne chance
17 août 2024 à 05:08
Merci pour ta participation mamiemando :D mais ma question n'est pas de supprimer un processus, ça je sais faire ... En revanche je cherchais une solution pour tuer un script exécuté depuis autokey sans tout tuer autokey.
19 août 2024 à 15:23
Bonjour lenainjaune,
D'accord, j'ai mal compris ta question.
- As-tu regardé cette discussion qui semble suggérer que tout est prévu dans autokey ?
- Après, je pense que tu peux toujours tuer le bon processus en utilisant en tandem ps faux ou pidof pour retrouver le bon PID, puis kill pour le dégommer.
L'autre point qui m'échappe, c'est qu'autokey semble plutôt s'adresser aux windowsiens (or ton message est dans le forum Linux). Du coup, pourquoi et dans quel but l'utilises-tu ?
Bonne chance
19 août 2024 à 18:37
autokey (Linux) n'est PAS autohotkey (Windows) ;-)
Ne t'inquiètes pas, je me suis aussi fait avoir un paquet de fois, puisque les moteurs de recherche comme G**gle suggèrent le second avant le premier.
Le truc que je trouvais intéressant, c'est qu'on code directement en Python mais bon comme c'est limité et peu ergonomique autant faire du full python avec un EDI digne de ce nom et coder les fonctionnalités ajoutées par l'outil autokey.
Par ailleurs je viens de découvrir AHK_X11 qui est une sorte de portage de autohotkey sous Linux. A voir vu que j'avais déjà codé des scripts autohotkey par le passé.
Modifié le 20 août 2024 à 00:12
Aussi ps faux et pidof python3 ne donnent rien de plus que dans mon premier message (OP). Je n'arrive pas à dissocier l'exécution du script autokey, des processus et des threads.
Modifié le 20 août 2024 à 15:19
autokey (Linux) n'est PAS autohotkey (Windows) ;-) Ne t'inquiètes pas, je me suis aussi fait avoir un paquet de fois, puisque les moteurs de recherche comme G**gle suggèrent le second avant le premier.
- Ah oops :-) Je me suis aussi fait avoir !!
- Bon j'ai lu un peu ceci et j'avoue ne pas trop voir l'intérêt. Soit effectivement, tu développes un IDE comme PyCharm fait probablement déjà ce que tu veux (par exemple générer des squelettes de docstring), soit tu veux créer des raccourcis globaux et ton environnement graphique le permet sûrement déjà (c'est le cas dans KDE, on peut créer de nouveau raccourci associés à un script ou une commande arbitraire). Mais bon ceci nous éloigne de ta question initiale.
Je n'arrive pas à dissocier l'exécution du script autokey, des processus et des threads.
Concernant ps faux, j'aurais aimé voir comment étaient organisés autokey et ses sous processus (en particulier celui que tu souhaiterais tuer). Prenons un extrait de résultat de ps fx. J'ai lancé top dans un terminal, et je souhaite le tuer sans tuer le reste.
3376 pts/2 Ss 0:00 | | \_ /bin/bash 3416 pts/2 S+ 0:00 | | | \_ top
Ici, si je tue le processus 3416, je ne tue pas les autres processus, dont son processus parent (3376). Dans ton cas il faut distinguer si on parle d'un sous processus (comme ici top), auquel cas kill s'applique, ou vraiment d'un thread (auquel cas, voir cette discussion).
Bonne chance
Modifié le 21 août 2024 à 14:24
Ca remarche apparemment (ça fait depuis hier soir que je me tire les cheveux à essayer de comprendre à supprimer les cookies, à tester différents navigateurs). Bref :( !
Il semblerait que le problème soit en partie du (j'avais d'autres problèmes hier), à ce lien vers une courte video (j'ai découpé https de l'URL pour feinter) :
h t t p s ://raw.githubusercontent.com/phil294/AHK_X11/master/assets/demo.mp4
---
Comme tu n'as pas l'air de connaître, pour info, les outils autohotkey, autokey, AHK_X11 gèrent des scripts d'automation. Leur singularité, vient du fait qu'ils peut être procéduraux ou non. Tu peux coder très rapidement à un endroit, qu'en faisant la combinaison de touches [Ctrl][Alt][Entrée] tu ouvres le gestionnaire de tâche et à un autre endroit que quand tu saisis "btw" ça sera remplacé par "By The Way" (voir la courte vidéo tutoriel). Je me doute que ça se fait en Python, mais comme l'outil le gère bien, je l'utilisais pour ça.
---
Après avoir démarré autokey et exécuté le script résident Abbreviation from selection.py qui quand je tape une séquence de caractère, la remplace par une autre chaîne, j'ai :
user@host:~$ ps faux ... user 3719 0.3 0.1 324404 45680 ? Sl 20:12 0:15 \_ xfce4-panel --display :0.0 --sm-client-id 22757415b-b2cf-4bb7-b5fc-3180341b034e user 3735 0.3 0.1 612468 56576 ? Sl 20:12 0:16 | \_ /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libwhiskermenu.so 7 291504135 whiskermenu Menu Whisker Afficher un menu pour accéder facilement aux applications installées user 8486 0.2 0.2 1147052 91104 ? Sl 20:16 0:10 | | \_ /usr/bin/python3 /usr/bin/autokey-gtk -c user 3760 0.0 0.1 394572 42928 ? Sl 20:12 0:00 | \_ /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libsystray.so 6 291504137 systray Greffon de barre d’état Fournit des éléments d’indication d’état (indicateurs des applications) et des éléments de la zone de notification historique ...
Et les autres commandes testées :
user@host:~$ ps aux | grep autokey | grep -v grep user 8486 0.2 0.2 1146796 91080 ? Sl 20:16 0:09 /usr/bin/python3 /usr/bin/autokey-gtk -c user@host:~$ pstree -p $( pgrep autokey | sort | tail -1 ) autokey-gtk(8486)─┬─{autokey-gtk}(8491) ├─{autokey-gtk}(8492) ├─{autokey-gtk}(8497) ├─{autokey-gtk}(8498) ├─{autokey-gtk}(8499) ├─{autokey-gtk}(8500) ├─{autokey-gtk}(8503) ├─{autokey-gtk}(8504) ├─{autokey-gtk}(8505) ├─{autokey-gtk}(8506) ├─{autokey-gtk}(8507) └─{autokey-gtk}(8509) user@host:~$ ps aux | grep -i selection | grep -v grep | wc -l # => le script autokey exécuté n’apparaît même pas dans les processus user@host:~$ ps -T -p $( pgrep autokey | sort | tail -1 ) PID SPID TTY TIME CMD 8486 8486 ? 00:00:05 autokey-gtk 8486 8491 ? 00:00:00 gmain 8486 8492 ? 00:00:00 gdbus 8486 8497 ? 00:00:03 autokey-gtk 8486 8498 ? 00:00:00 autokey-gtk 8486 8499 ? 00:00:00 autokey-gtk 8486 8500 ? 00:00:00 autokey-gtk 8486 8503 ? 00:00:00 autokey-gtk 8486 8504 ? 00:00:00 autokey-gtk 8486 8505 ? 00:00:00 autokey-gtk 8486 8506 ? 00:00:00 autokey-gtk 8486 8507 ? 00:00:00 autokey-gtk 8486 8509 ? 00:00:00 dconf worker
J'ai aussi examiné le code de /usr/bin/autokey-gtk qui est très court (mais mon niveau pythonien ne me permet pas d'en comprendre tout le fonctionnement (déjà comment arrive t-il dans le corp du if, __main__ est le nom par défaut quand on exécute ? Et en supposant qu'il y arrive, que se passe t-il ensuite ?) :
#!/usr/bin/python3 # EASY-INSTALL-ENTRY-SCRIPT: 'autokey==0.96.0','console_scripts','autokey-gtk' __requires__ = 'autokey==0.96.0' import re import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit( load_entry_point('autokey==0.96.0', 'console_scripts', 'autokey-gtk')() )
---
Bref, je ne sais vraiment pas comment tuer les scripts résidents sauf à tout tuer autokey (ce que je fais déjà).
Toutefois, cela fait bien longtemps que j'ai laissé tomber autokey pour revenir à un vrai EDI Python (j'utilise aussi PyCharm que je trouve vraiment excellent), toutefois sans les facilités d'automation.
Mais je suis toujours curieux de savoir comment tuer les scripts de manière dissociée.
22 août 2024 à 00:26
Beaucoup de gratitude pour avoir creusé à ma place ;-)
Mais :
je croyais que ces commandes listaient justement ses threads ?
---
Ben le problème c'est qu'il n'y en a qu'une seule de fenêtre où tous les scripts sont centralisés et si tu fais xkill sur cette fenêtre ... autokey se ferme
---
Pour ma part, je me servais des scripts d'automation autohotkey, pour par exemple depuis une application donnée, déclencher une série de touches afin de modifier un réglage NON prévu par la personne qui l'a développé.
22 août 2024 à 15:43
Le problème n'est pas tant de les lister que de les tuer.
C'est ce que je craignais, tout est vu avec le même PID (à la différence de sous processus ou d'un fork). Les identifiants de threads (TID) sont un détail d'implémentation de la librairie qui implémente le threading. Je te renvoie à cette discussion qui explique que ce que tu crois être un PID n'est pas un PID au sens du kernel et donc de kill/xkill/pkill.
J'ai bien compris, mais si c'est scriptable, alors ledit script est appelable depuis les raccourcis globaux de ton gestionnaire de fenêtre que j'évoquais précédemment. Dans l'exemple ci-dessous en appuyant sur Meta+K je lance l'exécutable /usr/bin/konsole (mais ça pourrait être un script écrit dans un langage arbitraire).
Il est également possible de déclencher des appels dbus si l'application ciblée le permet (voir ici). Par ailleurs, l'application considérée (par exemple vim, konsole, pycharm ...) permet peut-être de configurer ses propres aliases ou raccourcis claviers. Si aucune de ces conditions n'est réunie, alors en effet, un outil comme autohotkey devient intéressant.
22 août 2024 à 20:52
OK ! C'est tordu, l'utilisateur n'a pas les mêmes possibilités d'action que le noyau. Chouette alors :D !
---
Je pense qu'on arrive dans une impasse. J'avais déjà laissé tomber le sujet mais en tout cas je te remercie pour ton aide précieuse :D !
A bientôt !
lnj
23 août 2024 à 14:42
En fait, tout est parfaitement normal :
Je pense aussi :-) C'était un plaisir de te répondre, mais si tu penses qu'on a fait le tour, je te propose de clore le sujet.
À bientôt :-)
23 août 2024 à 20:24
Je vais le clore bien qu'il ne soit pas résolu pour autant ;D
A bientôt !
lnj