Quasi ogni processo in Linux ha un terminale di controllo. Ma cos'è anche un terminale di controllo? Scopriamolo.
Potresti aver sentito il termine "terminale di controllo" usato in relazione ai processi Linux. Potresti essere confuso su cosa sia un terminale di controllo. Fortunatamente, un terminale di controllo è facile da capire.
Cos'è un terminale di controllo?
Un terminale di controllo è un terminale in cui viene avviato un processo Linux. Ad esempio, se esegui un comando dalla shell, la finestra del terminale in cui hai inserito il comando è il terminale di controllo.
I processi avviati con i terminali di controllo ereditano gli attributi del terminale padre. Ciò è dovuto al modo in cui i processi vengono avviati in Linux. Quando esegui un comando, la shell crea una copia di se stessa, o "forks", quindi si sostituisce con il programma che volevi eseguire, o "execs".
Come vedere quali processi hanno un terminale di controllo
È facile vedere i processi che hanno un terminale di controllo in Linux. Puoi usare il comando ps vederli.
È possibile visualizzare tutti i processi appartenenti a tutti gli utenti del sistema, indipendentemente dal fatto che dispongano o meno di terminali di controllo, utilizzando il file "aux" discussione:
ps ausiliario
Poiché questo genera molto output sui sistemi Linux, può essere utile convogliarlo in un cercapersone, ad esempio less:
ps ausiliario | meno
Puoi anche visualizzare le prime righe utilizzando l'utilità head:
ps ausiliario | Testa
Nell'output, vedrai una colonna con l'etichetta "TTY". Indica il terminale di controllo di un processo, se presente. Un processo con un terminale di controllo visualizzerà "ttyx" dove "x" è il numero del terminale o "pts", seguito da una barra (/) e dal numero di riga dello pseudoterminale.
Poiché la maggior parte dei terminali sono in realtà emulatori di terminale, utilizzano pseudoterminali o PTY. I "pts" indicano un emulatore di terminale piuttosto che un terminale fisico o consolle virtuale.
Processi senza controllo dei terminali
Sulla maggior parte dei sistemi Linux, la colonna TTY visualizzerà a punto interrogativo (?) carattere in molti processi. Questo perché il processo non ha un terminale di controllo. Perché succede?
I sistemi Linux eseguono molti demoni, o servizi, in background. Questi possono essere server, come un server Web, nonché demoni che eseguono molte operazioni di base come l'esecuzione della connessione di rete. Questi non hanno bisogno di usare un terminale, quindi funzionano senza.
Se avvii un'app grafica dal menu di un ambiente desktop, anche questo non avrà un terminale di controllo.
I multiplexer di terminali come GNU Screen o tmux consentono di scollegare un processo. Se ti disconnetti ma mantieni il sistema in esecuzione, potresti scoprire che anche a quel processo manca un terminale di controllo.
Se hai un processo senza un terminale di controllo di cui vuoi sbarazzarti, puoi usare l'utility kill.
Ora sai come controllare i terminali
Un terminale di controllo è un terminale da cui hai lanciato un comando. È facile vedere quali processi hanno e non hanno un terminale di controllo con il comando ps. E molti programmi Linux non lo fanno, o perché sono demoni o potresti averli staccati con un multiplexer terminale.
I multiplexer come tmux non solo mantengono le sessioni del terminale locale tra gli accessi, ma sono anche potenti strumenti per le connessioni SSH remote.