Vissza a bloghoz

Folyamatok kezelése Linuxban - útmutató a ps, kill és nice használatához

Folyamatok kezelése Linuxban - útmutató a ps, kill és nice használatához

Bevezetés

Amikor a legtöbben számítógépet használunk, különféle alkalmazásokat futtatunk. Ezeket az alkalmazásokat szervereknek vagy operációs rendszereknek nevezett programok futtatják. Sokféle szerver létezik, amelyek különböző módon működnek. Az egyik ilyen a Linux. A Linux az alkalmazásokat folyamatok formájában futtatja.

A Linuxban minden alkalmazásra „folyamatként” (process) hivatkozunk. A szerver képes kezelni a folyamat életciklusának alacsony szintű aspektusait. Felhasználóként szükség lehet arra, hogy interakcióba lépjen a szerverrel bizonyos magasabb szintű aspektusok módosítása érdekében. Különféle eszközök segítségével kommunikálhat az operációs rendszerrel és kezelheti azt. Számos parancs létezik, amellyel módosíthatja a szerver különböző aspektusait és funkcióit. Íme egy könnyen követhető útmutató arról, hogyan állíthatja be egyszerűen Linux-alapú szerverét Ubuntun. Továbbá megtanulhatja, hogyan telepítheti a LAMP stacket (Linux, Apache, MySQL, PHP).

Ez az útmutató arra összpontosít, hogyan használhatja a ps, kill és nice parancsokat a folyamatok kezelésére Linux alatt.

Futó folyamatok megtekintése Linux alatt

  • top

Kezdésként az egyik legalapvetőbb parancs, amelyet ismernie kell, a top. Ez az eszköz segít vizualizálni, hogy mely folyamatok futnak jelenleg a rendszeren. Így fog megjelenni, amikor futtatja:

top command output

 

Az eredmény tetején találhatók a rendszerstatisztikák. Ez információt nyújt olyan dolgokról, mint a rendszerterhelés és a feladatok száma. Ebben a példában látható, hogy egy futó folyamat és 55 inaktív (idle) folyamat van. Az inaktív vagy alvó folyamatok azok, amelyeket jelenleg nem használ. Ez azt jelenti, hogy nem foglalják a rendszererőforrásokat. Végül a felugró ablak aljához közel láthatja az összes futó folyamatot a használati statisztikákkal együtt.

  • htop

Mielőtt használná ezt a parancsot, telepítenie kell a tárolókból a következő beírásával és futtatásával:

Miután telepítette, a top parancshoz hasonló információk megjelenítésére használhatja. A fő különbség az, hogy a htop paranccsal egy sokkal felhasználóbarátabb eredményt kap:

htop command output

Mint látható, ez az eredmény könnyen követhető és értelmezhető.

A ps használata a folyamatok listázására

Bár a fent említett parancsokat használhatja a futó folyamatok megtekintésére, ezek nem biztos, hogy minden forgatókönyvet lefednek. Szerencsére egy erősebb és rugalmasabb eszköz áll rendelkezésünkre. Ez a ps parancs.

Nézzük meg, mit fog látni, ha a parancsot önmagában futtatja:

ps command output

Ebben a kimenetben az összes olyan folyamatot láthatja, amely az aktuális felhasználóval és munkamenettel kapcsolatban fut. Ez azonban nem ad túl sok információt.

Ha átfogóbb képet szeretne kapni a rendszeren futó összes folyamatról, egy argumentumot kell használnia. Egy argumentum lehetővé teszi az összes felhasználó által birtokolt folyamat megtekintését, függetlenül a terminál-hozzárendeléstől. A kimenet szintén nagyon felhasználóbarát és könnyen olvasható formátumban jelenik meg. Íme egy példa:

ps aux

Másrészt ezeket az információkat fa struktúrában is megjelenítheti. Itt, amint látni fogja, a hierarchikus kapcsolatok is nyilvánvalóvá válnak:

output in tree format

