Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Tuer un processus récalcitrant | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Tuer un processus récalcitrant Lun 17 Mar 2014 - 19:05 | |
| En testant un code de Sergeauze (posté dans : A l’aide : POINTEUR INCREMENTAL), le programme plante et aucune possibilité pour en sortir (on ne peut même pas accéder à la croix rouge : le curseur de la souris est devenu incontrôlable.) Faire appel au Gestionnaire des tâches pour terminer le processus n’est pas toujours aisé et il arrive parfois que le processus ne veuille pas se laisser tuer. Il arrive aussi qu’il y ait plusieurs instances d’un même processus : les tuer tous demande une petite gymnastique. Heureusement que l’invite de commande possède la commande Taskkill qui permet de tuer un processus même récalcitrant. Mais comment l’utiliser ? La solution est de créer un fichier batch. Un fichier batch est un fichier texte d’extension .bat contenant des commandes que le système peut exécuter. Sans entrer dans les détails, je vous livre la solution et le moyen de s’en servir. Copier ou coller le code suivant dans n’importe quel éditeur de texte (le Bloc-notes par exemple) - Code:
-
@echo off rem Forcer la fermeture de tous les processus qui ne répondent pas taskkill /f /fi "status eq not responding" pause
Enregistrer-le sur le bureau sous Kill.bat. Vous pouvez bien sûr choisir un autre nom, mais l’extension doit être obligatoirement .bat Ce code va forcer la fermeture de tous les processus qui ne répondent pas. Voici un petit commentaire sur son contenu. Sachez que les fichiers batch sont exécutés dans la fenêtre de la ligne de commande. Le système affiche sur cette fenêtre les différentes commandes du fichier au fur et à mesure de leur exécution. Si on ne veut pas voir ces lignes à l’écran, on utilise la commande echo off qui empêchera l’affichage des commandes suivantes, mais elle s’affiche elle-même. Le caractère @ placé avant echo off va faire en sorte que cette commande ne s’affichera pas non plus. La ligne suivante qui commence par REM est (vous l’avez deviné) un simple commentaire. La commande taskkill /f/fi "status eq not responding" est la commande qui va faire tout le travail, à savoir tuer tous les processus qui ne répondent pas Le paramètre /f : pour forcer les processus à se terminer. Le paramètre /fi : c’est un filtre pour spécifier les processus concernés. Normalement lorsqu’un fichier batch s’exécute, il rend la main et on ne voit pas le résultat de son travail. Pour empêcher la fenêtre de se fermer, on utilise la commande PAUSE qui maintiendra la fenêtre visible jusqu’à ce qu’on appuie sur une touche. Libre à vous de supprimer cette ligne dans le code. Pour pouvoir utiliser ce codeIl suffira de double-cliquer sur son nom pour le faire exécuter. Vous pouvez le tester sans danger : S'il y a des processus qui ne répondent pas, ils seront tout simplement tués. Sinon, vous recevez un message vous indiquant qu'il n'y a pas de tâches qui correspondent à votre demande. NB : Avec les filtres, vous pouvez imposer un ensemble de conditions qui doivent être respectées. Les filtres donnent à Taskkill une souplesse considérable et vous permettent de définir finement la cible. Pour en savoir plus, faites une petite recherche avec l'ami Google. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Tuer un processus récalcitrant Lun 17 Mar 2014 - 19:09 | |
| Très intéressante info, Papydall ! | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Tuer un processus récalcitrant Lun 17 Mar 2014 - 20:06 | |
| @papydall Mes excuses Sans la souris on ne peut rien faire et on se sent impuissant Chez moi un seul programme a bloqué pendant quelques minutes puis tout est redevenu normal Le processeur est très sollicité Merci pour cette astuce Aurais _je invente un nouveau virus ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tuer un processus récalcitrant Lun 17 Mar 2014 - 20:26 | |
| @papydall, et autres, j'ai depuis longtemps un petit programme, qui fait appel à taskkill, qui me permet de tuer sélectivement une tâche récalcitrante: affichage des tâches actives, et choix de la tâche à 'tuer'. J'ai un raccourci sur le bureau, et je peux dire que je l'utilise assez souvent, au cours de mes essais Panoramic... et autres aussi. - Code:
-
' Kill.bas tuer une tâche Windows récalcitrante DIM fm$, a$, i%, w0, h0, hp%, tsk$(200), nta LABEL Kill
fm$ = "C:\Temp\Tasklist.txt": ' fichier de manoeuvre, -- A AJUSTER -- ' paramètres de Tasklist, voir: http://windows.developpez.com/cours/ligne-commande/?page=page_19
EXECUTE_WAIT "Cmd.exe /c Tasklist.exe >" + fm$ FILE_OPEN_READ 1, fm$ FILE_READLN 1, a$: FILE_READLN 1, a$: FILE_READLN 1, a$: ' en-tête WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ IF INSTR(a$, "Console") > 0 a$ = LEFT$(a$, 20): nta = nta + 1: tsk$(nta) = a$ END_IF END_WHILE FILE_CLOSE 1: FILE_DELETE fm$ hp% = 13: w0 = 200: h0 = (nta+2)*hp%+65 WIDTH 0, w0: HEIGHT 0, h0: CAPTION 0, " - KILL -" LIST 1: WIDTH 1, w0-17: HEIGHT 1, h0-40: COLOR 1, 255,255,192 FONT_NAME 1, "Verdana": FONT_SIZE 1, 8 FOR i% = 1 TO nta ITEM_ADD 1, tsk$(i%) NEXT i% SORT 1 ITEM_INSERT 1,1," .TACHES CONSOLE ACTIVES." ITEM_INSERT 1,2," ----------------------------------" BUTTON 2: TOP 2, h0-60: LEFT 2, 4: WIDTH 2, w0-68: HEIGHT 2, 18: CAPTION 2, "Clic la tâche à tuer, puis ->" BUTTON 3: TOP 3, h0-60: LEFT 3, w0-62: WIDTH 3, 40: HEIGHT 3, 18: CAPTION 3, "Kill" ON_CLICK 3, Kill END
Kill: IF ITEM_INDEX(1)<3 OR ITEM_INDEX(1)>(nta+2) THEN RETURN EXECUTE "Cmd.exe /c taskkill.exe /F /IM " + ITEM_INDEX$(1) TERMINATE J'ai aussi sur le bureau un autre raccourci, spécialisé pour tuer PANORAMIC.exe, très efficace (il est dans la barre du bas, donc toujours accessible), mais je ne retrouve plus le source... mais c'est facile à faire. Maintenant je n'avais pas percuté sur le paramètre très intéressant de Taskkill: tuer tous les processus qui ne répondent pas. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Tuer un processus récalcitrant Lun 17 Mar 2014 - 21:41 | |
| Post très interessant, merci à vous | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Lun 17 Mar 2014 - 23:42 | |
| Syntaxe de la commande TaskKill :
TASKKILL [/S système] [/U utilisateur [/P [mot_passe]]]] { [/FI filtre] [/PID ID_processus | /IM image] } [/F] [/T]/
Paramètres de la commande : /S système : Spécifie le système distant auquel se connecter. N’est pas nécessaire pour le PC local. /U utilisateur : Spécifie le contexte utilisateur sous lequel la commande doit s’exécuter. Souvent inutilisé sur les PCs domestiques. /P mot_de_passe : Mot de passe pour l’utilisateur. /FI filtre : Affiche un ensemble de tâches qui correspond au critère spécifié par le filtre. /PID ID_processus : Spécifie le PID du processus à terminer. Non utilisé quand le nom de l’image est donné dans la commande. /IM image : Spécifie le nom de l’image du processus à terminer. Le joker "*" peut être utilisé pour spécifier tous les noms d’image. Non utilisé si le PID est donné dans la commande. /F : Force la fermeture de tous les processus. /T : Met fin au processus spécifié et tous les processus enfant qu’il a démarrés.
Remarque : Les paramètres comme le nom de l’image ou le PID peuvent ne pas être immédiatement évidents à trouver. La commande TASKLIST peut être utilisée pour les obtenir.
Exemples : taskkill /f /im notepad.exe /f permet de fermer le bloc-notes On peut fermer plusieurs programmes en une seule commande : taskkill /f /im notepad.exe /im mspaint.exe permet de fermer les deux programmes notepad et mspaint.
Voici comment filtrer le résultat de taskkill : Taskkill devient particulièrement puissant quand on utilise les filtres avec le commutateur "/fi". Diverses règles peuvent être formées à l'aide des opérateurs de comparaison. Opérateurs de comparaison pour les filtres EQ : Egal (equals) NE : Est différent de (Not Equals) GT : Plus grand que ( Greater Than). Utilisé uniquement avec des valeurs numériques. LT : Plus petit que ( Less Than) . Utilisé uniquement avec des valeurs numériques. GE : Supérieur ou égale (Greater or Equals). Utilisé uniquement avec des valeurs numériques LE : Inférieur ou égale( Less or Equals). Utilisé uniquement avec des valeurs numériques
Opérateurs des filtres et valeurs autorisées Paramètre Opérateurs valides Valeurs valides ImageName EQ, NE Chaîne de caractères PID EQ, NE, GT, LT, GE, LE Entier positif valide MemUsage EQ, NE, GT, LT, GE, LE Entier positif valide en kilo-octets. CPUTime EQ, NE, GT, LT, GE, LE Temps processeur au format hh:mm:ss Session EQ, NE, GT, LT, GE, LE Numéro de session Status EQ, NE Running, Not Responding Username EQ, NE Un nom d’utilisateur valide (peut être SYSTEM, SERVICE LOCAL, SERVICE RESEAU) WindowTitle EQ, NE Chaîne de caractère valide Services EQ, NE Nom de service Modules EQ, NE Nom de DLL
Exemples d’utilisation des filtres dans TASKKILL Avec les filtres, vous pouvez imposer un ensemble de conditions qui doivent être respectées. Les filtres donnent à Taskkill une souplesse considérable et vous permettent de définir finement la cible. Quelques exemples sont donnés ci-dessous. Remarquez qu'il n'est pas nécessaire d'utiliser un nom d'image spécifique ou un PID quand vous utilisez les filtres. taskkill /f /fi "status eq not responding" : Forcer la fermeture de tous les processus qui ne répondent pas. taskkill /f /fi "modules eq kgf.dll" : Forcer la fermeture de tous les programmes utilisant un fichier DLL spécifique (kgf.dll dans cet exemple). taskkill /f /fi "memusage gt 40000" : Fermer tous les programmes qui utilisent une grande quantité de mémoire (> à 40 Mo dans cet exemple). A utiliser avec précaution
La commande TASKLIST
Cette commande donne des détails sur les programmes et les processus en cours d’exécution. Elle peut être utilisée pour savoir combien de mémoire et de temps CPU les processus utilisent, quelles DLLs sont utilisées etc.
Par exemple, en ligne de commande entrez TASKLIST suivi de <ENTER> Vous obtenez un tableau comportant cinq collonnes d’informations.
Nom de l’image Le nom du processus ou du fichier exécutable exécutant le processus
PID
L'identifiant de processus. Le système assigne un numéro à chaque processus pour pouvoir en garder la trace. Il est possible d'avoir plusieurs processus en cours d'exécution portant le même nom, mais le PID sera unique pour chacun. Notez que le PID ne sera pas le même à chaque fois que vous ouvrirez un programme en particulier. Vous pouvez avoir besoin du PID pour utiliser certains autres outils de diagnostic, et Tasklist vous fournit un moyen d'obtenir cette information.
Nom de la session
A moins que vous ne soyez sur un réseau, vous devriez lire "Console" indiquant que le processus a été démarré localement. Les utilisateurs d'ordinateurs personnels peuvent généralement ignorer cette colonne. Numéro de session Chaque session possède un numéro assigné. Les utilisateurs d'ordinateurs personnels peuvent ignorer également cette colonne.
Utilisation mémoire Cette colonne donne des informations utiles pour savoir combien de mémoire (en Ko) un processus utilisait au moment où Tasklist a été exécuté.
Des colonnes supplémentaires peuvent être affichées en mode "verbose" qui est obtenu en utilisant le commutateur "/v". Les colonnes sont les suivantes : Status Donne l'état du processus : "Running", "Not Responding", ou "Unknown". Utile pour trouver les processus plantés. Le statut "Unknown" (inconnu) peut faire référence à un processus normal, mais "Not Responding" (pas de réponse) indique un processus qui devrait être arrêté. Nom d'utilisateur Indique le nom du compte qui a lancé le processus, Windows lui-même va démarrer de nombreux processus et les comptes systèmes qui vont apparaître dans cette colonne sont : SYSTEM, SERVICE LOCAL ou SERVICE RESEAU, accompagnés du nom de domaine local AUTORITE NT. Temps processeur La quantité totale de temps processeur utilisé par le processus depuis son démarrage. Ce nombre peut être très grand si vous n'éteignez jamais l'ordinateur. Titre de la fenêtre Nom de la fenêtre du processus, si elle existe. Aide parfois à identifier quel programme est en cause.
Syntaxe complète de la commande TASKLIST TASKLIST [/S système [/U utilisateur [/P mot_de_passe]]]] [/M [module] | /SVC | /V] [/FI filtre] [/FO format] [/NH]
Remarque : cette commande est insensible à la casse.
Exemples d’utilisation TASKLIST /SVC : donne un tableau associant le nom de l’image, le PID et les services. On peut evidemment rédiriger la sortie de la commande. Par exeùmple : TASKLIST /svc |clip : exécute la commande et redirige la sortie vers le clipboard. Ouvrez le bloc-notes(par exemple) et coller le contenu.
TASKLIST /m : permet de trouver toutes les DLLs utilisées par chaque processus.
Pour limiter la liste à une DLL spécifique, utilisez son nom dans la commande. tasklist /m oleaut32.dll : permet de voir uniquement les processus qui utilisent oleaut32.dll.
On peut utiliser les filtres (comme dans TASKKILL) Exemples : tasklist /fi "status eq not responding" : permet de trouver les processus qui ne répondent pas. tasklist /fi "memusage gt 40000" : permet de savoir quels sont les processus qui utilisent beaucoup de mémoire (> 40 Mo dans cet exemple.) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 18 Mar 2014 - 1:52 | |
| Tiens, tiens, voilà que notre pacifique Papydall se transforme en tueur à gage...(de processus). En tout cas c' est un sujet que je vais garder sous le coude ...très, très intéressante cette histoire. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Mar 18 Mar 2014 - 3:15 | |
| Merci à vous tous pour vos intervention. - sergeauze a écrit:
- @papydall
Mes excuses Tu n’as pas à t’excuser. C’est grâce à ton code que j’ai eu l’idée de partager cette astuce. J’ai pu même faire réagir un JL trente cinq (allez chercher pourquoi 35 et non 36 !) qui lui aussi a eu la bonté de nous faire partager ses connaissances. - ygeronimi a écrit:
- En tout cas c' est un sujet que je vais garder sous le coude ...très, très intéressante cette histoire.
Il vaut mieux le garder sur le bureau! Vive PANORAMIC ! Vive le FORUM ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Mar 18 Mar 2014 - 16:00 | |
| Voici une autre façon 100% Panoramic pour tuer un processus qui ne répond plus. Exécutez le programme suivant qui contient une unique ligne - Code:
-
execute_wait "cmd.exe /c taskkill /f /fi" +CHR$(34)+ "status eq not responding" + chr$(34)
Faites-en un exécutable : par exemple Kill.exe. Enregistrez-le sur le bureau ou mieux épinglez-le sur la barre de tâche. Comme la barre de tâche est toujours (ou presque toujours !) visible et donc accessible, il vous suffira d’un clic sur l’icône de Kill.exe pour vous débarrasser de tous les processus qui ne répondent pas ( sont-ils devenus muets ou sourds ? ) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Mar 18 Mar 2014 - 18:56 | |
| Voici une autre astuce pour arrêter l’ordinateur. Les ingénieurs de Microsoft n’ont pas trouvé mieux que pour arrêter l’ordinateur on doit passer par le bouton Démarrer. Donc, pour arrêter vos PCs, vous passez par Démarrer, Arrêter et … (vous connaissez la manip, je ne vous apprend rien). Il est connu que certains (pour ne pas dire la majorité de) programmeurs sont … heu … paresseux. J’en fais partie. Ils cherchent à simplifier (optimiser ?) à l’extrême leurs interventions dans une tâche quelconque. Que dites-vous de pouvoir arrêter votre ordinateur avec un seul click ? Ok ? Bon, on y va. Une fois de plus, on trouve notre bonheur dans une commande de l’invite de commande. Il s’agit de la commande shutdown. Cette commande possède plusieurs paramètres. Nous en utiliserons deux. Voici le code en Panoramic. - Code:
-
execute_wait "cmd.exe /c shutdown -s -t 00"
Faites-en un exécutable : par exemple Eteindre.exeEpinglez-le sur la barre de tâche (par exemple à côté du bouton Démarrer). Et, pour arrêter Windows, il suffira de cliquer sur l’icône. C’est tout simple. Commentaire : Le paramètre –s pour arrêter l’ordinateur. Le paramètre –t xxx pour définir la période de délai avant l’arrêt au bout de xxx secondes. La plage valide est comprise entre 0 et 315360000 (10 ans ! Les ingénieurs de Microsoft voient loin et même assez loin) 30 secondes est la valeur par défaut. Dans notre exemple –t 00 indique que l’arrêt soit immédiat. Si cette astuce peut vous être utile ....
Dernière édition par papydall le Mar 18 Mar 2014 - 23:26, édité 4 fois (Raison : Correction d'une erreur dans le code) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Tuer un processus récalcitrant Mar 18 Mar 2014 - 20:50 | |
| C'est très utile tout çà,
MAIS sous W8 la dernière " shutdown." Ne fonctionne pas. ?????
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Mar 18 Mar 2014 - 22:47 | |
| Je suis désolé. C'est de ma faute : une espace était de trop dans le code. J'ai corrigé ci-haut Voici le bon code - Code:
-
execute_wait "cmd.exe /c shutdown -s -t 00"
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Tuer un processus récalcitrant Lun 2 Nov 2015 - 21:55 | |
| Je complète: - Arrêt total: - Code:
-
EXECUTE "Cmd.exe /c C:\Windows\system32\shutdown.exe -s -f -t 0" - Reboot (bien utile aussi): - Code:
-
EXECUTE "Cmd.exe /c C:\Windows\system32\shutdown.exe -r -f -t 0" suivis de - Code:
-
TERMINATE (Execute_Wait n'a pas de sens ici) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Tuer un processus récalcitrant Lun 2 Nov 2015 - 22:44 | |
| Tu as bien fait de compléter, cher ami. | |
| | | Contenu sponsorisé
| Sujet: Re: Tuer un processus récalcitrant | |
| |
| | | | Tuer un processus récalcitrant | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |