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.

Linux folyamatkezelése

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:

  1. Timeout - a folyamat dolgozott, és megszabadítjuk CPU erőforrások (bekapcsolt)
  2. 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.

Linux folyamatkezelése

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.

Linux folyamatkezelése

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.

Linux folyamatkezelése

Az érték az oszlop kimenetét a ps aux parancsot:

  1. USER - Process tulajdonos nevét
  2. PID - a folyamat azonosító
  3. % CPU - részesedése a CPU időt, amely fordított folyamat (százalék)
  4. % MEM - Memória az igazi, amely töltött ezt a folyamatot (százalékban)
  5. VSZ - virtuális folyamat mérete
  6. RSS - száma memória oldalak
  7. TTY - azonosítója a vezérlő terminál
  8. STAT - aktuális folyamat állapota (R kivitelezett, D-számíthat a lemezíró, S-inaktív, T-felfüggesztett, Z-zombik)
  9. TIME - összege CPU időt töltött a végrehajtási folyamat
  10. 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).

Linux folyamatkezelése

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.

Linux folyamatkezelése

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:

  1. KILL - feltétel nélküli befejezése a kernel-szintű
  2. STOP - leállítja a végrehajtási folyamat
  3. CONT - folytatódik végrehajtása folyamatban
  4. TSTP - generált a CTRL + Z, a felhasználó felfüggeszti az eljárást
  5. TERM - kérelmet a program befejezése (tisztítás során végzi, és általában befejezi)
  6. QUIT - ugyanaz, mint a TERM + létrehoz egy memória dump
  7. HUP - reset parancsot
  8. BUS - Bus hiba (jelezve a helytelen memória hozzáférés)
  9. 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

Kapcsolódó cikkek