Nesten hver prosess i Linux har en kontrollerende terminal. Men hva er egentlig en kontrollerende terminal? La oss finne det ut.
Du har kanskje hørt begrepet "kontrollerende terminal" brukt i forhold til Linux-prosesser. Du kan bli forvirret om hva en kontrollerende terminal er. Heldigvis er en kontrollerende terminal lett å forstå.
Hva er en kontrollerende terminal?
En kontrollerende terminal er en terminal der en Linux-prosess starter. For eksempel, hvis du kjører en kommando fra skallet, er terminalvinduet der du skrev inn kommandoen den kontrollerende terminalen.
Prosesser lansert med kontrollerende terminaler arver attributtene til overordnet terminal. Dette skyldes måten prosesser lanseres på i Linux. Når du kjører en kommando, lager skallet en kopi av seg selv, eller "gafler", og erstatter seg selv med programmet du ønsket å kjøre, eller "execs."
Hvordan se hvilke prosesser som har en kontrollerende terminal
Det er lett å se prosesser som har en kontrollerende terminal i Linux. Du kan bruke ps-kommandoen å se dem.
Du kan se alle prosesser som tilhører alle brukere på systemet, enten de har kontrollerende terminaler eller ikke, ved å bruke "aux" argument:
ps aux
Fordi dette genererer mye utdata på Linux-systemer, kan det være nyttig å overføre det til en personsøker, for eksempel mindre:
ps aux | mindre
Du kan også se de første linjene ved å bruke hodeverktøyet:
ps aux | hode
I utdataene vil du se en kolonne merket "TTY." Dette indikerer en prosess kontrollerende terminal, hvis det er en. En prosess med en kontrollerende terminal vil vise "ttyx" der "x" er terminalnummeret eller "pts", etterfulgt av en skråstrek (/) og pseudoterminallinjenummeret.
Siden de fleste terminaler faktisk er terminalemulatorer, bruker de pseudoterminaler eller PTY-er. "Pktene" indikerer en terminalemulator i stedet for en fysisk terminal eller virtuell konsoll.
Prosesser uten å kontrollere terminaler
På de fleste Linux-systemer vil TTY-kolonnen vise en spørsmålstegn (?) karakter i mange prosesser. Dette er fordi prosessen ikke har en kontrollerende terminal. Hvorfor skjer dette?
Linux-systemer kjører mange demoner, eller tjenester, i bakgrunnen. Dette kan være servere, for eksempel en webserver, så vel som demoner som gjør mange grunnleggende ting som å kjøre nettverkstilkoblingen din. Disse trenger ikke å bruke en terminal, så de kjører bare uten en.
Hvis du starter en grafisk app fra et skrivebordsmiljøs meny, vil den heller ikke ha en kontrollerende terminal.
Terminalmultipleksere som GNU Screen eller tmux lar deg koble fra en prosess. Hvis du logger ut, men holder systemet i gang, kan du finne ut at den prosessen også mangler en kontrollerende terminal.
Hvis du har en prosess uten en kontrollerende terminal som du ønsker å bli kvitt, du kan bruke kill-verktøyet.
Nå vet du om kontroll av terminaler
En kontrollerende terminal er en terminal du startet en kommando fra. Det er lett å se hvilke prosesser som gjør og ikke har en kontrollerende terminal med ps-kommandoen. Og mange Linux-programmer gjør det ikke, enten fordi de er demoner eller du kan ha koblet dem fra med en terminal multiplekser.
Multipleksere som tmux får ikke bare lokale terminalsesjoner til å vedvare på tvers av pålogginger, men de er også kraftige verktøy for eksterne SSH-tilkoblinger.