Ebben a példában látható, hogyan jelenik meg a kthreadd az azt követő folyamatok szülőjeként.

  • Mik azok a folyamatazonosítók (Process ID)?

Linux- vagy Unix felhasználóként ismernie kell a folyamatazonosítókat. Ezeket PID-ként is ismerik, és a rendszer által az egyes folyamatokhoz rendelt egyedi azonosítók. A szerver ezek alapján követi nyomon az egyes folyamatokat. Egy adott folyamat PID-jének lekérdezéséhez a pgrep parancsot kell használnia, így:

A rendszer indításakor (bootolásakor) elindul az első folyamat. Ezt a folyamatot init-nek hívják. Alapértelmezett mechanizmusként az init folyamat az „1”-es PID-t kapja. Ennek a folyamatnak a PID-jét a következőképpen ellenőrizheti:

Az init folyamat felelőssége ezután az összes többi program vagy folyamat elindítása. Érthető módon a következő folyamatok növekvő vagy nagyobb PID-vel fognak rendelkezni.

  • Mik azok a szülőfolyamatok?

Egy másik fogalom, amit érdemes ismerni, a szülő folyamat (parent process). Ha az „A” folyamat elindítja a „B” folyamatot, akkor az „A” folyamat a „B” folyamat szülő folyamata. A megkülönböztetésük érdekében a rendszer egy PPID-t rendel a szülő folyamatokhoz. Ezt a PPID-t láthatja az oszlopfejlécekben, amikor valamilyen felügyeleti parancsot futtat, mint például a top, htop és ps.

  • Mik azok a szülő-gyermek kapcsolatok?

Mint már tudjuk, a szülő folyamatok gyermek folyamatokat hoznak létre. Ez a létrehozás két lépésben történik. Az első a fork(). Ez egy új címtartomány létrehozásával kezdődik. Emellett másolja a szülő erőforrásait a „copy-on-write” (íráskor másolás) módszerrel, hogy azok a gyermek folyamat számára is elérhetőek legyenek. A második az exec(). Ez felelős egy futtatható fájl betöltéséért és végrehajtásáért a frissen létrehozott címtartományban.

  • Mi történik, ha a gyermek folyamat a szülő folyamat előtt áll le?

Ha ez történik, a gyermek folyamat zombivá (zombie) válik. Ez mindaddig így marad, amíg a szülő folyamat információt nem gyűjt róla, vagy nem közli a kernelszinttel, hogy nincs szüksége a kapcsolódó információkra. Amint ez megtörténik, a folyamat által használt erőforrások felszabadulnak.

  • Mi történik, ha a szülő folyamat a gyermek folyamat előtt áll le?

Ebben a forgatókönyvben a rendszer a gyermek folyamatot egy másik szülő folyamathoz rendeli hozzá. Ez lehet az init vagy bármely más folyamat.

Szignálok küldése folyamatoknak Linux alatt

Egy adott folyamatot szignál (jelzés) küldésével bírhat rá a válaszadásra. A szignálok segítenek az operációs rendszerrel való kommunikációban. A szignál segítségével leállíthat egy alkalmazást, elindíthatja, vagy módosíthatja egy adott viselkedését vagy feladatát.

  • A PID használata szignálok küldésére

Az egyik segédprogram, amellyel szignálokat küldhet Linux alatt, a kill. Ez a parancs – ahogy a neve is sugallja – segít leállítani vagy megölni egy folyamatot:

Ez a segédprogram a TERM szignált küldi a folyamatnak, ami arra utasítja, hogy állítsa le a folyamatot. A parancs hatására az alkalmazás elvégzi a tisztítást, és zökkenőmentesen kilép. Abban az esetben, ha a program nem lép ki zökkenőmentesen a TERM szignálra, közvetlenül a KILL szignál elküldésével léphet tovább:

Ez a szignál nem a programhoz érkezik. Az operációs rendszer kerneléhez megy. A kernel közvetlenül leállítja a folyamatot. Ezt akkor használhatja, ha egy program figyelmen kívül hagyja a neki küldött szignálokat.

