Ubuntu: Linux voor mensen/Processen/Soorten processen

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Interactieve processen[bewerken]

Processen in de voorgrond[bewerken]

Interactieve processen worden gestart en gecontroleerd vanuit een terminal sessie. Met andere woorden: er moet iemand aangemeld zijn op het systeem, lokaal of via het netwerk, om het proces te kunnen starten; een interactief proces wordt niet automatisch opgestart als onderdeel van de initialisatie van het systeem.

Interaktieve processen kunnen draaien in de voorgrond, dat wil zeggen dat ze de terminal bezet houden vanwaar ze opgestart zijn. Zolang het proces draait, kan je in dat terminal venster geen ander proces opstarten. Een voorbeeld:

Voorbeeld code om na te doen

willy@ubuntu:~$ find /usr -name test 

Het doorzoeken van de /usr map duurt even, zolang kan je niets doen in datzelfde venster. Je kan uiteraard wel een ander terminal venster openen en daar verder werken. Een ander voorbeeld is het bekijken van een bestand met less. Tot nu toe hebben we vooral met processen in de voorgrond gewerkt, hoewel de tijd die nodig was om een programma uit te voeren dikwijls zodanig kort was dat je misschien niet hebt gemerkt dat het proces de terminal bezet hield.

Processen in de achtergrond[bewerken]

Alternatief kunnen processen ook in de achtergrond draaien. In dat geval wordt de terminal niet bezet gehouden en kan je andere taken uitvoeren terwijl het programma actief is.

De shell heeft een speciaal mechanisme, job control, die het gemakkelijk maakt om meerdere processen te behandelen. Dit mechanisme zorgt ervoor dat het proces dat je nodig hebt in de voorgrond draait.

Een proces in de achtergrond draaien is enkel nuttig voor die programma's die geen input nodig hebben. Een proces wordt typisch in de achtergrond gedraaid wanneer men verwacht dat het lang zal duren eer het proces zijn taken vervuld heeft.

Een proces in de achtergrond plaatsen doe je door in de shell achter het opgegeven commando een ampersant te plaatsen. Bijvoorbeeld:

Voorbeeld code om na te doen

willy@ubuntu:~$ xterm & 
[1] 7990 
willy@ubuntu:~$  

Bovenstaand commando start een eenvoudiger type van terminal venster, waarin je opdrachten kan geven. In het venster vanwaar je het programma hebt opgestart, krijg je de prompt terug en je kan verder werken. We zien meteen ook al een eerste procesattribuut: het procesidentificatienummer, kortweg PID. Het PID van het eerste commando dat in de achtergrond draait is hier 7990. Het wordt voorafgegaan door het jobnummer, hier 1, tussen vierkante haken.

Elk proces heeft een PID. We bespreken zodadelijk hoe we aan de hand van deze informatie processen kunnen manipuleren.

Uitleg

Jobnummer vs. procesnummer Het jobnummer wordt door de shell gebruikt (zie tabel), zodat e als gebruiker geen lange getallen hoeft in te geven om processen te beheren.

Processen beheren[bewerken]

De volgende tabel geeft een overzicht van de commando's en deelcommando's die gebruikt worden om processen te switchen tussen de voorgrond en de achtergrond.

(deel van) Commando 	Betekenis
commandonaam 	        Draait het commando in de voorgrond.
commandonaam & 	Draait het commando in de achtergrond en geeft de terminal vrij.
jobs 	                Toon de commando's die in de achtergrond aan het draaien zijn.
Ctrl+Z             	Bevries het commando (in het Engels: suspend).
Ctrl+C 	        Beëindig het commando dat in de voorgrond draait.
%n 	                Elk commando in de achtergrond krijgt een jobnummer (in bovenstaand voorbeeld: 1). 
                       Gebruik de uitdrukking % met dit nummer om naar een proces te verwijzen, 
                       bv. fg %2 om het tweede in de achtergrond geplaatste commando weer in de voorgrond te zetten.
bg  	                Aktiveer een bevroren commando terug, na Ctrl+Z.
fg 	                Breng een commando van de achtergrond naar de voorgrond.
kill 	                Beëindig een programma dat in de achtergrond draait.

Op het kill commando komen we zodadelijk nog terug.

Opdracht

Oefenen

  1. Start vanuit een terminal venster een rekenmachine met het xcalc commando.
  2. Bevries het proces en zet het daarna in de achtergrond.
  3. Start een tweede terminal met het commando xterm.
  4. Breng ook dit proces naar de achtergrond (eerst bevriezen, in het eerste terminal venster).
  5. Vraag een lijst van draaiende commando's op.
  6. Breng het eerste commando weer in de voorgrond en beëindig het.
  7. Vraag weer een lijst van jobs op.
  8. Breng het xterm programma weer op de voorgrond. Wat gebeurt er als je nu iets in wilt typen in het eerste terminal venster? Waarom?
  9. Beëndig het xterm proces.
  10. Ga weer naar het terminal venster vanwaaruit je de commando's gestart hebt. Start nog een rekenmachine, deze keer direct in de achtergrond.
  11. Vraag weer een lijst van draaiende commando's op.
  12. Wat is de betekenis van het plus- en het minteken na het jobnummer?
  13. Sluit alle vensters.

Automatische processen[bewerken]

Naast interactieve processen, opgestart door de gebruikers van een systeem, zijn er ook automatische of batch processen. Die worden niet opgestart vanuit een terminal venster. Ze wachten eerst op uitvoering in een daartoe bestemde map. Vandaaruit worden ze opgeroepen door een programma dat de wachtrij analyzeert en de programma's systematisch uitvoert. Het programma dat het eerste in de wachtrij terecht kwam, wordt ook het eerst uitgevoerd. De naam van dit systeem is “FIFO”, wat staat voor “first in, first out”.

Er zijn twee manieren om automatische processen uit te voeren:

  1. Op een gegeven datum en tijd: dit gebeurt door middel van het dat commando.
  2. Alternatief kan met het aan het systeem overlaten om te bepalen wanneer een goed moment is om automatische taken uit te voeren door gebruik te maken van het batch commando.

De eerste methode is ook voor gewone gebruikers nuttig en wordt later in dit hoofdstuk besproken. De tweede methode wordt meestal in grotere omgevingen toegepast en is veeleer een werk voor systeembeheerders en zware gebruikers; vandaar valt die methode buiten de scoop van deze cursus.

Daemons[bewerken]

Daemons, Engels voor “demonen”, zijn serverprocessen die continu draaien. Meestal worden ze opgestart wanneer het systeem opstart, waarna ze in de achtergrond wachten tot hun diensten vereist zijn.

Zelfs als je zelf geen servers draait op je thuis-PC, zijn er daemons actief. Een voorbeeld is de daemon die nagaat of je wilt inloggen: zelfs als je nog niet aangemeld bent, draait dit proces. Zo is er ook een netwerkdaemon, die constant “luistert” of er geen netwerkverbindingen moeten worden gemaakt.

Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.