Pourquoi UNIX / Linux fournit-il plusieurs terminaux?


8

Dans les années 1970, nous avions un terminal matériel avec une interface CUI (interface utilisateur de caractères) pour les entrées / sorties.

Maintenant, nous avons des émulateurs de terminaux ( Ctrl+ Alt+ Fn) dans le monde Unix / Linux.

Dans Ubuntu OS, je vois sept émulateurs de terminal, où l'interface graphique occupe le 7ème émulateur de terminal ( Ctrl+ Alt+ F7).

Par exemple, c'est mon premier émulateur de terminal ( Ctrl+ Alt+ F1)

$ tty
/dev/tty0

Pourquoi Unix / Linux fournit-il plusieurs émulateurs de terminaux?


8
Il y avait toujours une demande pour cela. Un programme nommé "écran" était utilisé alors qu'il n'y avait qu'un seul terminal disponible.
VPfB

7
@vpfb Screen est toujours disponible et fait partie intégrante de mon flux de travail!
tpg2114

1
Je pense que ce que vous demandez ici n'est pas des émulateurs de terminaux (qui sont des programmes comme xterm, rxvt, & c qui fonctionnent comme des applications graphiques sous X), mais des terminaux en mode texte qui n'exécutent pas de graphiques. La seule utilisation que j'ai vraiment trouvée pour ceux-ci (et cela depuis quelques années) est de déboguer des choses lorsque X ne fonctionne pas correctement. OTOH Je fais la plupart de mon vrai travail dans les fenêtres xterm, et je peux en ouvrir de trois à une douzaine ou plus.
jamesqf

@jamesqf pourquoi n'appelez-vous pas ctrl + alt + f1 comme émulateur de terminal? Parce que ce n'est pas le terminal matériel CUI que nous avions dans les années 1970
suréchange le

2
@overexchange: Je ne les appelle pas ainsi car ce n'est pas la terminologie utilisée par les gens qui les connaissent. Si vous effectuez une recherche sur "émulateur de terminal Linux", vous obtiendrez de nombreux résultats, dont la plupart n'ont rien à voir avec les consoles en mode texte que vous obtenez avec Ctl-Alt-F [1-7].
jamesqf

Réponses:


25

Pourquoi UNIX / Linux fournit-il plusieurs émulateurs de terminaux [sur la console]?

Pour la même raison, votre émulateur de terminal GUI prend probablement en charge les onglets (par exemple GNOME Terminal), et sinon (par exemple rxvt), alors pour la même raison, le lancement d'une deuxième instance d'application de terminal GUI ne fait pas que tirer la première au premier plan et quitter, vous forçant à utiliser la première instance.

J'utilise régulièrement au moins 3 fenêtres de terminal dans mon travail, et souvent plus:

  1. Éditeur de texte pour le côté serveur du système sur lequel je travaille

  2. Éditeur de texte pour le côté client du même système

  3. Fenêtre de commande pour exécuter le serveur

J'ai rarement besoin d'un quatrième terminal pour exécuter le programme client, car il s'exécute généralement ailleurs (application Web, application GUI native, application mobile, etc.), mais si je développais un client CLI pour mon application serveur, j'aurais un un terminal séparé lui est également ouvert.

Dans le passé, avant de sudodevenir populaire, je gardais un rootterminal ouvert tout le temps.

J'utilise rarement les boîtes Unix / Linux de manière interactive sur la console sans interface graphique ces jours-ci, mais je les exécute souvent sans tête et y accède via SSH. Mon client de terminal SSH de choix prend en charge les onglets, configurés comme ci-dessus.

L'un de mes projets de passe-temps actuels consiste à utiliser de temps en temps un vrai vieux terminal en verre , ce qui signifie que je n'ai plus plusieurs fenêtres de terminal, donc j'apprends enfin un peu plus sur GNUscreen , un programme pour lequel je n'ai jamais beaucoup utilisé auparavant, depuis que j'avais soit plusieurs terminaux de console, soit plusieurs terminaux GUI. Et que fait screen-il? Entre autres choses, vous pouvez le configurer pour vous donner plusieurs terminaux virtuels sur un seul écran, tout comme Linux le fait avec Ctrl- Alt- .Fx


10
La meilleure chose à propos de l'écran - autre que d'avoir plusieurs terminaux sur un terminal de console stupide - est que vous pouvez vous déconnecter, vous déconnecter, vous reconnecter et vous reconnecter aux sessions et au (x) processus ou à tout ce que vous faisiez dans les termes de l'écran continue.
ivanivan

Pour ajouter à ce que @ivanivan a dit, d'autres personnes peuvent voir votre session d'écran et plusieurs personnes peuvent la voir en même temps. C'est comme le partage de bureau sur console.
stanri

