Næsten alle processer i Linux har en kontrollerende terminal. Men hvad er egentlig en kontrollerende terminal? Lad os finde ud af det.
Du har måske hørt udtrykket "kontrollerende terminal" brugt i relation til Linux-processer. Du kan være forvirret over, hvad en kontrollerende terminal er. Heldigvis er en kontrollerende terminal let at forstå.
Hvad er en kontrollerende terminal?
En kontrollerende terminal er en terminal, hvor en Linux-proces starter. For eksempel, hvis du kører en kommando fra skallen, er terminalvinduet, hvor du indtastede kommandoen, den kontrollerende terminal.
Processer lanceret med kontrollerende terminaler arver attributter fra den overordnede terminal. Dette skyldes den måde, processer lanceres i Linux. Når du kører en kommando, laver skallen en kopi af sig selv, eller "forks", og erstatter derefter sig selv med det program, du ønskede at køre, eller "execs."
Sådan kan du se, hvilke processer der har en kontrollerende terminal
Det er nemt at se processer, der har en kontrollerende terminal i Linux. Du kan bruge ps kommandoen at se dem.
Du kan se alle processer, der tilhører alle brugere på systemet, uanset om de har styreterminaler eller ej, ved at bruge "aux" argument:
ps aux
Fordi dette genererer en masse output på Linux-systemer, kan det være nyttigt at overføre det til en personsøger, såsom mindre:
ps aux | mindre
Du kan også se de første par linjer ved hjælp af hovedværktøjet:
ps aux | hoved
I outputtet vil du se en kolonne mærket "TTY". Dette indikerer en process kontrollerende terminal, hvis der er en. En proces med en kontrollerende terminal vil vise "ttyx", hvor "x" er terminalnummeret eller "pts", efterfulgt af en skråstreg (/) og pseudoterminalens linjenummer.
Da de fleste terminaler faktisk er terminalemulatorer, bruger de pseudoterminaler eller PTY'er. "pts" angiver en terminalemulator i stedet for en fysisk terminal eller virtuel konsol.
Processer uden at kontrollere terminaler
På de fleste Linux-systemer vil TTY-kolonnen vise en spørgsmålstegn (?) karakter i mange processer. Dette skyldes, at processen ikke har en kontrollerende terminal. Hvorfor sker dette?
Linux-systemer kører en masse dæmoner eller tjenester i baggrunden. Disse kan være servere, såsom en webserver, såvel som dæmoner, der gør en masse grundlæggende ting som at køre din netværksforbindelse. Disse behøver ikke at bruge en terminal, så de kører bare uden en.
Hvis du starter en grafisk app fra et skrivebordsmiljøs menu, vil den heller ikke have en kontrollerende terminal.
Terminalmultipleksere som GNU Screen eller tmux giver dig mulighed for at frakoble en proces. Hvis du logger ud, men holder dit system kørende, kan du opleve, at den proces også mangler en kontrollerende terminal.
Hvis du har en proces uden en kontrollerende terminal, som du ønsker at slippe af med, du kan bruge kill-værktøjet.
Nu ved du om styring af terminaler
En kontrollerende terminal er en terminal, du sendte en kommando fra. Det er nemt at se, hvilke processer der gør og ikke har en kontrollerende terminal med ps-kommandoen. Og mange Linux-programmer gør det ikke, enten fordi de er dæmoner, eller du kan have løsnet dem med en terminal multiplexer.
Multipleksere som tmux får ikke kun lokale terminalsessioner til at fortsætte på tværs af logins, men de er også kraftfulde værktøjer til fjern-SSH-forbindelser.