Presque chaque processus sous Linux a un terminal de contrôle. Mais qu'est-ce qu'un terminal de contrôle? Découvrons-le.

Vous avez peut-être entendu le terme « terminal de contrôle » utilisé en relation avec les processus Linux. Vous pourriez être confus quant à ce qu'est un terminal de contrôle. Heureusement, un terminal de contrôle est facile à comprendre.

Qu'est-ce qu'un terminal de contrôle?

Un terminal de contrôle est un terminal où un processus Linux démarre. Par exemple, si vous exécutez une commande à partir du shell, la fenêtre de terminal dans laquelle vous avez entré la commande est le terminal de contrôle.

Les processus lancés avec des terminaux de contrôle héritent des attributs du terminal parent. Cela est dû à la manière dont les processus sont lancés sous Linux. Lorsque vous exécutez une commande, le shell fait une copie de lui-même, ou "forks", puis se remplace par le programme que vous vouliez exécuter, ou "execs".

Comment voir quels processus ont un terminal de contrôle

instagram viewer

Il est facile de voir les processus qui ont un terminal de contrôle sous Linux. Vous pouvez utiliser la commande ps de les voir.

Vous pouvez voir tous les processus appartenant à tous les utilisateurs du système, qu'ils aient ou non des terminaux de contrôle, en utilisant la "aux" argument:

ps aux

Étant donné que cela génère beaucoup de sortie sur les systèmes Linux, il peut être utile de le diriger vers un pager, tel que less :

ps aux | moins

Vous pouvez également afficher les premières lignes à l'aide de l'utilitaire head :

ps aux | diriger

Dans la sortie, vous verrez une colonne intitulée "TTY". Ceci indique le terminal de contrôle d'un processus, s'il y en a un. Un processus avec un terminal de contrôle affichera "ttyx" où "x" est le numéro du terminal ou "pts", suivi d'une barre oblique (/) et du numéro de ligne du pseudoterminal.

Comme la plupart des terminaux sont en fait des émulateurs de terminaux, ils utilisent des pseudo-terminaux ou PTY. Le "pts" indique un émulateur de terminal plutôt qu'un terminal physique ou console virtuelle.

Processus sans contrôle des terminaux

Sur la plupart des systèmes Linux, la colonne TTY affichera un point d'interrogation (?) caractère dans de nombreux processus. C'est parce que le processus n'a pas de terminal de contrôle. Pourquoi cela arrive-t-il?

Les systèmes Linux exécutent de nombreux démons, ou services, en arrière-plan. Il peut s'agir de serveurs, tels qu'un serveur Web, ainsi que de démons qui effectuent de nombreuses tâches de base, telles que l'exécution de votre connexion réseau. Ceux-ci n'ont pas besoin d'utiliser un terminal, ils fonctionnent donc sans terminal.

Si vous lancez une application graphique à partir du menu d'un environnement de bureau, cela n'aura pas non plus de terminal de contrôle.

Les multiplexeurs de terminaux comme GNU Screen ou tmux permettent de détacher un processus. Si vous vous déconnectez mais que votre système continue de fonctionner, vous constaterez peut-être que ce processus ne dispose pas non plus d'un terminal de contrôle.

Si vous avez un processus sans terminal de contrôle dont vous souhaitez vous débarrasser, vous pouvez utiliser l'utilitaire kill.

Vous savez maintenant comment contrôler les terminaux

Un terminal de contrôle est un terminal à partir duquel vous avez lancé une commande. Il est facile de voir quels processus ont et n'ont pas de terminal de contrôle avec la commande ps. Et de nombreux programmes Linux ne le font pas, soit parce que ce sont des démons, soit parce que vous les avez peut-être détachés avec un multiplexeur de terminal.

Les multiplexeurs comme tmux font non seulement persister les sessions de terminal locales à travers les connexions, mais ils sont également des outils puissants pour les connexions SSH à distance.