Note latérale: il existe des alternatives à l'utilisation de l'écran pur superuser.com/q/423310
moooeeeep

18

C'est une fonctionnalité fournie par presque tous, sinon tous, Unix et Unix, comme sur un matériel x86. Fait intéressant, les consoles virtuelles ont été introduites dans un Unix par Microsoft Xenix au début des années quatre-vingt et étaient également disponibles en CP / M simultané.

Cette fonctionnalité a ensuite été intégrée dans AT&T SVR4 Unix, Solaris et empruntée par BSD et Linux.

Pourquoi UNIX / Linux fournit-il plusieurs émulateurs de terminaux?

Lors de leur introduction, aucun environnement graphique n'était disponible pour les machines exécutant ces implémentations Unix. Tout en ayant un terminal physique connecté à un serveur Unix central via des lignes RS232 était la norme, la connexion de plusieurs terminaux à un PC standard exécutant Xenix était exagérée si l'objectif était juste pour un seul utilisateur d'exécuter plusieurs programmes interactifs simultanément. Les terminaux virtuels ont fourni une solution élégante et pratique à ce problème.

D'autres implémentations Unix ont fourni plus tard cette même fonctionnalité pour répondre au même besoin.

Lorsque les environnements graphiques, en particulier X11, se sont répandus, la possibilité de voir plusieurs émulateurs de terminaux en même temps sur le même écran a été une amélioration significative. La fonctionnalité de console virtuelle a cependant été généralement conservée, ne serait-ce que parce qu'il était toujours pratique de pouvoir basculer vers une console si l'environnement graphique était gelé ou dysfonctionnel pour une raison quelconque.

Notez que les utilitaires aiment screenet tmuxsont venus bien plus tard que les terminaux virtuels pour généraliser la même fonctionnalité. Leur avantage est qu'ils peuvent être utilisés non seulement sur la console physique locale, mais aussi sur ce que session, soit locale ou à distance (par exemple telnet, ssh). Lorsqu'elles sont utilisées sur la console physique, les consoles virtuelles sont toujours utiles car elles sont fonctionnelles dans certaines situations où screen/ tmuxne peut pas aider, comme si X11 est figé, ou si une fenêtre a capturé le focus et ne le libère pas.

La virtualisation basée sur un conteneur comme les zones Solaris ou Linux LXC fournit également une méthode pour se connecter à la console du conteneur via zlogin -C zoneet lxc-console -t 0 -n containerrespectivement.


4

Je suppose qu'une bonne raison d'avoir des émulateurs de terminaux supplémentaires est que si vous faites quelque chose de mal dans votre interface graphique et que cela devient inutilisable, vous pouvez rapidement passer à un émulateur de terminal et corriger tous les problèmes que vous rencontrez dans l'interface graphique. Cela arrive en fait assez souvent lorsque vous apportez des modifications à votre gestionnaire de fenêtres ou à d'autres fonctionnalités de l'interface graphique. Je suppose qu'il serait également utile d'avoir quelques terminaux supplémentaires, mais avoir 6 dépassements de l'interface graphique principale semble un peu excessif.

Corrigez-moi également si je me trompe, mais n'est-il pas possible d'exécuter plusieurs commandes en tant qu'utilisateurs différents à partir d'un seul émulateur de terminal?


"si vous faites quelque chose de mal" - cela explique pourquoi il y a une console virtuelle, pas pourquoi il y en a plusieurs (c'est-à-dire répondre à une question différente). "n'est-il pas possible d'exécuter plusieurs commandes en tant qu'utilisateurs différents à partir d'un seul émulateur de terminal?" - oui, mais leurs sorties seraient mélangées, et l'exécution de programmes curses serait difficile.
Radovan Garabík

4

La plupart des autres questions semblent répondre à la raison pour laquelle la fonctionnalité a été introduite.

Pourtant, la vraie question est:

Pourquoi Unix / Linux fournit-il plusieurs émulateurs de terminaux?

"fait", pas "a fait".

Donc, en se concentrant sur l'heure actuelle, voici quelques raisons actuelles:

  • Ils peuvent être utiles. Parfois, au lieu de créer une nouvelle fenêtre qui couvre d'autres fenêtres sur le bureau, je peux simplement basculer vers un autre terminal. Ensuite, je peux revenir en arrière, donc le bureau est au premier plan. À l'occasion (généralement lorsque plusieurs fenêtres sont ouvertes), cela peut être plus pratique que de placer une fenêtre de terminal en arrière-plan, puis, plus tard, d'essayer de faire apparaître la même fenêtre au premier plan (au lieu de sélectionner accidentellement une autre du terminal qui se trouvent sur le bureau graphique).

    Par exemple, je me souviens que Alt-Ctrl-F2 est l'éditeur de texte qui regarde un fichier texte (par exemple, la documentation), et Alt-Ctrl-F3 est utilisé pour regarder rapidement un autre fichier (par exemple, un fichier de configuration), et Alt-Ctrl-F4 est utilisé pour une invite de commande, tandis que le bureau graphique peut être divisé entre la navigation Web, le courrier électronique, le lecteur de musique, etc.
  • Les fenêtres de terminal peuvent être utiles pour travailler avec l'ordinateur en cas de problème d'affichage graphique. Pour les personnes qui peuvent avoir un besoin actuel d'utiliser un ordinateur (peut-être personnalisé) qui n'a pas de carte vidéo graphique, cette fonctionnalité peut être essentielle. Il existe également la possibilité de besoins futurs (éventuellement avec un système d'exploitation successeur / descendant) qui peuvent s'ajouter à tous les besoins actuels.
    • Ces terminaux de texte utilisent généralement moins de ressources. Par exemple, ils ont tendance à utiliser moins de mémoire sur une carte graphique. Donc, si une carte graphique avait un dysfonctionnement physique qui a cassé la fonctionnalité des 3e et 4e mégaoctets de mémoire vidéo, cela pourrait même ne pas affecter quelqu'un qui n'utilise que les terminaux texte classiques. Des processus plus simples, qui utilisent moins de ressources, peuvent être utiles lorsque vous effectuez une récupération.
  • Le code existe déjà. Par conséquent, les soutenir est facile.
  • La quantité de ressources pour un terminal inutilisé (avant de se connecter) est très faible. Même cette petite quantité de mémoire peut être revendiquée en ajustant / etc / ttys
  • Le code pour prendre en charge plusieurs terminaux est assez similaire au code pour prendre en charge les E / S sur les connexions série. Les développeurs de systèmes d'exploitation avaient tendance à beaucoup apprécier cela. Avec les progrès des machines virtuelles, la valeur de l'utilisation des connexions série est moins critique qu'auparavant. Pourtant, certains développeurs de noyau (déjà familiers avec le processus) peuvent aimer utiliser un tel matériel. Les organisations utilisant du matériel ancien peuvent également voir l'avantage de ne pas avoir besoin de changer le matériel.

En résumé, il n'y a tout simplement pas beaucoup de raisons de ne pas soutenir cela. Il y a un avantage que certaines personnes apprécient, au moins quelques fois, et pas beaucoup de coûts.

En fait, supprimer le support pour cela peut être plus de travail que de simplement laisser le support là-bas. Bien que la suppression du support soit probablement simple, en cas de problème, l'identification et la résolution du problème peuvent s'avérer un peu difficiles. Ainsi, la réduction de la quantité d'effort requise (pour développer la prochaine version d'un système d'exploitation) est encore une autre raison de laisser les choses telles quelles. Cela signifie que cette fonctionnalité est susceptible de rester disponible.


Avoir une perspective historique est souvent utile. Vous dites que vous voulez vous concentrer sur le présent mais que vous concluez finalement "L'une des raisons pour lesquelles Unix / Linux fournit actuellement plusieurs émulateurs de terminaux est qu'il les a fournis en premier lieu ..."
jlliagre

Oui. Ça faisait. Si ce n'était pas le cas, ce ne serait peut-être pas le cas aujourd'hui. Mais depuis Unix, cela reste une raison convaincante pour laquelle il le fait. Je ne voulais en aucun cas minimiser l'utilité d'être familier avec le passé. Ma tendance naturelle serait de me concentrer sur la raison pour laquelle il a été ajouté (et mon premier ou deux premiers projets l'avaient plus en détail), mais ma principale raison d'essayer de me concentrer sur le présent est que c'est la question posée. De plus, d'autres réponses ont mentionné le passé, et j'ai essayé de faire une réponse utile en ajoutant à ce qui a été dit, au lieu de simplement reproduire ce qui est déjà dit ailleurs sur la page.
TOOGAM

3

Tout d'abord, vous avez demandé une fonctionnalité d'un noyau nommé Linux. Pas d'Unix en général, ni de Gnu.

Quant à savoir pourquoi, vous devriez demander aux auteurs. Cependant, je suppose que cela permet à un administrateur d'un appareil non connecté au réseau (ici, j'inclus un RS232 comme type de réseau), de se connecter et de faire un travail d'administrateur, sans déconnecter un autre utilisateur.


Oui, les noyaux VT sont configurés par code utilisateur-terre, et oui, il existe d'autres Unix qui les ont. Cependant, ce n'est pas une chose Unix générale.
ctrl-alt-delor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.