6.3 Processen
Hier bouw je op verder: De pipe en grep en Ctrl+C
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
Een programma dat draait, heet een proces. Elk proces krijgt een nummer, de PID (process id). Met dat nummer kun je het opzoeken en stoppen. ps laat de processen in deze terminal Het venster waarin je commando's typt en de antwoorden van de computer leest.Uitgelegd in Linux: zo werkt deze cursusAlle begrippen zien:
ps
PID TTY TIME CMD
412 pts/0 00:00:00 bash
598 pts/0 00:00:00 ps
Twee processen: bash, de shell Het programma dat leest wat je typt en daarna het commando start; op Ubuntu heet hij bash.Uitgelegd in 2.4 JokertekensAlle begrippen waarin je typt, en ps zelf. Bij jou zijn de nummers anders: Linux geeft ze uit op volgorde.
Alle processen
ps aux laat alle processen op de computer zien, van alle gebruikers. Dat zijn er veel, dus zoek met grep. Open twee Ubuntu De Linux die je in deze cursus gebruikt, en die je op de meeste servers tegenkomt.Uitgelegd in 5.1 WSL installerenAlle begrippen-vensters naast elkaar. Typ in het eerste:
sleep 1000
sleep doet duizend seconden niets, en houdt zo je terminal bezet. Zoek hem in het tweede venster:
pgrep -a sleep
734 sleep 1000
pgrep zoekt processen op naam en geeft de PID. Met -a zie je ook het hele commando Een opdracht die je in de terminal typt, zoals whoami of ls; na Enter voert de computer hem uit.Uitgelegd in 1.1 Je eerste commando'sAlle begrippen.
Een proces stoppen
Draait het in de terminal voor je neus, dan stop je het met Ctrl+C. Vanuit een ander venster gebruik je kill met de PID:
kill 734
In het eerste venster staat nu Terminated, en je kunt weer typen. Op naam kan ook: pkill sleep stopt elk proces dat sleep heet. Kijk daarom eerst met pgrep -a wat je raakt.
kill vraagt een proces netjes om te stoppen, zodat het nog kan opruimen. Luistert het niet, dan dwingt kill -9 het: dan stopt het meteen, zonder opruimen. Gebruik dat pas als het gewone kill niet werkt.
Live meekijken met top
top laat elke paar seconden zien welke processen het meest van de processor en het geheugen gebruiken, met de drukste bovenaan. Stoppen doe je met q.
Voorspel
Je zoekt sleep met ps aux | grep sleep, terwijl er één sleep draait. Hoeveel regels krijg je?
Klik hier als je het hebt geprobeerd
Twee:
sam 734 0.0 0.0 3144 2008 pts/0 S+ 10:15 0:00 sleep 1000
sam 801 0.0 0.0 4108 2156 pts/1 S+ 10:16 0:00 grep --color=auto sleep
grep sleep is zelf ook een proces, en in zijn commando staat het woord sleep. Wie de onderste PID gebruikt, stopt niets: dat proces is al klaar. pgrep heeft dat probleem niet.
Opdracht 6.3.a: stop het van buitenaf
- Start in het ene venster
sleep 1000. - Zoek in het andere venster zijn PID.
- Stop het met
kill, en kijk wat er in het eerste venster gebeurt.
Klik hier voor een tip
pgrep -a sleep geeft het nummer en het commando. Het nummer zet je achter kill.
Klik hier voor het antwoord
pgrep -a sleep
kill 734
Gebruik jouw eigen PID in plaats van 734. In het eerste venster verschijnt Terminated, gevolgd door een nieuwe prompt De regel voor de cursor, zoals student@oefenpc:~$: wie je bent, op welke computer, en in welke map je staat.Uitgelegd in 1.1 Je eerste commando'sAlle begrippen.
Opdracht 6.3.b: wie is er druk?
Het commando yes schrijft zo snel als het kan y op het scherm. Laat het in het ene venster draaien met yes > /dev/null: de uitvoer Wat een commando terugzegt: meestal tekst op het scherm, of met > in een bestand.Alle begrippen gaat naar /dev/null, een put zonder bodem. Open top in het andere venster.
- Welk proces staat bovenaan, en hoeveel procent van de processor gebruikt het?
- Stop
yes, en kijk of het uittopverdwijnt.
Klik hier voor een tip
De kolom %CPU zegt hoeveel van één processorkern een proces gebruikt. top sluit je met q, yes stop je met Ctrl+C.
Klik hier voor het antwoord
yes > /dev/null
yes staat bovenaan met bijna 100.0 bij %CPU: het gebruikt één kern helemaal. Na Ctrl+C in het eerste venster is het binnen een paar seconden uit top verdwenen.
Er gaat iets mis
No such process
bash: kill: (734) - No such process
Oorzaak: er draait geen proces met dat nummer. Het was al gestopt, of je typte de PID over van een oude uitvoer of van iemand anders.
Oplossing: zoek het opnieuw met pgrep -a. Het nummer is na elke start anders.
Operation not permitted
bash: kill: (1) - Operation not permitted
Oorzaak: het proces is van een andere gebruiker, hier van root. Je mag alleen je eigen processen stoppen.
Oplossing: meestal is het niet jouw proces om te stoppen. Is het een dienst Een programma dat op de achtergrond blijft draaien, ook als niemand is ingelogd, en na een herstart vanzelf weer start.Uitgelegd in 6.4 DienstenAlle begrippen, dan stop je hem met systemctl, in de volgende les: 6.4 Diensten.
De terminal reageert niet meer
Oorzaak: er draait nog een programma, zoals sleep, yes of top. Zolang dat loopt, gaat wat je typt naar dat programma en niet naar bash.
Oplossing: druk op Ctrl+C. Werkt dat niet, probeer dan q: daarmee sluit je top en man.
Door naar 6.4 Diensten.