A ps paranccsal pillanatképet készíthet a Linux számítógépen futó folyamatokról. Keresse meg a folyamatokat név, felhasználó vagy akár terminál alapján, annyi vagy kevés részlettel, amennyire szüksége van. Megmutatjuk, hogyan.
Tartalomjegyzék
Folyamatkezelés Linuxon
Minden Linux- és Unix-szerű operációs rendszer dobogó szíve a kernel. Számos feladata közé tartozik a rendszererőforrások, például a RAM és a CPU-idő elosztása. Ezeket valós időben kell zsonglőrködni, hogy minden futó folyamat méltányos részesedést kapjon, az egyes feladatok prioritásának megfelelően.
Néha a feladatok elakadhatnak, szűk körbe léphetnek, vagy egyéb okok miatt nem reagálnak. Vagy tovább futnak, de túl sok CPU-időt vagy RAM-ot zabálnak fel, vagy hasonlóan antiszociális módon viselkednek. Néha a feladatokat le kell ölni minden érintettnek való kegyelemből. Az első lépés. Természetesen azonosítani kell a kérdéses folyamatot.
De lehet, hogy egyáltalán nincs feladat- vagy teljesítményproblémája. Talán csak arra kíváncsi, mely folyamatok futnak a számítógépében, és szeretne bekukucskálni a motorháztető alá. A ps parancs mindkét igényt kielégíti. Ez ad neked egy pillanatkép arról, hogy mi történik a számítógépében „épp most.”
A ps elég rugalmas ahhoz, hogy pontosan megadja a szükséges információkat, pontosan olyan formátumban, ahogyan szeretné. Valójában a ps-nek nagyon sok lehetősége van. Az itt leírt lehetőségek a legtöbb általános igényt kielégítik. Ha mélyebben kell elmennie a ps-hez, mint ahogyan ebben a cikkben bemutattuk, akkor azt fogjuk látni, hogy a bevezetőnk megkönnyíti a man oldal emésztését.
Listázási folyamatok
A ps használatának legegyszerűbb módja, ha paraméterek nélkül elindítod:
ps
A ps megjeleníti a parancsot futtató felhasználó által elindított folyamatok listáját.
A négy oszlop a következő:
PID: A folyamat folyamatazonosító száma.
TTY: Annak a konzolnak a neve, amelyen a felhasználó bejelentkezett.
IDŐ: A folyamat által felhasznált CPU feldolgozási idő mennyisége.
CMD: A folyamatot elindító parancs neve
Listázási folyamat minden felhasználó számára
Az -e (összes folyamat kiválasztása) hozzáadásával a ps listázhatja azokat a folyamatokat, amelyeket minden felhasználó elindított, nem csak a ps parancsot futtató felhasználó. Mivel ez egy hosszú lista lesz, kevesebbre tesszük.
ps -e | less
A folyamatlista kevesebbre van bekötve.
Sokkal több bejegyzés található a listán, de ugyanazt a négy oszlopot látjuk, mint korábban. A kérdőjellel ellátott bejegyzések? a TTY oszlopban nem terminálablakból indultak el.
Folyamathierarchia megjelenítése
Néha segíthet egy probléma kiderítésében vagy egy adott folyamat azonosításában, ha láthatja, hogy mely folyamatok indítottak el más folyamatokat. Ehhez a -H (hierarchia) opciót használjuk.
ps -eH | less
A behúzás jelzi, hogy mely folyamatok melyik másik folyamat szülői.
Egy kis áttekinthetőség érdekében megkérhetjük a ps-t, hogy adjon hozzá néhányat ASCII vonalakat és a hierarchiát faként rajzolni. Ennek lehetősége az –erdő opció.
ps -eH --forest | less
Így könnyebben nyomon követhető, hogy mely folyamatok a szülői más folyamatoknak.
A folyamatok név szerinti listázása
A kimenetet a ps-től a grep-en át a listabejegyzésekig irányíthatja amelyek neve megegyezik a keresett kifejezéssel. Itt olyan bejegyzéseket keresünk, amelyek megfelelnek a „firefox” keresési kifejezésnek:
ps -e | grep firefox
Ebben az esetben a kimenet egyetlen bejegyzés az minket érdeklő folyamathoz. Természetesen, ha több Firefox-példányt indítottunk volna, akkor egynél több elem kerülne vissza a listába.
További oszlopok megjelenítése a kimenetben
Ha további oszlopokat szeretne hozzáadni a kimenethez, használja a -f (teljes formátum) kapcsolót.
ps -ef | less
A ps kimenete tartalmaz egy extra oszlopkészletet.
Az oszlopok a következők:
UID: A folyamat tulajdonosának felhasználói azonosítója.
PID: A folyamat folyamatazonosítója.
PPID: A folyamat szülőfolyamat-azonosítója.
C: A folyamatban részt vevő gyermekek száma.
STIME: Kezdés időpontja. Az az időpont, amikor a folyamat elkezdődött.
TTY: Annak a konzolnak a neve, amelyen a felhasználó bejelentkezett.
IDŐ: A folyamat által felhasznált CPU feldolgozási idő mennyisége.
CMD: A folyamatot elindító parancs neve.
Az -F (extra teljes formátum) opció használatával még több oszlopot kaphatunk:
ps -eF | less
Az ezúttal kapott oszlopok megkövetelik, hogy a képernyőt oldalra kell görgetni, hogy mindegyik megjelenjen.
A „jobbra nyíl” gomb megnyomásával a kijelző balra tolódik.
A most kapott oszlopok a következők:
UID: A folyamat tulajdonosának felhasználói azonosítója.
PID: A folyamat folyamatazonosítója.
PPID: A folyamat szülőfolyamat-azonosítója.
C: A folyamatban részt vevő gyermekek száma.
SZ: Méret a folyamatkép RAM-oldalaiban.
RSS: Resident set size. Ez a folyamat által használt nem cserélt fizikai memória.
PSR: A processzor, amelyhez a folyamat hozzá van rendelve.
STIME: Kezdés időpontja. Az az időpont, amikor a folyamat elkezdődött.
TTY: Annak a konzolnak a neve, amelyen a felhasználó bejelentkezett.
IDŐ: A folyamat által felhasznált CPU feldolgozási idő mennyisége.
CMD: A folyamatot elindító parancs neve.
A folyamatok listázása folyamatazonosító szerint
Miután megtalálta az Önt érdeklő folyamat folyamatazonosítóját, a ps paranccsal együtt megjelenítheti a folyamat részleteit. Ennek eléréséhez használja a -p (folyamatazonosító alapján) opciót:
ps -p 3403
A folyamat részletei a listában találhatók:
Nincs korlátozva egyetlen folyamatazonosítóra. Megadhatja a folyamatazonosítók listáját, szóközökkel elválasztva.
A folyamatok listázása parancs szerint
A -C (parancs) kapcsolóval a parancsnév használatával kereshet folyamatot. Vagyis a folyamatot elindító parancs neve. Ez finoman eltér a parancssortól, amely elérési útneveket és paramétereket vagy beállításokat tartalmazhat.
ps -C shutter
A zárolási folyamat részleteit felsoroljuk.
A felhasználó tulajdonában lévő folyamatok listázása
Egy adott felhasználó tulajdonában lévő folyamatok megtekintéséhez használja a -u (felhasználói lista) kapcsolót:
ps -u mary
Megjelennek a mary felhasználói fiókhoz tartozó folyamatok.
Listázási folyamatok terminálonként
A TTY-vel társított folyamatok megtekintéséhez használja a -t (TTY által kiválasztott) kapcsolót. TTY-szám nélkül használva a -t opció az aktuális terminálablakhoz kapcsolódó folyamatokról számol be.
tty
ps -t
A tty parancs azt jelenti, hogy ez 0 pszeudo-teletype. A ps -t által felsorolt folyamatok mindegyike a TTY pts/0-val van társítva.
Ha a parancssorban átadunk egy TTY számot, akkor jelentést kell kapnunk az adott TTY-hez kapcsolódó folyamatokról.
ps -t 1
Ezúttal a folyamatok mind a TTY pts/1-hez kapcsolódnak.
A megjelenítendő oszlopok kiválasztása
A -o (format) kapcsolóval kiválaszthatja, hogy mely oszlopokat szeretné bevenni a ps kimenetébe. Az oszlopokat név szerint adja meg. Az oszlopnevek (hosszú) listája a man oldal a „Szabványos formátum-meghatározók” című részben. Ebben a példában azt választjuk, hogy a kimenetben szerepeljen a CPU idő (pcpu) és a parancssor argumentumokkal (args).
ps -e -o pcpu,args | less
A kimenet csak a két kért oszlopot tartalmazza.
A kimenet rendezése oszlopok szerint
A kimenetet a –sort opcióval rendezheti. Rendezzük a kimenetet a CPU oszlop szerint:
ps -e -o pcpu,args --sort -pcpu| less
A „-” kötőjel a pcpu rendezési paraméterén csökkenő rendezési sorrendet ad.
A tíz leginkább CPU-igényes folyamat megtekintéséhez vezesse át a kimenetet a fejen parancs:
ps -e -o pcpu,args --sort -pcpu | head -10
Rendezett, csonka listát kapunk.
Ha több oszlopot adunk a megjelenítésünkhöz, akkor több oszlop szerint rendezhetünk. Adjuk hozzá a pmem oszlopot. Ez a számítógép memóriájának a folyamat által használt százalékos aránya. Kötőjel nélkül vagy plusz „+” jellel a rendezési sorrend növekvő.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
Megkapjuk a plusz oszlopunkat, és az új oszlop bekerül a rendezésbe. Az első oszlop a második oszlop előtt van rendezve, a második pedig növekvő sorrendben, mert nem tettünk kötőjelet a pmem-re.
Tegyük egy kicsit hasznosabbá, és adjuk hozzá a folyamatazonosító oszlopot (pid), hogy lássuk az egyes folyamatok folyamatszámát a listánkban.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
Most már azonosíthatjuk a folyamatokat.
Leölési folyamatok folyamatazonosító szerint
Számos módszert ismertettünk a folyamatok azonosítására, beleértve a nevet, a parancsot, a felhasználót és a terminált. Kitértünk arra is, hogyan lehet azonosítani a folyamatokat dinamikus tulajdonságaik, például a CPU-használat és a memória alapján.
Így, így vagy úgy, azonosítani tudjuk a futó folyamatokat. A folyamatazonosítójuk ismeretében (ha kell) bármelyik folyamatot leállíthatjuk a kill paranccsal. Ha meg akarjuk állítani a 898-as folyamatot, akkor ezt a formátumot használjuk:
sudo kill 898
Ha minden jól megy, a folyamat csendben leáll.
Gyilkossági folyamatok név szerint
A pkill parancs lehetővé teszi megöli a folyamatokat név szerint. Győződjön meg arról, hogy a megfelelő folyamatot azonosította! Ez a parancs leállítja a felső folyamatot.
sudo pkill top
Ismétlem, hogy nincs hír, az jó hír. A folyamat csendben leáll.
Több folyamat megölése név alapján
Ha egy folyamat több példánya is fut, vagy ha egy folyamat számos alárendelt folyamatot hozott létre (például a Google Chrome képes rá), hogyan szüntetheti meg őket? Ez ugyanolyan egyszerű. A killall parancsot használjuk.
Két példányunk van a legjobban futóból:
ps -e | grep top
Felmondhatjuk mindketten ezzel a paranccsal:
sudo killall top
A válasz hiánya azt jelenti, hogy nincs probléma, ezért mindkét folyamatot leállítottuk.
Dinamikus nézet tetővel
A ps kimenete egy pillanatkép nézet. Nem frissül. A folyamatok frissítési nézetéhez használja a top parancsot. Biztosítja a dinamikus nézet a számítógépen futó folyamatokról. A kijelző két részből áll. A képernyő tetején szövegsorokból álló műszerfali terület, a képernyő alsó részén pedig oszlopokból álló táblázat található.
Kezdje elölről ezzel a paranccsal:
top
Az oszlopok információkat tartalmaznak a folyamatokról:
PID: Folyamatazonosító
FELHASZNÁLÓ: A folyamat tulajdonosának neve
PR: Folyamat prioritás
NI: A folyamat szép értéke
VIRT: A folyamat által használt virtuális memória
RES: A folyamat által használt rezidens memória
SHR: A folyamat által használt megosztott memória
S: A folyamat állapota. Tekintse meg az alábbi listát azokról az értékekről, amelyeket ez a mező vehet fel
%CPU: a folyamat által az utolsó frissítés óta felhasznált CPU-idő részesedése
%MEM: a felhasznált fizikai memória részesedése
IDŐ+: a feladat által felhasznált teljes CPU-idő századmásodpercben
COMMAND: parancs neve vagy parancssor (név és parancssori paraméterek) Ha a parancsoszlop nem látható, nyomja meg a „Jobbra nyíl” gombot.
A folyamat állapota a következők egyike lehet:
D: Megszakíthatatlan alvás
R: Futás
S: Alvás
T: Nyomkövetés (leállított)
Z: Zombi
Nyomja meg a „Q” gombot a felülről való kilépéshez.
Mielőtt leöl egy folyamatot
Győződjön meg arról, hogy ez az, amit keres, és ellenőrizze, hogy nem okoz-e problémát. Különösen érdemes a -H (hierarchia) és –forest opciókkal ellenőrizni, hogy nincs-e benne olyan fontos gyermekfolyamat, amelyről megfeledkezett.