Bevezetés
a Linux szerver, mint bármely más számítógép lehet, hogy ismeri, fut alkalmazások. A számítógéphez ezeket “folyamatoknak”tekintik.
míg a Linux egy folyamat életciklusának alacsony szintű, színfalak mögötti kezelését fogja kezelni, szüksége lesz egy módra az operációs rendszerrel való interakcióra annak magasabb szintű kezeléséhez.
ebben az útmutatóban a folyamatkezelés néhány egyszerű aspektusát tárgyaljuk. A Linux bőséges eszközgyűjteményt kínál erre a célra.,
ezeket az ötleteket egy Ubuntu 12.04 VPS-en fogjuk felfedezni, de minden modern Linux disztribúció hasonló módon fog működni.
hogyan tekinthetjük meg a futó folyamatokat Linuxban
top
a szerveren futó folyamatok legegyszerűbb módja a parancs futtatása:
top
a rendszerstatisztikák, például a rendszerterhelés és a feladatok teljes száma.
könnyen látható, hogy van 1 futó folyamat, 55 folyamat alszik (más néven tétlen / nem használja a CPU erőforrásokat).,
az alsó rész tartalmazza a futó folyamatokat és azok használati statisztikáit.
htop
a továbbfejlesztett változata, az úgynevezetthtop
, elérhető a tárolókban. Telepítse ezt a parancsot:
sudo apt-get install htop
ha futtatjuk a htop
parancsot, látni fogjuk, hogy van egy felhasználóbarát kijelző:
htop
itt többet megtudhat a top és a htop használatáról.,
hogyan használjuk a PS-t a folyamatok listázásához
Both top
and htop
adjon meg egy szép felületet a grafikus feladatkezelőhöz hasonló futó folyamatok megtekintéséhez.
ezek az eszközök azonban nem mindig elég rugalmasak ahhoz, hogy megfelelően lefedjék az összes forgatókönyvet. A ps
nevű erőteljes parancs gyakran a válasz ezekre a problémákra.,
argumentumok nélkül hívva a kimenet lehet egy kicsit lack-luster:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Ez a kimenet az aktuális felhasználói és terminál munkamenethez kapcsolódó összes folyamatot mutatja. Ennek van értelme, mert csak a bash
és ps
futunk ezzel a terminállal.,
ahhoz, hogy teljesebb képet kapjunk a rendszer folyamatairól, a következőket futtathatjuk:
ps aux
ezek a lehetőségek azt mondjákps
, hogy minden felhasználó tulajdonában lévő folyamatokat jelenítsen meg (függetlenül a terminál társításától) felhasználóbarát formátumban.
egy fa nézet megtekintéséhez, ahol a hierarchikus kapcsolatokat ábrázolják, a következő opciókkal futtathatjuk a parancsot:
ps axjf
amint láthatja, a kthreadd
folyamat a ksoftirqd/0
folyamat szülője.,
egy megjegyzés a Folyamatazonosítókról
Linux és Unix-szerű rendszerekben minden folyamathoz hozzá van rendelve egy folyamatazonosító vagy PID. Az operációs rendszer így azonosítja és nyomon követi a folyamatokat.
a folyamat PID-jének gyors megszerzésének módja a pgrep
parancs:
pgrep bash
1017
Ez egyszerűen lekérdezi a folyamatazonosítóját, és visszaadja azt.
az init nevű indításkor az első folyamat “1”PID-t kap.,
pgrep init
1
Ez a folyamat felelős a rendszer minden más folyamatának ívásáért. A későbbi folyamatok nagyobb PID számokat kapnak.
a folyamat szülője az a folyamat, amely felelős az ívásért. A szülő folyamatoknak van egy PPID-je, amelyet az oszlop fejléceiben számos folyamatkezelő alkalmazásban láthat, beleértve a top
, htop
és ps
.,
bármely kommunikáció a felhasználó és az operációs rendszer között a folyamatokról magában foglalja a folyamatnevek és a PID-ek közötti fordítást egy bizonyos ponton a művelet során. Ez az oka annak, hogy a közművek megmondják a PID-t.
Szülő-Gyermek Kapcsolat
Létrehozása gyermek folyamat két lépésben: fork(), amely megteremti az új cím tér másolatot a források tulajdonosa a szülő via copy-on-write, hogy elérhető, hogy a gyermek folyamat; valamint az exec(), amely betölti egy futtatható a cím tér, valamint végzi a dolgát.,
abban az esetben, ha egy gyermekfolyamat meghal a szülő előtt, a gyermek zombivá válik, amíg a szülő információt nem gyűjtött róla, vagy jelezte a kernelnek, hogy nincs szüksége erre az információra. A gyermek folyamatából származó források felszabadulnak. Ha a szülő folyamat meghal a gyermek előtt, azonban, a gyermeket az init fogadja el, bár áthelyezhető egy másik folyamatba is.
A folyamatok jeleinek küldése Linuxban
a Linux összes folyamata reagál a jelekre. A jelek os szintű módja annak, hogy a programokat viselkedésük megszüntetésére vagy módosítására mondják.,
hogyan küldhetünk folyamatok jeleket PID
a jelek továbbításának leggyakoribb módja a kill
parancs.
Ahogy az várható, az alapértelmezett funkció ez a segédprogram az, hogy megpróbálja megölni egy folyamat:
ölni <span class=”highlight”>PIDoftarget_process</span>
</pre>
Ez elküldi a KIFEJEZÉS, jel, hogy a folyamat., A jel kifejezés azt mondja a folyamatnak, hogy kérjük, fejezze be. Ez lehetővé teszi a program számára a tisztítási műveletek zökkenőmentes végrehajtását.,
Ha a program rosszul működik, és nem lép ki, amikor a jel kifejezést adja, akkor a KILL
jel:
<pre>
kill-KILL <span class=”highlight”>pidoftarget_process</span>
</pre>
Ez egy speciális jel, amelyet nem küldünk a programnak.,
ehelyett az operációs rendszer kernelének adják, amely leállítja a folyamatot. Ezt olyan programok megkerülésére használják, amelyek figyelmen kívül hagyják a nekik küldött jeleket.
minden jelnek van egy társított száma, amely a név helyett átadható. Például a “- TERM” helyett “-15”- et, a “- KILL” helyett “-9” – et adhat át.
A jelek más célokra történő használata
a jeleket nem csak a programok leállítására használják. Más műveletek végrehajtására is használhatók.
például sok Daemon újraindul, amikor megkapják a HUP
vagy a hang-up jelet., Az Apache egy ilyen program.
sudo kill-HUP <span class=”highlight”>pidofapache</span>
</pre>
A fenti parancs hatására Apache, hogy újra a konfigurációs fájlt, majd folytathatja a z tartalom.,
a lista minden a jelek, hogy lehetséges, hogy küldjön a kill parancs begépelésével:
kill -l
Hogyan Kell Küldeni Folyamatok Jelek Neve
Bár a hagyományos módon küld jelek segítségével Pid is vannak módszerek ennek a rendszeres folyamat nevek.,
a pkill
parancs működik szinte pontosan ugyanúgy, mint a kill
, de működik a folyamat neve helyett:
pkill -9 ping
a fenti parancs egyenértékű:
kill -9 `pgrep ping`
ha jelet szeretne küldeni egy bizonyos folyamat minden példányára, használhatja a killall
parancsot:
killall firefox
a fenti parancs elküldi a kifejezést jel a számítógépen futó Firefox minden példányára.,
A Folyamatprioritások beállítása
gyakran módosítani szeretné, hogy mely folyamatok elsőbbséget élveznek egy szerver környezetben.
egyes folyamatok kritikus fontosságúnak tekinthetők a helyzet szempontjából, míg mások végrehajthatók, ha esetleg maradék erőforrások vannak.
A Linux a prioritást a niceness nevű értéken keresztül vezérli.
a kiemelt feladatokat kevésbé szépnek tekintik, mert nem osztják meg az erőforrásokat is. Az alacsony prioritású folyamatok viszont kedvesek, mert ragaszkodnak ahhoz, hogy csak minimális erőforrásokat vegyenek igénybe.,
amikortop
futottunk a cikk elején, volt egy “NI”oszlop. Ez a folyamat szép értéke:
top
a Nice értékek a rendszertől függően “-19/-20” (legmagasabb prioritás) és “19/20” (legalacsonyabb prioritás) között mozoghatnak.,
To run a program with a certain nice value, we can use the nice
command:
<pre>
nice -n 15 <span class=”highlight”>commandtoexecute</span>
</pre>
This only works when beginning a new program.,=”9b4b74b24a”>:
renice 0 <span class=”highlight”>PIDtoprioritize</span>
</pre>
Megjegyzés: Amíg szép működik a parancs neve szükségszerűen renice működik, hívja a folyamat PID
Következtetés
a Folyamat menedzsment a téma, hogy néha nehéz az új felhasználók számára, hogy megértsék, mert a használt eszközök különböznek a grafikus társaik.,
az ötletek azonban ismerősek és intuitívak, és egy kis gyakorlattal természetessé válnak. Mivel a folyamatok részt vesznek mindent, amit csinál egy számítógépes rendszer, tanulás, hogyan lehet hatékonyan irányítani őket egy alapvető készség.
< div class = “szerző”>írta: Justin Ellingwood< / div>
Leave a Reply