Linux folyamatkezelése
A folyamat - egy absztrakció leírására használjuk a program működését. A folyamat egy olyan rendszer, amely objektum vezérelhető a program memória kezelése, a központi processzor és az input-output források. Az operációs rendszerek Linux és Unix rendszer és a felhasználói folyamatok szabályozzák ugyanazok a szabályok, hogy a kontroll végezzük egy utasításkészletet.
A kernel adat struktúra tárolja mindenféle információt minden folyamatot. A legfontosabbak közé tartoznak:
- memóriafoglalási asztal
- A jelenlegi állapot (aktív, felfüggesztett, fut, stb)
- prioritás
- Erőforrás információ
- Információ a fájlok és hálózati portot nyitva folyamat
- Maszk jelek (rekord Milyen jeleket blokkolja)
- A folyamat a tulajdonos neve
végrehajtás áramlás, közkeletű nevén a patak az eredménye az elágazás végrehajtás folyamatban. Takarmány örökli sok olyan tulajdonsággal rendelkezik, a folyamatba, és ugyanabban az eljárásban egyidejűleg lehet végrehajtani (párhuzamos) több folyam - mint végrehajtási modell úgynevezett multi-threading. A régebbi rendszerek, a párhuzamos végrehajtás egyprocesszoros szimulált kernel, de a multi-core és multi-processzor architektúrát flow végezhetjük egyidejűleg különböző magok. Többszálas alkalmazások, mint a BIND és az Apache, hogy a legtöbb multi-core rendszerekben, mivel ezek az alkalmazások képes kezelni több kérést is.
Az attribútumok a folyamat
A kernel egyedi azonosítót rendel az egyes PID. PID - Proccess ID. A legtöbb parancs és a rendszer kéri, dolgozó folyamatokat, amelyek megkövetelik, hogy adjon meg egy egyedi azonosítóval, amely tiszta volt a művelet keretében. Azonosítók vannak rendelve annak érdekében, amennyire létre folyamatokat.
Sem a UNIX, Linux nem rendelkezik rendszer hívás, ami megindítja új eljárás egy adott programot. Annak érdekében, hogy létrehoz egy új eljárás, a jelenlegi folyamat kell klónozni magát. A klón lehet helyettesíteni más végrehajtható program.
Működés közben az eredeti folyamat klónozás nevezzük a szülő és a klónja - gyermek. Amellett, hogy az azonosítója, minden gyermek folyamat attribútum PPID (Parent Proccess ID), amely azonosító egybeesik annak gyermek folyamatot szült. Érdemes megjegyezni, hogy a PPID - nagyon hasznos információkat, ha foglalkozunk az ismeretlen folyamatokat. Eredetének felderítése az eljárás megértésének elősegítése a célját és jelentőségét.
Ha a rendszer elindul, a kernel maga kezdett több folyamat. A legfontosabb közülük - a démon init. akinek ID is mindig 1. Az init daemon felelős a szkriptek végrehajtását indításkor. Minden folyamatot kivéve azokat, amelyek a mag által létrehozott, leszármazottai init daemon.
UID (User ID) - a felhasználói azonosító, amely megteremtette a folyamatot. Változás az attribútumokat a folyamat csak akkor lehet az alkotója (tulajdonos) és a rendszergazda. Euid (tényleges felhasználói azonosító) - ez a jelenlegi felhasználói azonosító a folyamat célja, hogy meghatározza, hogy mely fájlokat és erőforrásokat a folyamat hozzáfér az adott pillanatban. A legtöbb program a UID és euid értékek azonosak. A kivétel az a program, amely a felhasználói azonosítót beállított bit változás (setuid).
GID (Group ID) - ez az azonosítója a csoportot, amelyhez tartozik a folyamat tulajdonosa. Jelenlegi csoportazonosító (egid) GID társított attribútum, valamint a kapcsolódó értéket euid UID.
Process prioritás határozza meg, hogy mennyi a CPU időt kap a programban. A kernel egy dinamikus algoritmus kiszámításához prioritás, figyelembe véve, hogy mennyi CPU időt a folyamat használt, és mennyi ideig vár a sor.
Az életciklus folyamat
Létrehozása folyamat - egy átmeneti folyamatot az állam „Új”, hogy „Ready”. Abban az időben a teremtés folyamata az operációs rendszer elkészíti az adatszerkezetet érte. Az új eljárás van rendelve a saját PID és erőforrás-vezérlő végezzük függetlenül a szülő. Az a tény, hogy a folyamat létezik - nem ad neki a jogot, hogy a processzor erőforrásait.
![Folyamatkezelése linux (linux) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-a8450712.png)
Ready folyamat minden szükséges erőforrásokat, és megvárja, amíg a rendszer ütemező ad neki hozzáférést a CPU. Ha kiválaszt egy hozzáférési folyamat elindult, és aktívvá válik (futás).
A „Run” állapotban, két módja van:
- Timeout - a folyamat dolgozott, és megszabadítjuk CPU erőforrások (bekapcsolt)
- Várakozás - a folyamat fel van függesztve, amit vár néhány jel
Ha az eljárást végzik a rendszer felszólítja, hogy nem lehet azonnal, a kernel fogalmaz készenléti üzemmódban (sleep). A várakozási eljárást vár egy adott esemény bekövetkezik, hogy az adatáramlás a terminál vagy a hálózati kapcsolat. Sok rendszerdémonok tölteni ebben az állapotban a legtöbb idejét. Fontos megjegyezni, hogy ebben az esetben az eljárás továbbra is a memóriában tárolja.
Egyes műveletek a fordítási folyamat egy állam Folyamatos készenléti (felfüggesztett). Ebben az állapotban, a folyamat vár bizonyos jeleket a hardver, és nem reagál más jeleket. Amikor ezt az eljárást kirakják a RAM memóriából a merevlemezre (SWAP-szakasz). Ahhoz, hogy megszabaduljon egy ilyen folyamat szükséges eltávolítani őket vezetett a problémát, vagy indítsa újra a rendszert.
Miután a folyamat befejeződik - megsemmisül.
Zombies - egy olyan folyamat, hogy befejezte az, de ez az információ még nem áll rendelkezésre, hogy a szülő folyamat. Folyamat végén felszabadítja az összes erőforrás (kivéve PID), és lesz egy „zombi” - egy üres bejegyzést a folyamat táblázat, amely tárolja a teljes kód a szülő folyamat.
![Folyamatkezelése linux (linux) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-8842cc28.png)
Minden folyamat sorban állnak a parancs végrehajtását. Azonban, több fázisban, állapotától függően a folyamat: a kész várakozási sorában és a várakozási sor van blokkolva. Végén a munkafolyamat mozog a tetején a sorban, és ismét várja a pillanatot, hogy elérheti a CPU erőforrásokat.
![Folyamatkezelése linux (folyamatok) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-b400aa34.png)
Munka folyamatok Linux
user @ ubuntu $ ps aux
A gomb segítségével jelenítse meg az összes folyamat, x Key - jelzi a folyamat megszakad a terminál, u Key - engedélyezi a szűrést, a nevét vagy a felhasználó azonosítója, aki elindította a programot.
![Folyamatirányítás linux (CPU idő) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-18687a75.png)
Az érték az oszlop kimenetét a ps aux parancsot:
- USER - Process tulajdonos nevét
- PID - a folyamat azonosító
- % CPU - részesedése a CPU időt, amely fordított folyamat (százalék)
- % MEM - Memória az igazi, amely töltött ezt a folyamatot (százalékban)
- VSZ - virtuális folyamat mérete
- RSS - száma memória oldalak
- TTY - azonosítója a vezérlő terminál
- STAT - aktuális folyamat állapota (R kivitelezett, D-számíthat a lemezíró, S-inaktív, T-felfüggesztett, Z-zombik)
- TIME - összege CPU időt töltött a végrehajtási folyamat
- COMMAND - név és argumentumot
Az alábbi rövidített eredményeit mutatják ps laza csapat munkáját. Ügyeljen arra, hogy a további mezők PPID (szülő process ID), NI (teljesítési tényező), WCHAN (forrás, amely várhatóan a folyamat).
![Folyamat ellenőrzés Linux (jelek) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-e6eebf20.png)
NI alapvetően az a folyamat prioritása. Minél alacsonyabb az érték - a kiemelt lesz egy processzor által végrehajtott. Értéktartomány -20 és 20.
Nagyon kényelmes, hogy keresse meg a folyamat azonosítója a ps parancs szalagok és grep. PS megjeleníti a folyamatok, majd átadja a vezérlést az grep parancsot, ami viszont kiválasztja a listából a kívánt folyamatot. Példa: megtalálni PID cron folyamatot.
Amint látható PID egyenlő 879 cron folyamatot.
ps parancs csak akkor tud egy egyszeri „pillanatfelvételt” a rendszer. Mert folyamatok dinamikus nyomkövetési top parancsot.
![Folyamatkezelése linux (ez a folyamat százalék) Linux folyamatkezelése](http://images-on-off.com/images/36/upravlenieprotsessamivlinux-22295b52.png)
A legaktívabb folyamatok a tetején. top parancs mutatja statisztikát az állapotát a folyamat, a felhasznált erőforrások mennyiségének a CPU és a RAM.
Jelzések - ez megszakításkérelmeket megvalósított folyamat szinten.
Amikor a jelet, az egyik két változatban az események. Ha a folyamat van rendelve egy jelfeldolgozó rutin hívása után információt ad a kontextust, amelyben a jelet generált. Ellenkező esetben a kernel végzi nevében műveleteket a folyamat alapértelmezett. Ezek az intézkedések függnek a jelet, és egyes esetekben akár létre memóriaképfájlba.
Memória dump - ez egy fájl, ami tartalmazza a folyamat kép memória
Híváskezelő eljárást nevezik lehallgatás jelet. Ha a végrehajtás felvezető megszűnik, a folyamat folytatódik attól a ponttól, ahol a jel érkezett.
Bizonyos jelek érkeztek a programban be lehet állítani, hogy figyelmen kívül hagyja őket, és blokkolja. Figyelmen kívül hagyva a jel kimarad, és nem befolyásolja a működését a processzor. Záró jel sorban áll a feldolgozásra, de a kernel nem igényel semmilyen intézkedést feldolgozni explicit kinyit jelet.
Meghatározott több mint harminc különböző jeleket, és ezek nagyon különböző alkalmazásokat. A leggyakoribb ezek közül:
- KILL - feltétel nélküli befejezése a kernel-szintű
- STOP - leállítja a végrehajtási folyamat
- CONT - folytatódik végrehajtása folyamatban
- TSTP - generált a CTRL + Z, a felhasználó felfüggeszti az eljárást
- TERM - kérelmet a program befejezése (tisztítás során végzi, és általában befejezi)
- QUIT - ugyanaz, mint a TERM + létrehoz egy memória dump
- HUP - reset parancsot
- BUS - Bus hiba (jelezve a helytelen memória hozzáférés)
- SEGV - hiba szegmentáció (jelezve a helytelen memória hozzáférés)
Megölni, és STOP jelek nem feltartóztatott vagy blokkolt vagy figyelmen kívül hagyni.
ölni parancs használható jelzéseket küldeni folyamatok. Öld szintaxisa a következő:
user @ ubuntu $ kill [-jel] PID
Például, elpusztítja a cron folyamatot. Korábban azt találtuk, hogy a PID = 879.
user @ ubuntu $ ölni -KILL 879
Mint látható, a cron folyamat eltávolításra került. kill-típusú jeleket kell küldeni a superuser. Továbbá, mielőtt ölni cron kiszedtem respawn sort a konfigurációs fájlban cron.conf, ami /etc/init/cron.conf mappát.
Végül meséljek még egy érdekes dolog. Upstart - OS inicializálja a rendszert, amely szabályozza az indítási démonokat rendszerindítás során. Upstart áruház konfigurációs fájlok az / etc / init. Számos parancs dolgozó Upstart.
user @ ubuntu $ status [folyamat neve] - folyamat állapota
user @ ubuntu $ start [folyamat neve] - indul a folyamat
user @ ubuntu $ stop [folyamat neve] - megállítja a folyamatot
user @ ubuntu $ restart [folyamat neve] - indítsa újra a folyamatot