Procesbeheer

In Linux wordt de instantie van een lopend programma als proces beschouwd. De volgende terminalcommando's behoren tot het standaard repertoire van het procesmanagement en stellen je in staat om alle processen in je systeem eenvoudig te monitoren vanuit de terminal en indien nodig aan te sturen.​

I/O-scheduling-klassen toewijzen

Het opdrachtregelcommando ionice wordt gebruikt om de prioriteit van een proces te beïnvloeden dat de I/O-interface van de kernel gebruikt.

De algemene syntax van het commando luidt:

ionice [OPTIES] COMMANDO

Om ionice uit te kunnen voeren, zijn rootrechten vereist.

Het commando maakt een onderscheid tussen drie scheduling-klassen, die via de optie –cGETAL worden ingevoerd. Mogelijke waarden zijn 1, 2 en 3.

  1. = realtime: De I/O-actie wordt direct uitgevoerd.
  2. = best-effort: De I/O-actie wordt zo snel mogelijk uitgevoerd.
  3. = idle: De I/O-actie wordt alleen uitgevoerd als er geen ander proces is dat een beroep doet op I/O-tijd.

De PID van een lopend proces wordt ingevoerd met de optie –pPID.

Voorbeeld:

ionice -c2 -p1234

Aan het proces met de PID 1234 wordt de scheduling-klasse 2 (best effort) toegekend.

Proces via PID stoppen en afsluiten

kill is een opdrachtregelprogramma waarmee processen kunnen worden gestopt en afgesloten.

Het commando wordt volgens het volgende schema met een gewenst signaal en het ID van het geselecteerde proces ingevoerd.

kill [OPTIES] [-SIGNAAL] PID

Veel gebruikte signalen zijn:

  • TERM: zorgt ervoor dat een proces zichzelf afsluit (standaard)
  • KILL: forceert het afsluiten van een proces (door het systeem)
  • STOP: stopt een proces
  • CONT: schakelt een gestopt proces weer in

De volgende aanvraag zendt een signaal naar het proces 1234, waardoor het zichzelf afsluit. Omdat er geen signaal is ingevoerd, zendt kill het standaardsignaal TERM.

kill 1234

Geef processen altijd de mogelijkheid om zichzelf af te sluiten en forceer de actie alleen via KILL als het aangesproken proces niet reageert zoals bedoeld.

kill -KILL 1234

Als je 1234 alleen tijdelijk wilt pauzeren, gebruik je de volgende commando’s om het proces te stoppen en weer in te schakelen:

kill -STOP 1234

kill -CONT 1234

Gebruik het commando kill met de optie –l (–list) om alle mogelijke signalen weer te geven die via kill naar processen kunnen worden verzonden.

Processen via naam stoppen en afsluiten

Gebruik killall in combinatie met een bepaalde zoekterm om alleen de processen af te sluiten waarvan de naam exact overeenkomt (de eerste 15 tekens worden vergeleken).

killall [OPTIES] [-SIGNAAL] [PROCESNAAM]

Met de optie –e (–exact) kan de vergelijking worden uitgebreid naar alle tekens van de procesnaam.

Procesprioriteiten definiëren

Het opdrachtregelcommando nice wijst een proces bij het starten een nice-waarde tussen -20 en +19 toe in hele getallen, op basis waarvan het beschikbare rekenvermogen van het systeem wordt verdeeld. Het bereik -20 tot +19 komt overeen met de Linux-prioriteitsniveaus 100 tot 139. Een proces met een nice-waarde van -20 heeft dus een hogere prioriteit dan een proces met een nice-waarde van 19.

De bijbehorende syntax luidt:

nice [OPTIE] [COMMANDO]

Zonder verdere invoer start ieder proces met een nice-waarde van 0. Gebruik de optie -n om procesprioriteiten te definiëren. Daarbij dient er rekening mee te worden gehouden dat negatieve prioriteiten alleen kunnen worden toegekend met rootrechten.

In het volgende voorbeeld wordt de editor nano gestart met een prioriteit van 4:

nice -n 4 nano

Proces uit sessie verwijderen

Normaal gesproken worden alle afhankelijke processen van een gebruiker automatisch afgesloten zodra deze de terminalsessie sluit (bijvoorbeeld via exit).

Het opdrachtregelcommando nohup (kort voor no hangup) verwijdert een proces uit de huidige sessie en stelt je in staat dit ook verder te laten lopen als je je afmeldt in het systeem. Het bijbehorende HUP-signaal (hangup) dat er normaal gesproken voor zorgt dat een proces automatisch wordt afgesloten, wordt onderdrukt door nohup.

Het programma wordt geopend met het volgende schema:

nohup COMMANDO

PID bepalen via zoekterm

Het opdrachtregelprogramma pgrep vergelijkt het overzicht van lopende processen met een zoekterm en geeft bij overeenstemming de bijbehorende PIDs weer.

De algemene syntax van het commando luidt:

pgrep [OPTIES] zoekterm

pgrep geeft standaard de PIDs weer van alle processen die de zoekterm bevatten.

Voorbeeld:

pgrep ssh

Alle processen met de zoekterm ssh in de procesnaam worden getoond.

