22.  2.  2012    Windows 7

Profi: Na procesy pomocí příkazů bez tajností

Autor: Doporučit článek  |  vytisknout vytisknout  |  textová verze  |  velikost písma ++++++

Jakmile spustíte aplikaci, odpovídá jí takzvaný proces, někdy jich může být i více. Pro jejich rozšířené zobrazení a správu máte v příkazovém řádku k dispozici praktické nástroje.

Pro rychlé zobrazení všech běžících procesů můžete využít služeb systémového příkazu tasklist, který navíc podporuje celou řadu doplňujících parametrů, s jejichž pomocí dokážete procesy velice dobře ukočírovat. Pokud spustíte příkaz tasklist bez jakýchkoliv doplňujících parametrů, obdržíte výpis běžících procesů. V tomto výpisu máte k dispozici sloupce s následujícím významem:

  • Název procesu – uvádí přesné pojmenování procesu, tedy název spustitelného souboru, který mu odpovídá. Pokud tedy máte například spuštěnou aplikaci ICQ, objeví se zde proces s názvem icq.exe, Wordu z balíku Microsoft Office odpovídá winword.exe apod.
  • PID – unikátní číselný identifikátor daného procesu, jehož pomocí na něj můžete odkazovat. Hodnotu PID využijete například při vypínání procesů, abyste nemuseli zdlouhavě vypisovat název daného procesu a zároveň se i vyvarovali problémů při shodném názvu více procesů – i procesy, které mají stejný název, musí mít kvůli jednoznačné adresaci odlišné PID.
  • Název relace, Relace – udává, v jakém kontextu byl daný proces spuštěn, o jaký typ se jedná.
  • Paměť – celková hodnota paměti, kterou daný proces aktuálně využívá. Díky této položce snadno zjistíte, které z procesů jsou v tomto ohledu nenasytné, tedy nadměrně vytěžují dostupnou fyzickou pamět.

Jednotlivé procesy mohou kromě standardních systémových prostředků využívat a poskytovat také takzvané služby, které v základním přehledu v příkazovém řádku nezobrazíte. Pro jejich detailní výpis použijte parametr /svc, ve výsledku tak po zadání příkazu tasklist /svc získáte třísloupcový výpis, v němž název procesu a PID doplňuje práv přehled služeb ve stejnojmenném sloupci.

01tasklist.png
Základní výpis procesů příkazem tasklist bez doplňujících parametrů

Rozšířené zobrazení informací

Pokud byste namísto jednoduchého výpisu procesů potřebovali získat detailní přehled i o dalších parametrech jednotlivých z nich, využijte parametr /V. Jakmile jej k základnímu příkaz tasklist přidáte, rozšíří se výpis o následující sloupce:

  • Stav – detailní informace o aktuálním stavu procesu, tedy jestli běží normálně, případně neodpovídá.
  • Uživatelské jméno – název uživatelského účtu, pod nímž proces běží, standardní podobou je doména\uživatel. Pokud je použita doména NT AUTHORITY, znamená to , že jde o proces spuštěný systémem Windows, jako název uživatelského účtu je pak použito označení SYSTEM, LOCAL SERVICE, resp. NETWORK SERVICE. Označení tedy může vypadat například takto: NT AUTORITY\NETWORK SERVICE.
  • Čas CPU – celkový procesorový čas, který byl daným procesem využit od spuštění.
  • Titulek okna – pojmenování okna, které můžete nalézt zobrazené v jeho pravém horním pruhu. Této informace využijte při přesnějším určení konkrétního procesu podle vzhledu okna, kterému by měl odpovídat.

Z uvedených sloupců je důležitý hlavně ten s názvem Stav, jelikož s jeho pomocí máte možnost odhalit procesy, které neodpovídají – jde o tedy o takové, jež takříkajíc „spadly“, „sekly se“. Díky aktuálnímu výpisu takovéto zaseknuté procesy objevíte, můžete je pak prostřednictvím PID ukončit, jak bude detailně popsáno dále. Pamatujte ale na to, že při násilném ukončení procesu můžete přijít o data, která jsou jím rozpracovaná, ale prozatím neuložená!

Odhalení problematických procesů přes knihovny

Ne každá chyba Windows bude mít detailní popisek, v čem je problém, typickým příkladem mohou být špatně použité knihovny DLL. Pokud se objeví hláška, že knihovna X.dll způsobila problém, ale nevíte, k jakému procesu je vázaná, můžete se stopováním pokročit díky příkazovému řádku. Samozřejmě můžete využít také specializované nástroje pro správu procesů, ty však nemusíte mít vždy po ruce, zato příkazový řádek a Správce úloh poslouží v drtivé většině případů.

