Quase todos os processos no Linux possuem um terminal de controle. Mas o que é um terminal de controle? Vamos descobrir.
Você pode ter ouvido o termo “terminal de controle” usado em relação aos processos do Linux. Você pode estar confuso sobre o que é um terminal de controle. Felizmente, um terminal de controle é fácil de entender.
O que é um terminal de controle?
Um terminal de controle é um terminal onde um processo do Linux é iniciado. Por exemplo, se você executar um comando a partir do shell, a janela do terminal onde você digitou o comando é o terminal de controle.
Processos iniciados com terminais de controle herdam atributos do terminal pai. Isso se deve à forma como os processos são iniciados no Linux. Quando você executa um comando, o shell faz uma cópia de si mesmo, ou “bifurca”, e então se substitui pelo programa que você deseja executar, ou “execução”.
Como ver quais processos têm um terminal de controle
É fácil ver processos que possuem um terminal de controle no Linux. Você pode usar o comando ps vê-los.
Você pode ver todos os processos pertencentes a todos os usuários do sistema, tenham ou não terminais de controle, usando o “aux” argumento:
ps aux
Como isso gera muita saída em sistemas Linux, pode ser útil canalizá-la para um pager, como menos:
ps aux | menos
Você também pode visualizar as primeiras linhas usando o utilitário head:
ps aux | cabeça
Na saída, você verá uma coluna denominada “TTY”. Isso indica o terminal de controle de um processo, se houver. Um processo com um terminal de controle exibirá “ttyx” onde “x” é o número do terminal ou “pts”, seguido por uma barra (/) e o número da linha do pseudoterminal.
Como a maioria dos terminais são na verdade emuladores de terminal, eles usam pseudoterminais ou PTYs. O "pts" indica um emulador de terminal em vez de um terminal físico ou console virtual.
Processos sem terminais de controle
Na maioria dos sistemas Linux, a coluna TTY exibirá um ponto de interrogação (?) em muitos processos. Isso ocorre porque o processo não possui um terminal de controle. Por que isso acontece?
Os sistemas Linux executam muitos daemons, ou serviços, em segundo plano. Podem ser servidores, como um servidor da Web, bem como daemons que fazem muitas coisas básicas, como executar sua conexão de rede. Eles não precisam usar um terminal, então eles simplesmente rodam sem um.
Se você iniciar um aplicativo gráfico a partir do menu de um ambiente de área de trabalho, ele também não terá um terminal de controle.
Multiplexadores de terminal como GNU Screen ou tmux permitem que você desconecte um processo. Se você fizer logout, mas manter o sistema em execução, poderá descobrir que esse processo também carece de um terminal de controle.
Se você tiver um processo sem um terminal de controle do qual deseja se livrar, você pode usar o utilitário kill.
Agora você sabe sobre terminais de controle
Um terminal de controle é um terminal a partir do qual você lançou um comando. É fácil ver quais processos possuem e não possuem um terminal de controle com o comando ps. E muitos programas Linux não o fazem, seja porque são daemons ou porque você pode desligá-los com um multiplexador de terminal.
Multiplexadores como o tmux não apenas fazem com que as sessões de terminal local persistam nos logins, mas também são ferramentas poderosas para conexões SSH remotas.