Procesy a příkazový řádek Windows

30. 3. 2009

Sdílet

 Autor: Redakce

Potřebujete ukončit běžící aplikaci, resp. několik programů najednou? Máte problém se spuštěním Správce úloh? Pro rychlou práci s procesy spuštěných aplikací ve Windows můžete použít i příkazový řádek. Nabízí totiž hned několik nástrojů pro zobrazování informací o procesech, jejich závislostech na DLL, využívání systémových zdrojů, ale také pro ukončování a zabíjení procesů.

Tímto článkem nechci suplovat nápovědu pro příkazový řádek Windows ani pro jednotlivé příkazy, které si uvedeme. Nabízím vám několik tipů na konkrétní úkoly, které můžete pomocí příkazového řádku s vybranými procesy provádět.

Připravte si příkazový řádek, který ve Windows XP spustíte po stisku Win-R a zadáním příkazu cmd. U Windows Vista jej musíte spustit v administrátorském režimu, čili zadejte cmd do vyhledávacího políčka v nabídce Start, klepněte na nalezený program pravým tlačítkem myši a zvolte funkci Spustit jako správce.

Zobrazení informací o procesech

Prvním příkazem, který si ukážeme, je tasklist. Zobrazuje jednoduchý seznam běžících procesů, kde můžete vidět jejich název, identifikátor PID, název a číslo relace a informaci o tom, kolik paměti daný proces momentálně zabírá.

Seznam procesů můžete vyexportovat do Excelu. To je například věc, kterou vám grafický Správce úloh nenabídne. Nejprve spusťte příkaz s parametrem pro převod údajů z tabulky do formátu CSV: tasklist /Fo Csv. Jak uvidíte, výsledek bude převeden na hodnoty v uvozovkách a oddělené čárkami.

Pro uložení tohoto výstupu do souboru CSV, který bez problému zpracujete v Excelu nebo jiném tabulkovém programu, použijte příkaz v tomto tvaru: tasklist /Fo Csv >> procesy.csv. Soubor vznikne v aktuální složce, kde se v příkazovém řádku nacházíte.

Tip: Do souboru můžete uložit jakýkoli výstup programů spouštěných v příkazovém řádku. Stačí použít znaky >>, za které uvedete název souboru, do kterého má příkazový řádek výstup uložit.

Výše uvedené příkazy můžete ještě zkombinovat s přepínačem /V. Například tasklist /V zobrazí na obrazovce trochu více informací. K těm základním přidává aktuální stav procesu, uživatele, pod kterým proces běží, čas a pojmenování procesu určené k zobrazení v titulku okna aplikace.

Chcete-li si do CSV vyexportovat i tyto podrobnější informace, pak to jednoduše zkombinujte do podoby tasklist /V /Fo Csv >> procesy.csv.

Procesy a služby

Zůstaňme ještě u příkazu tasklist. Při použití přepínače /Svc nám totiž dodá informace o tom, jaký je vztah mezi spuštěnými procesy a spuštěnými službami. Výstup ve formě tabulky zobrazuje název procesu, jeho identifikátor PID a veškeré služby, které s tímto procesem souvisejí (jsou-li takové). Díky tomu si můžete udělat lepší představu o tom, co se ve vašem systému děje.

Příkaz tasklist /Svc můžete zkombinovat s přepínačem pro formátování do CSV, ovšem výstup z něj můžete uložit do souboru i bez toho pomocí tasklist /Svc >> vztahy.txt. Jelikož je výstupní tabulka dobře formátovaná, i tento soubor můžete docela snadno otevřít v Excelu a různě filtrovat nebo řadit jeho informace.

Procesy a knihovny DLL

Při odhalování problémů počítače s některými programy může být nápomocna také informace o tom, jak jsou jednotlivé procesy provázány na knihovny DLL. Pomůže vám to zjistit, proč některé programy nereagují, jak by měly, nebo proč způsobují zatuhnutí počítače.