Ebben a parancsban a szignál nevét a hozzá tartozó számmal is helyettesítheti. Például a „-TERM” helyett használhatja a „-15” értéket. Hasonlóképpen, a „-KILL” helyettesíthető a „-9” értékkel.

  • Szignálok használata különböző célokra

A szignálokat a programok leállításán vagy befejezésén kívül más dolgokra is használhatja. Például az egyik probléma, amellyel találkozhat, a démonok újraindítása. Minden alkalommal, amikor egy démon megszakítási (hang up) szignált vagy HUP-ot kap, újraindul az olyan programokban, mint az Apache. Ennek felülbírálásához a következő szignált használhatja:

Ez a parancs arra készteti az Apache-ot, hogy újratöltse a konfigurációját. Ennek eredményeként továbbra is kiszolgálja Önnek a releváns tartalmat.

Ha meg szeretné nézni, milyen szignálokat küldhet a kill segédprogrammal, használja a következő parancsot:

list of signals

  • Szignálok küldése név alapján

Hagyományosan a szignált a program PID-jének használatával küldené el. Azonban lehetősége van arra is, hogy a folyamat rendes nevét használva küldjön szignálokat. Ehhez a pkill parancsot használhatja. Hasonlóan működik, mint a kill parancs. Az egyetlen különbség az, hogy lehetővé teszi a folyamat nevének használatát:

Ez a pkill parancs egyenértékű a következő kill paranccsal:

Arra az esetre is van parancs, ha egy adott folyamat helyett minden példánynak szeretne szignált küldeni. A következő parancs TERM szignált küld a rendszeren futó összes Firefox példánynak:

Folyamatprioritások beállítása

Egy másik dolog, amit a Linux parancsokkal tehet, a prioritások beállítása. Ez azt jelenti, hogy eldöntheti, melyik folyamat élvez prioritást a szerverkörnyezetében. Előfordulhatnak olyan folyamatok, amelyeket kritikusnak tart. Mások talán nem annyira szükségesek. A rendszer csak akkor hajtja végre az utóbbi programokat, ha maradnak szabad erőforrások.

A folyamatok prioritását Linux alatt a niceness paranccsal szabályozhatja. Ez az érték a magas prioritású feladatokat kevésbé kedvesnek (less nice), az alacsony prioritású folyamatokat pedig kedvesebbnek (more nice) jelöli. Gondoljon rá így: a magas prioritású folyamatok kevésbé kedvesek, mert felhalmozzák az erőforrásokat. Az alacsony prioritású feladatok megosztják azokat, így kedvesebbek.

Egy adott folyamat nice értékét a top parancs futtatásakor láthatja. Ez az érték az „NI” oszlopban található. A magas prioritású feladatok nice értéke „-19/-20” között mozog. Az alacsony prioritású folyamatok értéke „19/20” között van. Valami hasonlót fog látni:

Ha egy folyamatot egyénileg hozzárendelt nice értékkel szeretne futtatni, egyszerűen a nice parancsot kell használnia:

Ez a parancs csak akkor működik, ha elindítja az adott programot. Ha egy már futó program nice értékét szeretné megváltoztatni, a renice parancsot kell használnia:

Összegzés

Mint látható, az itt található eszközök meglehetősen eltérnek a grafikusaktól. Emiatt egy kezdő számára nehezen érthetőek lehetnek. Ez az útmutató segít megismerkedni a parancsokkal. A több gyakorlás segít a jobb elsajátításban és a hatékonyabb használatban.

Tekintse meg egyéb forrásainkat is, amelyek segíthetnek a Linux-szerverek jobb kezelésében, beleértve az alábbiakról szóló útmutatókat: hogyan konfigurálhatja Linux-szerverét SSH-kulcs alapú hitelesítés használatára, fájlok keresése a Linux VPS rendszeren a whereis, which, whatis, readlink és find parancsokkal, valamint környezeti és shell változók olvasása és beállítása Linux VPS-en.

Kellemes számítógép-használatot!

author

Akshay Nagpal

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.