Nästan varje process i Linux har en kontrollerande terminal. Men vad är ens en styrande terminal? Låt oss ta reda på.
Du kanske har hört termen "kontrollerande terminal" som används i relation till Linux-processer. Du kanske är förvirrad över vad en styrande terminal är. Lyckligtvis är en styrande terminal lätt att förstå.
Vad är en kontrollterminal?
En kontrollerande terminal är en terminal där en Linux-process startar. Om du till exempel kör ett kommando från skalet är terminalfönstret där du skrev in kommandot den styrande terminalen.
Processer som startas med styrande terminaler ärver attribut från den överordnade terminalen. Detta beror på hur processer lanseras i Linux. När du kör ett kommando gör skalet en kopia av sig själv, eller "gafflar", ersätter sig sedan med programmet du ville köra, eller "execs".
Hur man ser vilka processer som har en styrande terminal
Det är lätt att se processer som har en styrande terminal i Linux. Du kan använda kommandot ps att se dem.
Du kan se alla processer som tillhör alla användare på systemet, oavsett om de har styrande terminaler eller inte, genom att använda
"aux" argument:ps aux
Eftersom detta genererar mycket utdata på Linux-system, kan det vara till hjälp att överföra det till en personsökare, till exempel mindre:
ps aux | mindre
Du kan också se de första raderna med hjälp av huvudverktyget:
ps aux | huvud
I utgången ser du en kolumn märkt "TTY". Detta indikerar en processs styrande terminal, om det finns en. En process med en styrande terminal kommer att visa "ttyx" där "x" är terminalnumret eller "pts", följt av ett snedstreck (/) och pseudoterminalens radnummer.
Eftersom de flesta terminaler faktiskt är terminalemulatorer använder de pseudoterminaler eller PTY. "pts" indikerar en terminalemulator snarare än en fysisk terminal eller virtuell konsol.
Processer utan att kontrollera terminaler
På de flesta Linux-system visar TTY-kolumnen en frågetecken (?) karaktär i många processer. Detta beror på att processen inte har en styrande terminal. Varför händer detta?
Linux-system kör många demoner, eller tjänster, i bakgrunden. Dessa kan vara servrar, som en webbserver, såväl som demoner som gör många grundläggande saker som att köra din nätverksanslutning. Dessa behöver inte använda en terminal, så de körs bara utan en.
Om du startar en grafisk app från en skrivbordsmiljös meny kommer den inte heller att ha en styrande terminal.
Terminalmultiplexer som GNU Screen eller tmux låter dig koppla bort en process. Om du loggar ut men håller ditt system igång kan du upptäcka att den processen också saknar en styrande terminal.
Om du har en process utan en styrande terminal som du vill bli av med, du kan använda kill-verktyget.
Nu vet du om att styra terminaler
En kontrollerande terminal är en terminal som du startade ett kommando från. Det är lätt att se vilka processer som gör och inte har en styrande terminal med kommandot ps. Och många Linux-program gör det inte, antingen för att de är demoner eller för att du kanske har kopplat bort dem med en terminalmultiplexer.
Multiplexer som tmux gör inte bara att lokala terminalsessioner kvarstår över inloggningar, utan de är också kraftfulla verktyg för fjärranslutna SSH-anslutningar.