Příkazem tasklist /M zobrazíte seznam procesů s návazností na použité DLL. Pokud o nějaké knihovně DLL víte, že způsobuje počítači problémy, můžete si do seznamu vypsat jen ty spuštěné procesy, které tuto knihovnu používají, čili takto: tasklist /M knihovna.dll.

Filtrování seznamu procesů

Myslím si, že export kompletního seznamu procesů do Excelu ve formě souboru CSV je dostatečný k tomu, abyste si mohli vyfiltrovat informace jen o tom, co potřebujete. Ovšem, pokud vás nezajímá uchovávání těchto informací a potřebujete je zobrazit operativně, bude se vám hodit znalost filtrování výpisu z tasklistu.

K filtrování slouží přepínač /Fi, za který musíte doplnit do uvozovek filtrovací výraz. Ten se skládá z názvu sloupečku, podle kterého filtrujete, operátoru a hodnoty, kterou se má filtr řídit. Názvy sloupců můžete použít tyto:

cputime, services, imagename, memusage, pid, session, sessionname, status, username, windowtitle

Jejich význam odpovídá českým popiskům, které tasklist /V zobrazuje.

Operátory mohou být následující:

  • eq - rovnost
  • ne - nerovnost
  • gt - větší než
  • lt - menší než
  • ge - větší než nebo stejný
  • le - menší než nebo stejný

Uveďme si teď několik příkladů:

tasklist /Fi "memusage gt 102400" - zobrazí procesy zabírající více jak 100 MB (číslo je v kilobajtech)

tasklist /Fi "imagename eq chrome.exe" - zobrazí procesy webového prohlížeče Google Chrome

tasklist /Fi "status eq unknown" - zobrazí procesy s neznámým stavem

Zabíjení a ukončení procesů ve Windows

Na závěr si ukážeme, jak můžete informace získané pomocí příkazu tasklist použít k ukončování a zabíjení procesů pomocí příkazového řádku. Slouží k tomu příkaz taskkill, který musíte doplnit několika přepínači, aby věděl, co dělat.

Označení procesu, který má být pomocí příkazu taskkill ukončen, provedete několika způsoby. Vyberte si, zda je pro vás lepší použít identifikátor PID, nebo označení názvu procesu:

taskkill /pid 5560 - ukončí proces s PID 5560

taskkill /im chrome.exe - ukončí všechny procesy s názvem chrome.exe

Pokud se podíváme na výše uvedenou ukázku filtrování, všimněte si, že prohlížeč Google Chrome otevírá pro každé okno samostatný proces. To zabraňuje kompletnímu pádu celé aplikace, zároveň však nemůžete celý Google Chrome zavřít na základě uvedení jediného PID. Použijete-li však přepínač /im, pak zavřete všechna okna prohlížeče najednou.

Příkaz taskkill dále umožňuje ukončovat všechny podprocesy související se zavíraným procesem. Například taskkill /t /pid 5560 ukončí proces s PID 5560 a všechny jeho podprocesy, tedy třeba programy, které spustil.

Pokud nějaká aplikace přestane reagovat a odmítá se normálně ukončit, můžete ukončení procesu vynutit a tzv. jej zabít. Použijte k tomu přepínač /F, tedy taskkill /F /pid 5560. Můžete jej samozřejmě kombinovat i s přepínačem /im.

bitcoin_skoleni

Zajímavou kombinaci představuje příkaz taskkill spolu s filtrováním. Můžete jej tak použít k hromadnému ukončení všech procesů, které nereagují: taskkill /F /Fi "status eq not responding". Jen upozorňuji, že některé procesy se mohou tvářit jako nereagující a přitom normálně běžet.

Touto malou ukázkou práce s procesy jsem se vám pokusil ukázat, že i příkazový řádek Windows může nabídnout zajímavé nástroje. Novým čtenářům připomínám starší článek na podobné téma: Příkazový řádek Windows: práce s diskem.