Bijna elk proces in Linux heeft een controlerende terminal. Maar wat is een controlerende terminal eigenlijk? Dat zoeken we uit.

Je hebt misschien de term "controlling terminal" gehoord die wordt gebruikt in verband met Linux-processen. U bent misschien in de war over wat een controlerende terminal is. Gelukkig is een bedieningsterminal gemakkelijk te begrijpen.

Wat is een controlerende terminal?

Een controlerende terminal is een terminal waar een Linux-proces start. Als u bijvoorbeeld een opdracht uitvoert vanuit de shell, is het terminalvenster waarin u de opdracht hebt ingevoerd de controlerende terminal.

Processen die zijn gestart met het besturen van terminals, erven kenmerken van de bovenliggende terminal. Dit komt door de manier waarop processen in Linux worden gestart. Wanneer je een opdracht uitvoert, maakt de shell een kopie van zichzelf, of "forks", en vervangt zichzelf vervolgens door het programma dat je wilde uitvoeren, of "execs".

Hoe te zien welke processen een controlerende terminal hebben

instagram viewer

Het is gemakkelijk om processen te zien die een controlerende terminal hebben in Linux. Je kunt gebruiken het ps-commando om ze te zien.

U kunt alle processen van alle gebruikers op het systeem zien, ongeacht of ze besturingsterminals hebben of niet, met behulp van de "aux" argument:

ps hulp

Omdat dit veel output genereert op Linux-systemen, kan het handig zijn om het naar een pager te pipen, zoals less:

ps aux | minder

U kunt ook de eerste paar regels bekijken met behulp van het hulpprogramma head:

ps aux | hoofd

In de uitvoer ziet u een kolom met het label 'TTY'. Dit geeft de controlerende terminal van een proces aan, als die er is. Een proces met een controlerende terminal geeft "ttyx" weer, waarbij "x" het terminalnummer of "pts" is, gevolgd door een schuine streep (/) en het regelnummer van de pseudoterminal.

Aangezien de meeste terminals eigenlijk terminalemulators zijn, gebruiken ze pseudoterminals of PTY's. De "pts" geeft een terminalemulator aan in plaats van een fysieke terminal of virtuele console.

Processen zonder terminals te controleren

Op de meeste Linux-systemen zal de TTY-kolom een vraagteken (?) karakter in veel processen. Dit komt omdat het proces geen controlerende terminal heeft. Waarom gebeurt dit?

Linux-systemen draaien veel daemons of services op de achtergrond. Dit kunnen servers zijn, zoals een webserver, maar ook daemons die veel basiszaken doen, zoals het onderhouden van uw netwerkverbinding. Deze hoeven geen terminal te gebruiken, dus ze werken gewoon zonder.

Als u een grafische app start vanuit het menu van een desktopomgeving, heeft die ook geen besturingsterminal.

Met terminalmultiplexers zoals GNU Screen of tmux kunt u een proces loskoppelen. Als u uitlogt maar uw systeem aan de gang houdt, kan het zijn dat dat proces ook geen controlerende terminal heeft.

Als u een proces heeft zonder een controlerende terminal waar u vanaf wilt, je kunt het kill-hulpprogramma gebruiken.

Nu weet u hoe u terminals bedient

Een controlerende terminal is een terminal van waaruit u een opdracht hebt gestart. Het is gemakkelijk om te zien welke processen wel en geen controlerende terminal hebben met het ps-commando. En veel Linux-programma's doen dat niet, omdat het daemons zijn of omdat je ze hebt losgekoppeld met een terminal-multiplexer.

Multiplexers zoals tmux zorgen er niet alleen voor dat lokale terminalsessies blijven bestaan ​​bij alle aanmeldingen, maar het zijn ook krachtige tools voor SSH-verbindingen op afstand.