# Ubuntu: Linux voor mensen/Processen/Informatie over een proces opzoeken
## Korte info met ps

Een van de meest gebruikte commando's voor het opvragen van procesinformatie is ps (afkorting van het Engelse “process”). Zonder opties krijg je enkel de processen te zien die verbonden zijn met de terminal sessie vanwaaruit je ps oproept:
* willy@ubunty:~$ ps
* PID TTY TIME CMD
* 7268 pts/0 00:00:00 bash
* 8240 pts/0 00:00:00 xterm
* 8266 pts/0 00:00:00 xcalc
* 9855 pts/0 00:00:00 ps
Noteer: de commando's die in de vorige oefening werden opgestart, zijn hier nog actief.
We zien 4 kolommen met informatie:
1. PID: het proces-identificatienummer. 2. TTY: het terminal type en nummer waaraan het proces verbonden is. Wij gebruiken pts, pseudo-terminals, in tegenstelling tot echte terminals waarbij je een toetsenbord en een scherm hebt, waarmee je niets anders kan doen dan 1 enkele shell openen, in een tekstuele omgeving (te vergelijken met DOS vroeger). Pseudo-terminals zijn terminal vensters in een grafische omgeving, of verbindingen van op een netwerk. 3. TIME: een relatieve indicatie van de tijd die het aantal processor cycli dat het proces al verbruikt heeft. Gewone processen van gebruikers verbruiken slechts een klein deel van de totale processor kracht. 4. CMD: de naam van het commando.

## Uitgebreide info met ps opties

Normaal gezien draaien er tientallen, honderden of duizenden processen op een systeem. We hebben dus manieren nodig om die processen uit te filteren die voor ons van belang zijn, tezamen met de bijhorende proces informatie. Dit doen we door opties bij ps te gebruiken en dan de shell te gebruiken om de resultaten te filteren.
Het meest gebruikt is wellicht de constructie
* Voer uit
* Geef het bovenstaande commando in in een terminal venster. Rol de schuifbalk aan de rechterzijkant van het venster naar boven toe, totdat je ziet waar de output van dit commando begint.
Op een systeem zoals hetgeen waarmee je nu werkt, valt de lijst van processen nog mee. Je krijgt een lijst met 8 kolommen te zien, waarvan deze het meest relevant zijn:
* UID: de naam van de gebruiker die het proces opstartte.
* PID: procesidentificatienummer.
* PPID: procesidentificatienummer van het parent process, het proces dat dit proces opstartte.
* TTY: de terminal waaraan het proces verbonden is, “?” wil zeggen dat het proces niet aan een terminal verbonden is.
* CMD: de volle naam van het commando waarmee het proces werd opgeroepen.
De man pagina van ps bevat veel voorbeelden van het gebruik van de andere opties. Je vindt er ook meer uitleg over de informatie in de andere kolommen. In het volgende hoofdstuk gaan we verder in op het filteren van de output, zodat er meer relevante informatie getoond wordt. We willen namelijk niet elke keer gaan zoeken in deze lijst naar het specifieke proces dat we onder de loep willen nemen.

## Het top commando

Het top commando geeft min of meer dezelfde informatie als ps -ef, maar hier wordt de informatie om de vijf seconden opgefrist. Bovendien hebben we hier al automatisch een zeker vorm van sorteren: de zwaarste processen, dat wil zeggen de processen die het meeste processortijd verbruiken, worden bovenaan in de lijst getoond. We krijgen ook niet alle processen te zien. Al naargelang de grootte van je terminal venster wordt de lijst ingekort. We krijgen dus een “top” van de processen te zien.
* Meedoen
* Geef het top commando in, zonder opties, gevolgd door Enter. We bespreken hieronder verder de output.
Naast de info over de processen, onder de zwarte balk, zien we bovenaan nog een aantal andere gegevens over het systeem:
* De output van het uptime commando, met daarin informatie over hoe lang het systeem al draait, hoeveel gebruikers er verbonden zijn en wat de belasting is, zie ook de paragraaf Belasting. Meer info in man uptime.
* Het aantal processen en de status ervan: er draait altijd slechts 1 proces tegelijk op de CPU, terwijl de andere in een wachtrij staan. Zo werkt multitasking: de processor neemt een proces uit de wachtrij, helpt het een beetje verder en plaatst het weer in de wachtrij, om het volgende proces een beetje verder te helpen. Dit alles gaat echter zo snel, dat het lijkt alsof er tientallen of zelfs honderden processen tegelijk draaien.
* De belasting van de processor(s): moet de processor veel berekeningen maken, dan is de belasting hoog. Als de processor gewoon data moet doorgeven, zonder er zware bewerkingen op uit te voeren, is de belasting laag. Programma's die veel rekenkracht vereisen, zoals toepassingen voor grafische beeldverwerking en analyzeprogramma's vergen veel van de processor. Zo zal het zwaarste programma op jouw systeem waarschijnlijk X zijn, de grafische server die ervoor zorgt dat alle vensters op je bureaublad staan en dat de juiste gegevens in het juiste venster verschijnen.
* Gebruik van het geheugen: alle programma's die actief zijn, nemen een plaatsje in op het geheugen.
* Gebruik van de swap space (het virtuele geheugen, zie de paragraaf Schijfindeling?): als er teveel programma's draaien, wordt alle beschikbare plaats in het geheugen opgevuld. Een speciale plek op de harde schijf wordt dan gebruikt als extra geheugen.
* Documentatie
* Lees man top en man ps voor meer informatie. Blijf niet te lang hangen als je iets niet begrijpt, en ook niet als het te moeilijk wordt. Lees gewoon verder in de cursus, en neem er later, telkens je het commando gebruikt, de man pagina weer bij. We kunnen niet alles tegelijk vertellen, de gaten zullen later langzamerhand opgevuld worden.

## De samenhang tussen de processen

We hebben het al enkele keren over parent processes gehad. Waar komen onze processen vandaan? Gebruik het pstree commando om de processtructuur te tonen.
De meeste processen stammen af van init, het initiële proces waarmee het systeem gestart wordt. Meer hierover in de paragraaf Hoe je computer opstart en afsluit?.
* Waar is pstree?
* Voer het pstree commando in in een terminal venster, gevolgd door Enter. Waar zit het pstree commando zelf in deze boomstructuur? Welk proces is de ouder (het parent process) van pstree?