Als de zoekopdracht moet worden beperkt tot exacte overeenkomsten gebruik je het commando met de optie –x.

Voorbeeld:

pgrep -x sshd

Alleen de processen die exact sshd heten, worden getoond.

Als je naast de PID ook de procesnaam wilt opvragen, gebruik je pgrep met de optie –l.

pgrep ondersteunt (net als grep) zoektermen op basis van reguliere expressies.

Het opdrachtregelprogramma pidof geeft de procesidentificatienummers (PIDs) van alle processen van een programma weer.

Achterhaal PIDs via pidof met het volgende schema:

pidof [OPTIES] PROGRAMMA

Via de volgende aanvraag worden de IDs van alle lopende processen van het programma nano weergegeven in de terminal.

pidof nano

Als je alleen het eerste proces-ID wilt weergeven, gebruik je pidof in combinatie met de optie –s (kort voor single shot).

Processen via zoekterm stoppen en afsluiten

Net als kill zendt ook pkill een signaal naar een geselecteerd proces. Het adresseren wordt echter gedaan aan de hand van het PID. In plaats daarvan wordt er een zoekterm ingevoerd die wordt vergeleken met de namen van lopende processen. Deze kan worden geformuleerd als reguliere expressie.

Ook pkill verzendt het standaardsignaal TERM, tenzij er een andere signaal is gedefinieerd. De algemene syntax van het commando luidt:

pkill [OPTIES] [-SIGNAAL] [ZOEKTERM]

Met opties kan het commando worden beperkt tot de processen van een bepaalde gebruiker (-U UID), tot kindprocessen van een bepaald ouderproces (-P PID) of de nieuwste (-n) respectievelijk oudste processen (-o).

pkill spreekt alle processen aan met de zoekterm in de naam, terwijl het commando killall alleen processen aanspreekt die exact overeenstemmen.

Lijst van alle lopende processen opvragen

Het commando ps geeft een overzicht van alle lopende processen weer in de terminal.

ps [OPTIES]

Als je een gedetailleerde uitvoer nodig hebt, gebruik je ps met de opties –f(gedetailleerd) of –F (zeer gedetailleerd).

Verdere opties vind je in de gebruiksaanwijzingspagina’s van je besturingssysteem.

Lopende procedures opvragen als boomstructuur

Gebruik pstree om alle lopende processen weer te geven in een boomstructuur.

De algemene syntax van het commando luidt:

pstree [OPTIES]

Formaat en omvang van de uitvoer kan worden aangepast met diverse opties.

Prioriteiten van lopende processen wijzigen

Met het opdrachtregelcommando renice kun je de prioriteit van een lopend proces wijzigen.

De algemene syntax luidt:

renice PRIORITEIT [OPTIES]

De adressering wordt geregeld met behulp van opties via het proces-ID (-p PID), het groeps-ID (-g GID) of een gebruikersnaam (-u GEBRUIKER).

Voorbeelden:

renice 12 -p 1234

Aan het proces met het ID 1234 wordt de prioriteit 12 toegewezen.

renice 3 -g 3456

Aan alle lopende processen van de groep met het GID 3456 wordt een prioriteit van 3 toegewezen.

sudo renice -6 -u peter24

Aan alle lopende processen van de gebruiker peter24 wordt een prioriteit van -6 toegewezen.

Als je renice gebruikt zonder optie wordt de standaardwaarde –p aangenomen en de volgende string geïnterpreteerd als proces-ID.

Procesuitvoering vertragen

Met het opdrachtregelcommando sleep kun je de huidige terminalsessie voor een bepaalde tijd onderbreken.

De algemene syntax van het commando luidt:

sleep GETAL[SUFFIX]

Als je sleep gebruikt zonder suffix wordt het ingevoerde getal geïnterpreteerd als tijdspanne in seconden (s). Je kunt de terminalsessie ook voor minuten (m), uren (h) of dagen (d) onderbreken.

De volgende invoer onderbreekt de sessie voor 4 minuten:

sleep 4m

Het commando is bijvoorbeeld geschikt om de uitvoering van een volgend commando te vertragen:

sleep 1h && reboot

Het systeem wacht een uur en voert vervolgens het commando reboot uit, waarmee het systeem opnieuw wordt opgestart.

Dynamisch procesoverzicht

Met het commando top vraag je een dynamisch overzicht van alle lopende processen op.

Dit doe je volgens het volgende schema:

top [OPTIES]

De uitvoer van procesgegevens kan met behulp van diverse opties worden gewijzigd. Bovendien ondersteunt het top-procesoverzicht (onder meer) de volgende hotkeys om de uitvoer te sorteren:

  • [P] = Sorteert de uitvoer op CPU-belasting
  • [M] = Sorteert de uitvoer op geheugenverbruik
  • [N] = Sorteert de uitvoer numeriek op PID
  • [A] = Sorteert de uitvoer op leeftijd
  • [T] = Sorteert de uitvoer op tijd
  • [U GEBRUIKERSNAAM of UID] = filtert de uitvoer op de betreffende gebruiker

Gebruik de hotkey [H] om een helppagina weer te geven en [Q] om het procesoverzicht te verlaten.