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:
|
1 |
top |

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:
|
1 |
sudo apt-get install htop |
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:
|
1 |
htop |

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:
|
1 |
ps |

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:
|
1 |
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:
|
1 |
ps axjf |

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:
|
1 |
pgrep bash |
|
1 2 |
Kimenet: 1340 |
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:
|
1 |
pgrep init |
|
1 2 |
Kimenet: 1 |
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:
|
1 |
kill PIDoftarget_process |
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:
|
1 |
kill -KILL PIDoftarget_process |
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:
|
1 |
sudo kill -HUP pidofapache |
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:
|
1 |
kill -l |

- 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:
|
1 |
pkill -9 ping |
Ez a pkill parancs egyenértékű a következő kill paranccsal:
|
1 |
kill -9 `pgrep ping` |
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:
|
1 |
killall firefox |
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:
|
1 |
top |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Feladatok: 56 összesen, 1 fut, 55 alszik, 0 leállítva, 0 zombi Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k összesen, 324496k használt, 695104k szabad, 8512k pufferek Swap: 0k összesen, 0k használt, 0k szabad, 264812k gyorsítótárazott PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1635 root 20 0 17300 1200 920 R 0.3 0.1 0:00.01 top 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0 |
Ha egy folyamatot egyénileg hozzárendelt nice értékkel szeretne futtatni, egyszerűen a nice parancsot kell használnia:
|
1 |
nice -n 15 commandtoexecute |
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:
|
1 |
renice 0 PIDtoprioritize |
Ö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!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.