Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:folyamatok

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

oktatas:linux:folyamatok [2019/08/16 20:29] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[oktatas:​linux|<​ Linux]]
 +
 +====== Folyamatok ======
 +
 +  * **Szerző:​** Sallai András
 +  * Copyright (c) Sallai András, 2019
 +  * [[https://​creativecommons.org/​licenses/​by-sa/​4.0/​|CC Attribution-Share Alike 4.0 International]]
 +  * Web: http://​szit.hu
 +
 +===== A linuxos folyamatokról =====
 +A futó programot, alkalmazást folyamatnak hívjuk, angolul process. ​
 +
 +A memória felosztható két részre:
 +  * kernel space
 +  * user space
 +
 +A kernel space helyen a rendszermag kódjai futnak. A user space térben
 +a felhasználók programjai.
 +
 +
 +Van egy folyamat, amelynek az azonosítója 0. Ezt a folyamatot sosem 
 +látjuk.
 +
 +
 +===== Folyamat létrehozása =====
 +
 +<code c fogad.c>
 +#include <​stdio.h>​
 +int main() {
 +    char nev[100];
 +    printf("​\nIndulás\n"​);​
 +    int i;
 +    for(i=0; i<​0xFFFFFFFF;​i++);​
 +    printf("​Folytatáshoz Enter..."​);​
 +    fgets(nev, 100, stdin);
 +    return 0;
 +}
 +</​code>​
 +
 +Fordítás:
 +  gcc -Wall fogad.c -o fogad
 +
 +Indítsuk el a programot, majd ps paranccsal ellenőrizzük a futást:
 +
 +<​code>​
 +$ ps -aef | grep fogad
 +janos    8573  4326 99 18:41 pts/0    00:00:10 ./fogad
 +janos    8578  8236  0 18:41 pts/2    00:00:00 grep fogad
 +</​code>​
 +
 +Ha megnézzük a ps -aef kimenetét a grep nélkül láthatjuk az 
 +a kimenet egyes oszlopainak nevét is:
 +
 +<​code>​
 +$ ps -aef
 +UID        PID  PPID  C STIME TTY          TIME CMD
 +root         ​1 ​    ​0 ​ 0 16:55 ?        00:00:02 /sbin/init
 +root         ​2 ​    ​0 ​ 0 16:55 ?        00:00:00 [kthreadd]
 +root         ​3 ​    ​2 ​ 0 16:55 ?        00:00:00 [ksoftirqd/​0]
 +root         ​5 ​    ​2 ​ 0 16:55 ?        00:00:00 [kworker/​0:​0H]
 +</​code>​
 +
 +A parancs kiadása után túl fut a képernyőn. A Shift+PageUp billentyűkombinációval
 +tudunk visszalapozni. De használhatunk lapozó parancsot is:
 +  ps -aef | less
 +
 +A megjelenő oszlopnevek sorra:
 +  * UID -- felhasználó külső azonosító
 +  * PID -- folyamat belső azonosító
 +  * PPID -- szülőfolyamat azonosítója
 +  * C -- processzorhasználat ​
 +  * STIME -- mikor indulat a folyamat -- start time
 +  * TTY -- kapcsolt teletype
 +  * TIME -- processzor használat összesen
 +  * CMD -- a folyamat neve, külső azonosítója,​ paraméterekkel
 +
 +===== A folyamathoz tartozó felhasználó =====
 +
 +Minden folyamat valamilyen felhasználó,​ valamilyen csoport nevében fut. 
 +A ps -aef kimenetében ez az első oszlop, amelynek a felirata UID.
 +  ps -aef
 +
 +A csoportazonosítók a ps -efj paranccsal tekinthetők meg:
 +  ps -efj
 +
 +A megjelenő oszlopok:
 +  UID        PID  PPID  PGID   ​SID ​ C STIME TTY          TIME CMD
 +
 +A másik új oszlop a SID a Session ID, azaz munkamenet azonosító.
 +Melyik vezető munkamenethez tartozik a folyamat. Ha a PID és a
 +SID megegyezik, akkor ez a folyat a munkamenet vezérlő.
 +
 +===== Az init folyamat =====
 +Az init folyamat a kernel után induló első folyamat.
 +A kernel fenntartja az 1 folyamatazonosítót az init
 +számára. Az init folyamatokat nem lehet leállítani;​
 +csak akkor áll le, ha a rendszert leállítjuk.
 +
 +
 +Systemd esetén az init szerepét átveszi a systemd.
 +Debian GNU/Linux 9 rendszeren az init valójában csak
 +egy szimbolikus link a systemd-re.
 +
 +===== A zombi és árva folyamatok =====
 +
 +Ha egy folyamat elveszti a szülőfolyamatát,​
 +akkor árva lesz belőle. Az árva folyamatokat
 +az init folyamat elfogja, és ő válik az árva
 +folyamat szülőjévé. ​
 +
 +Az árva folyamat nem azonos zombi folyamattal. ​
 +A zombi folyamatok, olyan folyamatok, amelyek ​
 +végrehajtása már véget ért, a folyamat leállít,
 +de a szülő folyamat még nem szüntette meg.
 +Ilyenkor, a szülő folyamat még nem kérdezte
 +le a gyermek megszűnési állapotát. A gyermek
 +ilyenkor zombi, és várja, hogy a szülő megszüntesse
 +ezt az állapotot.
 +
 +===== A démon folyamatok =====
 +A démonfolyamatok vezérlő terminál nélkül futnak,
 +a háttérben. A démon folyamatok indító-parancsállományai
 +a szülők. Induláskor az ilyen szülő lemond a gyermekről,​
 +amely árva lesz, amit átvesz az init folyamat.
 +
 +
 +===== A folyamatok memóriaelrendezése =====
 +
 +==== Verem ====
 +A függvények lokális változói, mutatói kerülnek erre a memóriaterületre.
 +A verem mérete dinamikusan változik, ha értékek kerülne bele, vagy
 +értékek törlődnek belőle.
 +
 +==== Halom ====
 +A halomterületen helyezkednek el a folyamatok dinamikus változói, ​
 +objektumai. A halom mindig egy szegmensben helyezkedik el.
 +
 +==== Adat ====
 +
 +Az adatterületre kerülnek a globális és statikus változók.
 +==== Szöveg ====
 +
 +A szöveg memóriaterületre kerülnek a program utasításai.
 +
 +===== Folyamatok környezete =====
 +A linuxos folyamatok környezete változó=érték formában tárolt adatok.
 +A környezet változóit használhatják a alkalmazások,​ parancsértelmezők stb.
 +
 +A környezeti változók lekérdezhetők az env paranccsal:
 +  env
 +
 +Lehetséges kimenet:
 +<​code>​
 +$ env
 +XDG_VTNR=7
 +XDG_SESSION_ID=2
 +USER=janos
 +PWD=/​home/​janos
 +HOME=/​home/​janos
 +TERM=xterm
 +SHELL=/​bin/​bash
 +SHLVL=1
 +LOGNAME=janos
 +XDG_RUNTIME_DIR=/​run/​user/​1000
 +PATH=/​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games
 +_=/​usr/​bin/​env
 +</​code>​
 +
 +===== Források =====
 +
 +  * [[https://​www.ibm.com/​developerworks/​community/​blogs/​58e72888-6340-46ac-b488-d31aa4058e9c/​entry/​an_overview_of_linux_processes21?​lang=en|https://​www.ibm.com/​]] (2019)
 +  * https://​www.tecmint.com/​linux-process-management/​ (2019)
 +  * https://​www.cyberciti.biz/​faq/​show-all-running-processes-in-linux/​ (2019)
 +  * [[https://​www.digitalocean.com/​community/​tutorials/​how-to-use-ps-kill-and-nice-to-manage-processes-in-linux|https://​www.digitalocean.com/​]] (2019)
 +  * https://​www.tldp.org/​LDP/​tlk/​kernel/​processes.html (2019)
 +  * [[https://​www.howtogeek.com/​107217/​how-to-manage-processes-from-the-linux-terminal-10-commands-you-need-to-know/​|https://​www.howtogeek.com/​]] (2019)
 +  * https://​www.geeksforgeeks.org/​processes-in-linuxunix/​ (2019)
 +
  
oktatas/linux/folyamatok.txt · Utolsó módosítás: 2019/08/16 20:29 szerkesztette: admin