Linux/Unix protsessid

From EIK wiki

Lühitutvustus

Tsitaat Robert Love’i raamatust „Linux Kernel Developemnt“, „The Process is one of the fundamental abstractions in Unix Operating Systems, the other fundamental abstraction being files.“ Tõlk. „Protsess on üks fundamentaalne abstraktsioon UNIX operatsioonisüsteemides, teine fundamentaalne abstraktsioon on failid“. Protsess on programm täitmises, mis koosneb täidetavast programmikoodist, andmetest, andmete hõivatud mäluruumist, aadressiruumist, ühest või mitmest täitmislõimest ja andmesektsioonist mis sisaldab globaalmuutujaid.

Igal protsessil on omad tundemärgid (process descriptors), mis on vajalikud selleks et hoida arveldust kõikidest mälus olevatest protsessidest. Need tundemärgid on nt. PID (Process ID – algab tavaliselt nr 2’st kuna PID 1 on tüüpiliselt reserveeritud init protsessi jaoks), protsessi seisund, vanemprotsess, tütarprotsessid, protsessori registrid, nimekiri avatud failidest ja aadressiruumi informatsioon.

Protsesside seisundid

  • "Running" - protsess on süsteemis hetkel töötav või see on valmis hakkama tööle st. protsess ootab enda määramist mõnele süsteemi CPU’le.
  • "Waiting" - protsess ootab mõnda teatud sündmust või ressurssi.
  • "Stopped" - protsess on peatatud tavaliselt vastu võetud signaaliga. Veasilumis(debug) režiimis olev protsess võib olla ka peatatud(stopped) seisundis.
  • "Zombie" - nn „zombie protsess“ ei ole enam töötav protsess, see on ülejäägid eelnevalt töötanud ja siis tapetud protsessist.


Protsesside monitooring Unix/Linux operatsioonisüsteemis

  • ps käsk ilma lisavõtmeteta näitab ainult põhilist informatsiooni sinu kasutajanime all jooksvatest protsessidest:

Ps.jpg

PID tulp näitab protsessi ID numbrit, TTY tulp näitab protsessi terminalikuuluvust, TIME tulp näitab protsessoriaega mida protsess on kasutanud ning CMD tulp näitab käsu nimetust mis parajasti töötab.


  • ps –f käsk kuvab täisformaadis protsessitabeli sinu arvutis jooksvate protsesside kohta:

Ps -f.jpg

UID tulp näitab kasutaja ID numbrit, PPID näitab vanemprotsessi ID’d, STIME näitab kellaaega millal protsess käivitati.


  • ps –ef käsuga kuvatakse kõikide kasutajate protsessid täisformaadis:

Ps -ef.jpg


Linux’ile on olemas ka interaktiivsem protsesside monitoorimisprogramm htop, mis on ka kavandatud asendamaks vanemat Unix’i programmi top. htop kuvab pidevalt uuenduva protsessitabeli, mis näitab kõiki süsteemis töötavaid protsesse ning lisaks kuvab lisainformatsiooni protsessori, swap’i ja mälu staatuse kohta. Programmi htop saab installeerida käsuga:

sudo apt-get install htop

Programm top:

Top.jpg


Programm htop:

Htop.jpg


Protsesside tapmine Unix/Linux operatsioonisüsteemides

Käsk kill saadab spetsiifilise signaali spetsiifilisele protsessile või protsessigrupile. Käsk kill tapab protsesse protsessi PID (Process ID) järgi kasutades lisaks signaalivõtit mis spetsifitseerib kuidas protsess tapetakse.

  • Antud käsk saadab spetsiifilisele protsessile SIGTERM signaali, mis lubab protsessil teha viimased hädavajalikud toimingud või salvestada andmed, kuigi võib juhtuda et antud signaal ei ole piisav protsessi tapmiseks:
kill -15 protsessi_ID
  • Antud käsk saadab spetsiifilisele protsessile SIGKILL signaali, mis ei luba teha protsessil viimase hetke tominguid ning tapab selle viivitamatult:
kill -9 protsessi_ID


Kasulikud materjalid:


Kasutatud materjalid:


Autor

Teet Saar A22, 07.11.11

--Tesaar 17:42, 7 November 2011 (EET)