A ps parancs használata Linux-folyamatok figyelésére

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.

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.

  Hogyan hozzunk létre Linux NAS-t az Amahi segítségével

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.

  Linux-telepítés klónozása a Clonezilla segítségével

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.

  A Funtoo Linux telepítése

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.