Prosessit


Yleistä, proc-hakemisto, Prosesseihin liittyviä käskyjä, Demonit, top-ohjelma

Yleistä

Unix-järjestelmien moniajon peruskäsite on prosessi. Prosessit muodostavat hierarkisen järjestelmän siten, että kaikkein ylimpänä on prosessi initd. Kaikki muut prosessit polveutuvat tästä prosessista.Jokainen prosessi on siis jonkun prosessin lapsiprosessi. Esimerkiksi jos käynnistät ohjelman komentotulkissa, tämä ohjelma on todellisuudessa kyseisen komentotulkin lapsiprosessi. Näin ollen, jos komentotulkki lopetetaan, myös tämän ohjelman suorittaminen loppuu.

Kun käyttäjä käynnistää jonkin ohjelman, sille luodaan prosessi. Tämä prosessi saa tunnisteekseen ns PID-numeron, joka on juokseva numero (seuraava vapaa) ja yksikäsitteinen. Tämän numeron avulla käyttöjärjestelmä tunnistaa eri työt ja antaa sitten työlle sen kaipaamia resursseja, kuten esimerkiksi prosessoriaikaa työn suorittamiseksi.


proc-hakemisto

proc-hakemisto

Linuxissa jokainen käynnissä oleva prosessi ja prosessinumero näkyvät ns. pseudohakemistossa nimeltään proc. Tämä siis on hakemisto, jota ei siis ole "oikeasti" talletettuna missään levyllä, se on olemassa vain järjestelmän ollessa toiminnassa.

proc-hakemistoon ei ole syytä mennä tallettamaan mitään eikä sielllä olevia tietoja saa muuttaa. Tosiasiassa tämän ei pitäisi edes olla mahdollista, sillä käyttäjillä ei pitäisi normaalisti olla oikeuksia tehdä hakemistossa mitään.


Prosesseihin liittyviä käskyjä

ps näyttää käynnissä olevat prosessit

Esimerkiksi:

[kuivanen@kuivi49h8 kuivanen]$ ps
  PID TTY          TIME CMD
 1532 pts/0    00:00:00 bash
 1578 pts/0    00:00:00 ps

Tällöin näytetään vain siinä komentotulkissa käynnistetyt prosessit. Näistä bash on komentotulkin ja ps taas ps-ohjelman luoma prosessi. Ensimmäisessä sarakkeessa näkyy prosessien PID-numerot.

[kuivanen@kuivi49h8 kuivanen]$ ps -u kuivanen
  PID TTY          TIME CMD
 1444 ?        00:00:00 Default
 1458 ?        00:00:00 gnome-session
 1479 ?        00:00:00 gnome-smproxy
 1485 ?        00:00:02 enlightenment
 1498 ?        00:00:00 xscreensaver
 1500 ?        00:00:01 panel
 1503 ?        00:00:01 gmc
 1504 ?        00:00:00 gnome-name-serv
 1506 ?        00:00:00 gnome-help-brow
 1512 ?        00:00:01 gnomepager_appl
 1518 ?        00:00:00 gen_util_applet
 1530 ?        00:00:00 gnome-terminal
 1531 ?        00:00:00 gnome-pty-helpe
 1532 pts/0    00:00:00 bash
 1547 ?        00:00:04 netscape-commun
 1548 ?        00:00:00 netscape-commun
 1552 ?        00:00:01 gimp
 1553 ?        00:00:00 script-fu
 1562 ?        00:00:05 kwrite
 1563 ?        00:00:00 kdehelp 
 1579 pts/0    00:00:00 ps

-u -optiolla saadaan näkyviin tietyn käyttäjän kaikki käynnissä olevat prosessit. Esimerkiksi graafinen ympäristö saa aikaiseksi suuren joukon erilaisia prosesseja, joita sitten on käynnissä. Esimerkissä näyttäisi mm. gnomeen liittyviä sovelluksia sekä gimp-kuvankäsittelyohjelma olevan käynnissä.

jobs näyttää taustalla olevat prosessit ja niiden tilan

Linuxissa voi ohjelmia käynnistää ns. tausta-ajoon laittamalla komentorivin perään &-merkin.Vaihtoehtoisesti CTRL-Z siirtää työn taustalle ja pysäyttää sen.

Esimerkiksi:

[kuivanen@kuivi49h8 kuivanen]$ jobs
[1]+  Stopped (tty output)    vi test
        

Esimerkissä on vi-editorilla tehty työtä ja laitettu se tilapäisesti taustalle sulkematta ohjelmaa. jobs-komento näyttää nyt tämän. Edessä hakasuluissa oleva numero on työn numero. Numero on juokseva, eli istunnon aikana ensimmäinen työ saa numeron 1.

fg %nro Tuo edustalle työn numero "nro". Huomaa prosenttimerkki. Työn numeron saa selville jobs-komennolla.