Pro zjištění vazeb knihovny na konkrétní procesy spusťte příkazový řádek a příkazem tasklist /M se seznam aktuálně běžících procesů rozšíří i názvy použitých knihoven DLL. Pokud za parametr napíšete i název knihovny, ve výpisu budou pouze procesy, které ji využívají, a tak například tasklist /M netapi32.dll vypíše ty procesy, které využívají knihovnu netapi32.dll.

02dll.png
Výpis procesů, které využívají knihovnu netapi32.dll

Příkaz tasklist vám může nabídnout velice rozsáhlý výpis informací o aktuálně běžících procesech, často jej však budete chtít filtrovat, tedy omezit se jen na vybrané z nich. Právě k tomu účelu slouží parametr /FI, jenž vám dovolí provést filtrování podle libovolného ze sloupců, které jsou ve standardním i rozšířeném výpisu dostupné. Filtr můžete aplikovat s využitím hodnot, jež se porovnají.

Ukončení procesů příkazem taskkill

Příkaz tasklist vám umožňuje získat detailní informace o právě běžících procesech, jednotlivé z nich však s jeho pomocí nemůžete vypínat. Na pomoc proto přichází příkaz taskkill, který se právě na tuto funkci zaměřuje – nejjednodušší a nejvíce bezpečné použití je použití příkazu tasklist s parametrem /PID, jenž zajistí vypnutí procesu podle jeho identifikátoru, přesně tedy určíte, který proces bude ukončen. Například použitím příkazu takskkill /PID 1184 odešlete příkaz ukončení proceu s identifikátorem 1184 a získáte výslednou informaci, typicky v podobě ÚSPĚCH: Procesu s PID 1184 byl odeslán signál ukončení.

03tkill.png
Ukončení procesu příkazem taskkill, kterému je předán odpovídající identifikátor

Zmíněné použití příkazu taskkill s parametrem /PID má výhodu v tom, že ukončí přesně jeden proces, kterému odpovídá daný identifikátor. Velice často používanou alternativou je spuštění s parametrem /IM, za nějž vložíte nikoliv identifikátor, ale přímo název procesu. Mějte ale na paměti, že se požadavek na ukončení zašle všem takto pojmenovaným procesům, a tak není vhodné tento formát příkazu používat v případě systémových nebo jinak kritických procesů, jež se v paměti vyskytují násobně.

Také příkaz taskkill vám nabízí možnost ukončované procesy filtrovat, tedy omezit se jen na vybrané z nich. Právě k tomu účelu slouží parametr /FI, jenž vám dovolí provést filtrování podle libovolného ze sloupců, které jsou ve standardním i rozšířeném výpisu dostupné.

Požadavek na ukončení procesu není v uvedeném základním použití ultimativní, pokud totiž proces neodpovídá (ve výpisu příkazem tasklist má jako stav uvedeno NOT RESPONDING), pak tento požadavek nezpracuje. V podobně problematických případech proto využijte doplňujícího přepínače /F, jenž ukončení skutečně vynutí. I zde ale platí, že byste tuto variantu příkazu měli používat jen ve výjimečných případech a s rozmyslem, jelikož násilné ukončení procesu samozřejmě nezajistí uložení případně rozpracovaných dat.

Pro procesy je typické, že je jeden kořenový proces, který odpovídá hlavní aplikaci, postupně vytvoří několik dalších podprocesů, takzvaných potomků. Pokud použijete příkaz taskkill, ukončí se pouze jeden konkrétní proces, bez daných následníků – abyste vypnuli i všechny potomky, použijte rozšiřující parametr /T. Příkazem taskkill /T /PID 1184 tedy ukončíte nejen proces s identifikátorem 1184, ale také všechny další, které tento proces postupně vytvořil.




X

Doporučit článek

Vaše jméno:

Váš e-mail:

E-mail adresáta:

Komentář:

kontrolní kód

Odeslat


celkem 15

Poslední komentáře Komentáře

CZ parametry Xsoft 26.  2.  2012 18:17
Re: Co takhle Process Explorer? Karel 26.  2.  2012 14:23
Re: Co takhle Process Explorer? tom 26.  2.  2012 13:39
Re: Co takhle Process Explorer? Zdenek 26.  2.  2012 12:34
Re: Co takhle Process Explorer? Rejpal 26.  2.  2012 9:42
Přidat příspěvek Zobrazit vše