Mettre un processus en pause en un clic

Résolu/Fermé
othmane94 Messages postés 150 Date d'inscription jeudi 19 janvier 2012 Statut Membre Dernière intervention 30 janvier 2013 - 25 avril 2012 à 15:51
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 - 28 avril 2012 à 11:24
Bonjour,

Je cherche a savoir est ce que je peux mettre un processus en pause en cliquant sur un seul ou deux boutton, par exemple F2, et de le reprendre une autre fois par un autre clic ou un truc du genre. Merci
J'aimerai savoir si c posible ou existe t'elle bien une altérnative pour mettre un processus en pause sans top perdre de temp


A voir également:

5 réponses

mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
Modifié par mamiemando le 25/04/2012 à 21:00
Oui c'est possible :
http://linuxpoison.blogspot.com/2007/11/temporarily-suspend-process.html

Un exemple : je lance une application graphique par exemple kwrite :

(mando@aldur) (~) $ kwrite &  
[1] 2948


Je vois que son PID est 2948

(mando@aldur) (~) $ ps faux | grep kwrite  
mando     2948  3.7  1.6 308608 34316 pts/1    Sl   20:56   0:00      \_ kwrite  
mando     2951  0.0  0.0   7812   840 pts/1    S+   20:56   0:00      \_ grep kwrite


Pour le mettre en pause :

(mando@aldur) (~) $ kill -STOP 2948


Pour le reprendre :

(mando@aldur) (~) $ kill -CONT 2948


Dans ton cas, il suffit de configurer dans ton environnement graphique un raccourci clavier pour lancer la bonne commande. Ensuite tu dois récupérer le PID de la fenêtre et injecter son résultat dans la commande kill. Pour cela je pense que tu peux t'inspirer de ça pour combiner correctement xprop et xdpyinfo
https://www.linuxquestions.org/questions/programming-9/getting-the-pid-of-the-top-active-window-776938/

En effet, cette commande permet de récupérer le window ID d'une fenêtre :

xprop | grep "WM_CLIENT_LEADER" | cut -d"#" -f2


Ensuite, on peut injecter cet ID dans xprop. Exemple : si je lance cette commande et que je clique sur la fenêtre de chromium j'obtiens :

(mando@aldur) (~) $ xprop -id $(xprop | grep "WM_CLIENT_LEADER" | cut -d"#" -f2)  
...  
WM_CLIENT_LEADER(WINDOW): window id # 0x3c00001  
_NET_WM_PID(CARDINAL) = 2638  
WM_LOCALE_NAME(STRING) = "fr_FR.UTF-8"  
WM_CLIENT_MACHINE(STRING) = "aldur"  
... 
_NET_WM_NAME(UTF8_STRING) = "Chromium"


Ok, on voit qu'on a bien les informations de la fenêtre qui nous intéresse. Il ne reste plus qu'à extraire du résultat de xprop le morceau qui nous intéresse, en gras ci-dessus, le PID.

xprop -id $(xprop | grep "WM_CLIENT_LEADER" | cut -d"#" -f2) | grep PID | cut -d"=" -f2


On voit qu'on récupère bien le PID de la fenêtre sur laquelle on clique. Il ne reste plus qu'à injecter ce résultat dans un "kill -CONT" (ou -STOP) et enfin associer cette commande au bon raccourci clavier

kill -STOP $(xprop -id $(xprop | grep "WM_CLIENT_LEADER" | cut -d"#" -f2) | grep PID | cut -d"=" -f2)


Bonne chance
1
othmane94 Messages postés 150 Date d'inscription jeudi 19 janvier 2012 Statut Membre Dernière intervention 30 janvier 2013 67
25 avril 2012 à 21:17
Merci beaucoup pour ta réponse.
En fait je n'ai pas compris grand chose car je suis encore un débutant de Linux, mais n'empêche que je vais essayer de comprendre et de le faire, Merci encore une fois : )
0
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
Modifié par mamiemando le 26/04/2012 à 00:57
Je t'invite dans ce cas à lire les man des commandes dont je parle et à lire un cours sur les processus.
http://www.mistra.fr/tutoriel-linux-processus.html

Dans l'idée, une tâche qui tourne (un processus) est identifié par un numéro (le PID). Les commandes qui permettent de manipuler des processus prennent souvent un PID en paramètre. En outre, interrompre un processus, le mettre en pause etc... consiste à lui envoyer un signal. Le but du jeu est donc d'envoyer le bon signal au bon processus. Typiquement, la commande kill permet d'envoyer un signal à un processus. C'est la première étape de ton besoin.

Traditionnellement le PID se récupère en regardant dans la table des processus (avec les commandes ps ou top par exemple). Dans ton cas, c'est un peu différent, on aimerait récupérer le PID d'un processus associé à une fenêtre en cliquant dessus. On sent que c'est tout à fait possible puisque la commande xkill permet de tuer une application sur laquelle on clique. Malheureusement, aucune commande ne semble permettre de récupérer le fameux PID directement. C'est donc la deuxième partie de notre besoin, mais elle est plus complexe à réaliser.

La commande xprop permet un certain nombre d'informations, parmi lesquelles un window ID. La première commande xprop dont je parle permet de récupérer ce window ID. Ensuite, on peut passer en paramètre cette information à une autre commande xprop qui renvoie d'autres informations, parmi lesquelles le PID, et c'est ce que fait la seconde commande xprop.

Maintenant il ne reste plus qu'à recoller les deux parties du raisonnement ensemble, en passant en paramètre le PID à kill. Si je résume on a donc ce cheminement logique :

clic sur la fenêtre ~~> [xprop] ~~> window id ~~> [xprop] ~~> pid ~~> [kill] ~~> fenêtre mis en pause

(un peu comme en maths quand on écrivait f(g(h(x))) (bref il est tard, toutes mes excuses si ceci évoque des souvenirs douloureux :p), et cette composition de fonctions se représente en shell avec l'opérateur $(...) qui permet d'injecter le résultat d'une commande comme le paramètre d'une autre commande :

kill -STOP $(xprop -id $(xprop | grep "WM_CLIENT_LEADER" | cut -d"#" -f2) | grep PID | cut -d"=" -f2)


Je ne sais pas si c'est plus clair, je ne vois pas trop comment l'expliquer de manière simple ;-)
0
othmane94 Messages postés 150 Date d'inscription jeudi 19 janvier 2012 Statut Membre Dernière intervention 30 janvier 2013 67
26 avril 2012 à 23:56
C'est déja suffisant, merci encore : )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
28 avril 2012 à 11:24
De rien :-) Bonne continuation !
0