kill tappaa prosesseja.
kill %job_id tappaa prosessin jolla on työnumero %job_id. Numeron sai siis jobs-komennolla. Jos prosessilla oli lapsiprosesseja, nekin kuolevat
kill pidnro tappaa prosessin numeroltaan "pidnro". Prosessin PID-numeron sai selville ps-komennolla
kill -9 pidnro Joskus prosessi saattaa ollaa "sitkeähenkinen", eli jäänyt täysin jumiin. -9 -optio tappaa työn varmasti, jos mikään muu ei auta.
kill -HUP pidnro tappaa prosessin numeroltaan "pidnro" ja käynnistää sen välittömästi uudelleen.
killall tyonnimi tappaa prosessin nimeltään "tyonnimi". Näin ei tarvitse tietää prosessin PID- tai muita numeroita, kunhan muistaa, minkä nimisen ohjelman on käynnistänyt.

 

nice muuttaa työn prioriteettia alhaisemmaksi.
nice -15 sort file1 >file2 & laskee lajitteluoperaation prioriteettia 15 yksikköä. Jos tuota ei anneta, lasketaan 10 yksikköä.


Demonit

Demonit (daemons) ovat palvelinprosesseja, jotka ovat normaalisti jatkuvasti päällä silloin kun palvelin on toiminnassa. Demoni odottelee, kunnes siltä pyydetään palvelimen palveluita. Esimerkiksi http-palvelindemoni (httpd) herää henkiin, kun palvelimelle tehdään http-sivupyyntö.

Demonien toiminta ei näy käyttäjälle käytännössä mitenkään, vaan ne pyörivät taustalla. Osa demoneista käynnistetään järjestelmän yhteydessä, osa voidaan käynnistää vasta sitten, kun niitä tarvitaan.

Demonien toimintaa voi tarkkailla graafisessa ympäristössä Service Configuration-ohjelmalla:

service config

Rasti ruudussa kertoo, mitkä palvelut käynnistetään koneen käynnistyessä. Vastaava tekstipohjainen työkalu on chkconfig. chkconfig --list näyttää palvelujen tilan ja millä tasolla ne ovat käynnissä. Tasoista 3 on "normaali" käyttötila (monen käyttäjän tila verkkotoiminnoilla). Graafinen taso taas on 5. Huomaa, että eri distribuutioissa voidaan käyttää eri numeroita.

chkconfig-ohjelma

Ohjelmalla voi käynnistää ja pysäyttää palveluja:

chkconfig palvelu on

Käynnistää palvelun nimeltään "palvelu". Oletuksena käynnistystaso on se, millä sillä hetkellä toimitaan plus sitä alemmat käyvät tasot. "off" luonnollisesti pysäyttää.

chkconfig-ohjelmalla käynnistetyt palvelut jäävät pysyviksi, eli ne ovat käytössä heti seuraavassa koneen käynnistyksessä. Jos halutaan käynnistää palvelu tilapäisesti, service-komento on kätevä:

service palvelu start

Käynnistää palvelu "palvelu". Vaihtamalla start-sanan paikalle "status", komento kertoo palvelun tilan. "Stop" taas pysäyttää.


Top-ohjelma

top-ohjelma on kätevä interaktiivinen työkalu prosessien hallintaan. Se näyttää ikkunassaan käynnissä olevat prosessit lajiteltuna viedyn prosessoritehon mukaan, ensimmäisenä eniten kuormittava:

top-ohjelma

Esimerkkikuvassa näyttäisi pyörivän 62 prosessia, joista 60 "nukkuu", kaksi on aktiivista. Yksikään prosesseista ei ole zombie eikä yksikään ole pysäytettynä. Zombie-prosessi on prosessi, joka on ikäänkuin jäänyt "roikkumaan" järjestelmään eikä itse asiassa tee mitään. Esimerkiksi prosessin käynnistänyt prosessi on lopetettu ja tämän luoma aliprosessi on syystä tai toisesta jäänyt roikkumaan järjestelmään. Lisäksi ohjelma kertoo muistinkäytöstä sekä prosessorin kuormittamisesta.

top-ohjelmaa ohjataan näppäinkomennoin:

  • h tai ? - tulostaa opastusruudun
  • ctrl-L - piirtää kuvaruudun uudelleen
  • k - tappaa prosessin. Näppäilyn jälkeen kysytään, mikä niistä tapetaan.
  • i - ei näytetä zombie- eikä pysähtyneitä prosesseja. Tämä on päälle/pois-vipu.
  • n - montako prosessia näytetään
  • q - poistuu ohjelmasta
  • r - muuttaa prosessin prioriteettiä (re-nice). Jos esim. joku suuri taustalla pyörivä työ ei tarvitse niin paljoa prosessoriaikaa, sen prioriteettiä voidaan laskea. Näin muut ohjelmat saavat enemmän prosessoriaikaa. Vastaavasti jonkun tärkeämmän ohjelman prioriteettiä voidaan lisätä. Sama asia voidaan tehdä komentoriviltä myös nice-nimisellä ohjelmalla.

Yllä olevat ovat vain osa top-ohjelman komennoista.

man top

kertoo lisää komennon ominaisuuksista.


Alkuun