Zarządzanie procesami w Wierszu Poleceń

Jak już wielokrotnie udowadnialiśmy systemy Windows pozwalają wykonać prawie wszystko w wierszu poleceń, co nie tylko skraca czas wykonywania nużących czynności, ale dzięki plikom wsadowym pozwala je również automatyzować. Dzisiaj na tapetę weźmiemy procesy.

Wyświetlanie listy procesów

Pewnie każdy zna narzędzie Task Manager (Menedżer Zadań), który w Windowsach od zamierzchłych czasów wyświetla działające procesy (i nie tylko). Nie będziemy jednak opisywać go, gdyż wiersz poleceń jest dużo bardziej wciągający. Podpowiem tylko, że Menedżera Zadań można uruchomić w CMD poleceniem:

taskmgr

Gdybyście potrzebowali wyeksportować listę procesów do jakiegoś czytelnego kolorowego pliku to istnieje sprytny sposób na zrzucanie tejże listy do pliku .html. Działa to na wszystkich dystrybucjach Windows od XP / Windows Server 2003 do Windows 8 / Windows Server 2012 (na starszych edycjach nie udało mi się przetestować).

WMIC /OUTPUT:C:\ListaProcesow.html process get Caption,Processid,Commandline /format:htable

O podglądaniu procesów w wierszu poleceń wspominałem w artykule, w którym tworzyliśmy skrypt sprawdzający czy dany program jest uruchomiony. Użyłem wtedy wbudowanego w Windows polecenia tasklist, które wyświetla listę procesów. Warto jednak poznać kilka innych opcji.

Możemy wyświetlić listę procesów na zdalnym komputerze:

tasklist /S \\zdalny_komputer

Używając parametru /S, możemy sprecyzować użytkownika i jego hasło (oczywiście zadziała to razem ze wszystkimi innymi przełącznikami):

tasklist /S \\zdalny_komputer /U nazwa_użytkownika /P hasło

Tasklist potrafi wyświetlić listę procesów korzystających z danej biblioteki .dll. Przykład:

tasklist /m kernel32.dll

Aby wyświetlić listę usług wykorzystujących każdy proces użyjemy:

tasklist /svc

Alternatywą dla tasklist jest pslist który jest częścią kultowego pakietu programów „PSTOOLS” autorstwa Marka Russinovich’a. (Do sciągnięcia z http://download.sysinternals.com/files/PSTools.zip).

Jednym z narzędzi z tego pakietu jest opisywany wielokrotnie psexec i to powinna być wystarczająca rekomendacja dla innych narzędzi z tego pakietu:)

Jak się zaraz przekonacie, pslist ma znacznie więcej możliwości niż natywny tasklist.

pslist bez parametrów wyświetli nam listę procesów i całkiem sporo kolumn (m.in proces ID, CPU Time)
Podobnie jak w tasklist możemy podejrzeć listę procesów na zdalnym komputerze:

pslist \\komputer_zdalny

Oczywiście można sprecyzować login i hasło użytkownika:

pslist /u nazwa_użytkownika /p hasło

Możemy wyświetlić dane dla konkretnego procesu (wystarczy wpisać jego nazwę lub fragment).

pslist firefox

Przełącznik /d wyświetli nam informacje o wszystkich wątkach. Jeżeli wykonamy to polecenie bez podania konkretnego procesu to wyniki na pewno przekroczą domyślny bufor CMD więc, albo go sobie zwiększycie albo przekierujcie wynik do pliku tekstowego.

pslist /d

lub

pslist firefox /d

Przełącznik /m wyświetli szczegółowe informacje dotyczące pamięci.

pslist /m

Przełącznik /x zrobi to samo, co połącznie /d i /m:

pslist /x

Aby wyświetlić drzewo procesów użyjemy:

pslist /t

PSLIST jak TASK MANAGER

A teraz coś mocnego:) pslist może zadziałać jak Task Manager, czyli w czasie rzeczywistym może pokazywać m.in. obciążenie CPU. Służy do tego parametr /s. Domyślnie jednak będzie on przewijał listę procesów tak, że nie wiele zdążymy odczytać, więc warto połączyć go z /r oznaczającym interwał czasowy (podajemy ilość sekund).

pslist -s -r 10

Zamykanie (zabijanie) procesów

Skoro umiemy już wyświetlać procesy, nauczmy się je zamykać. Zacznijmy od Windowsowej komendy taskkill. Taskkill nie działa bez parametrów.

Aby zamknąć proces użyjemy przełącznika /IM i nazwy procesu:

taskkill /IM firefox.exe

Możemy zamknąć proces na zdalnym komputerze opcjonalnie podając użytkownika i hasło:

taskkill /S komputer_zdalny /U:użytkownik /P hasło /IM firefox.exe

Pozostałe opcje pozwolę sobie przeskoczyć. Możecie je sobie podejrzeć jak zawsze dzięki przełącznikowi /?.

Pakiet PSTOOLS ma do zaoferowania narzędzie pskill, a jego składnia jest bardzo prosta:

pskill \\komputer_zdalny -u użytkownik -p hasło nazwa_lub_ID_procesu

Parametry -u oraz –p są opcjonalne.

Zatrzymywanie procesów

Funkcja zatrzymywania procesów, znana pewnie wielu z Was z systemów z rodziny UNIX w Windowsach domyslnie nie występuje, ale można znaleźć narzędzia firm trzecich. Ja wspomnę o prostym i darmowym narzędziu z PSTOOLS, a mianowicie PsSuspend.exe

Zatrzymanie procesu na lokalnym komputerze wykonamy poleceniem:

PsSuspend [Id procesu]

Wznowienie procesu:

PsSuspend -r [Id procesu]

Zatrzymanie procesu na zdalnej maszynie:

PsSuspend \\nazwa_komputera [Id procesu]

Parametry -u -p podobnie jak we wszystkich innych programach z PSTOOLS, odpowiadają za opcjonalne podanie użytkownika i hasła.

Mam nadzieję, że niczego istotnego nie pominąłem oraz, że pokazane sztuczki wykorzystacie przy czymś bardziej konstruktywnym niż złośliwe ubijanie przeglądarki internetowej zdezorientowanemu koledze 🙂 Jeśli miałbym wskazać szczególnie wartościowy punkt tego artykułu, to będzie to wykorzystanie pslist w trybie menedżera zadań na serwerze, na  którym zużycie procesora osiąga skrajne wartości.  Pslist potrafi podejrzeć procesy nawet wtedy, gdy maszyna nie ma zasobów na zalogowanie nas i uruchomienie Menedżera zadań.

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

3 komentarze

  1. sprawdzalski napisał(a):

    na jakich ci koleżko windowsach działa to „pslist /t”??? ja mam win7 i pisze „Nazwa ‚pslist’ nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy.”
    ..chyba coś z tym tutkiem nie halo?… co?

    • Dariusz Góra napisał(a):

      W sumie RTFA powinno wystarczyć, ale z racji tego, że skrót pewnie też trzeba będzie tłumaczyć, napiszę że, jeżeli przeczytałbyś artykuł, to znalazłbyś tam informację o tym, że pslist dostępny jest w pakiecie pstools i nie jest natywną aplikacją w windzie.
      Teraz u Ciebie halo?

    • Anonim napisał(a):

      Dobre 😉

Dodaj komentarz