Windows - Folyamat menedzselés parancssorból

forráskód letöltése
Az operációs rendszerben az aktuálisan futó folyamatokat/programokat kilistázhatjuk - több feltétel szerint - és bezárhatjuk parancssorból. A parancssori alkalmazások meghívását saját programunkba építhetjük. Megjegyzés
A cikkben tárgyalásra kerülő parancsok a Windows 2000 telepítése során nem kerülnek fel a merevlemezre. Telepítésükhöz helyezzük a CD meghajtóba az operációs rendszer telepítőlemezét, nyissuk meg a Windows Intéző segítségével a CD lemez \SUPPORT\TOOLS könyvtárát és kattintsunk kétszer a SETUP.EXE programra. A képernyőn megjelenő varázsló kérdéseire válaszolva végezzük el a telepítést. Külön figyelmeztetést erre vonatkozóan nem kapunk, de a telepítés végeztével indítsuk újra a számítógépet!

Linux / Unix rendszerek legismertebb parancsai közé tartozik a PS és a KILL. A PS az operációs rendszerben futó programokat/folyamatokat listázza ki, a KILL pedig ezek bezárására képes. A Windows 2000 is tartalmazza mindkettő megfelelőjét. Mindkét operációs rendszerben megvan ezek grafikus változata is, áttekinthető, könnyen kezelhető szolgáltatásként. Miért jó mégis a parancssori megoldás? Például azért mert saját programjainkból is meghívhatjuk őket, batch fájlokba illeszthetjük, stb.
A PS parancs Windows-os megfelelője a TLIST. Indítsunk el egy parancssori ablakot és írjuk be:
tlist
Megjelenik a képernyőn a helyi gépen éppen futó folyamatok listája, három oszlopban. Az oszlopoknak nincs fejléce, jelentésük a következő:
első oszlop: a folyamat PID (process ID = folyamat azonosító) száma
második oszlop: a folyamat neve (process name)
harmadik oszlop: a folyamat ablakának a fejléce - ha van ablaka

Válasszunk ki a listából egy PID számot és írjuk be (a 130 csak példa):
tlist 130
A PID-hez tartozó folyamatról jelenik meg egy részletes lista. A lista a következő adatokat tartalmazza: PID, a folyamat fájlneve, a folyamat ablakának a fejléce - ha van, munkakönyvtára (CWD), parancssori elérési útja (CmdLine), a használt memória mennyisége, a memória használat csúcsértéke (Peak), a használandó szálak száma (NumberOfThreads), a szálak listája és a hívott programok listája.
PID szám helyett használhatjuk a folyamat nevet:
tlist explorer.exe
Ugyanolyan szerkezetű listát kapunk, mint az előbb. A listázásnál élhetünk a DOS korszakból megismert "*" és "?" helyettesítő karakterekkel:
tlist ex*
Minden "ex"-el kezdődő nevű folyamatról részletes listát jelenít meg.
tlist ?md*
Minden folyamatról részletes listát jelenít meg, amelyiknek a neve egy tetszőleges karakterrel kezdődik, a második és harmadik karakter "m" és "d" és utána további tetszőleges karakterek következnek (pl.: cmd.exe).
Ugyanez nem részletes listában:
tlist -m ?md*
Ha ismerjük egy folyamat nevét, de nem tudjuk a PID számát, használjuk a "-p" paramétert:
tlist -p explorer.exe
Az eredmény most az "explorer.exe" PID száma. A folyamatokhoz tartozó szolgáltatásokat (services) is kilistázhatjuk:
tlist -s
Az utolsó példánk a folyamatok egymáshoz kapcsolódását jeleníti meg:
tlist -t
Az ablak baloldali legelső oszlopában a szülő folyamatok kaptak helyet, tőlük jobbra - alattuk, pedig a hozzájuk kapcsolódó gyermek folyamatok láthatók.
Most már tudjuk, hogy a helyi gépen éppen futó folyamatok adataihoz miként férünk hozzá. Egy folyamat megszüntetéséhez (bezárásához) használjuk a KILL parancsot. A KILL küld egy leállási kérést a folyamathoz. A 32 bites programok, ha nem fagytak le, ezt a kérést tolerálják. Nem mentett adatok esetén a felhasználónak felajánlják a mentést, majd ennek megtörténte után (vagy meg nem történte után - a felhasználó döntésétől függően) befejezik működésüket. 16 bites vagy lefagyott alkalmazásoknál ez a módszer nem működik, ott feltétel nélküli folyamat leállításra (force terminate) van szükség. Két gyakorlati példán keresztül érthetővé válik a különbség:
Indítsuk el a "Paint" programot (Start > Programok > Kellékek > Paint). A folyamatok között megjelent az "mspaint.exe". Rajzoljunk valamit a Paint-be, de ne mentsük el. Parancssorban írjuk be:
kill mspaint
A rajzoló program felajánlja az eddigi munkánk elmentését. Ha igennel válaszolunk elmenthetjük a rajzot, majd bezáródik a program. Ha nemmel válaszolunk, azonnal bezáródik a program. Ha a mégse mellett döntünk, folytathatjuk a munkát. Bármelyiket is választottuk, a programból való kilépés feltételhez volt kötve. Ez csak olyan esetekre vonatkozik, amikor értelme van a feltételnek. Tehát ha nem rajzolunk semmit és úgy adjuk ki a fenti parancsot, akkor szintén feltétel nélküli a kilépés.
Bezárhatunk egy programot úgy is, hogy nem törődve a következményekkel azonnal és feltétel nélkül tesszük meg. Indítsuk el ismét a Paint-et és rajzoljunk valamit, majd írjuk be parancssorban:
kill -f mspaint
A program kérdések nélkül bezáródott. Ilyenkor az utolsó mentés óta készült munkák elvesznek. Lefagyott folyamatokat lehet, hogy csak így tudunk befejezni. A helyettesítő karakterek a KILL parancsnál is használhatók:
kill -f mspai*
Ebben és az előző esetben is minden olyan folyamat bezáródik, amelyik neve megfelel a KILL utáni feltételnek.