Il y a 7 terminaux qui peuvent être utilisés dans notre système. tty7
est basé sur une interface graphique.
Comment puis-je savoir quel tty j'utilise actuellement?
comme, tty1, tty2 .... tty6?
Il y a plusieurs façons de le savoir. J'irais avec la commande who am i
(not who
name__):
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
Lorsque je suis dans un terminal graphique, cela renvoie quelque chose comme:
ravexina pts/0 2017-04-10 1:19 (:0)
Sous ssh, la session utilisant un terminal graphique donne le même résultat, mais au lieu de (: 0), je vais obtenir l’IP de ma machine (192.168.x.x). D'autres commandes telles que w
name__, who
name__, pgrep
name__, ps
name__, etc. sont également utiles.
Par exemple, pour savoir à quel tty
mon interface graphique est en cours d'exécution:
ps $(pgrep Xorg)
Ce qui dans mon cas, parce que je n’utilise aucun gestionnaire d’affichage comme gdm ou slim, cela produira:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
Utilisez la commande tty
.
Si j'ai raison c'est la référence:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
Une fois connecté à un tty, il indique automatiquement le tty que vous utilisez sur la première ligne.
Si vous appuyez sur la combinaison de clavier Ctrl+Alt+F3 ne montre qu'un écran noir, comme vous l'avez écrit dans un commentaire, il existe un autre moyen d'obtenir un accès à un shell racine lors du démarrage de l'ordinateur sans appuyer sur Ctrl+Alt+F3 faire monter un tty.
Immédiatement après l’écran de démarrage du BIOS/UEFI au démarrage, avec le BIOS, maintenez enfoncé le bouton Shift qui ouvrira le menu GNU GRUB. (Si vous voyez le logo Ubuntu, vous avez oublié le point où vous pouvez entrer dans le menu GRUB.) Avec UEFI, appuyez sur (peut-être plusieurs fois), sur la touche Esc pour accéder au menu GRUB. Parfois, l'écran de démarrage du fabricant fait partie du chargeur de démarrage Windows. Par conséquent, lorsque vous mettez la machine sous tension, il passe directement à l'écran GRUB, puis appuyez sur Shift est inutile.
Dans le premier écran violet GNU GRUB, sélectionnez les options avancées pour Ubuntu à l'aide des touches ↑ et ↓, puis appuyez sur Enter. Vous serez alors invité par un autre menu violet GNU GRUB qui contient une liste d'options du noyau.
Appuyez sur la flèche vers le bas jusqu'à ce que vous sélectionniez la deuxième entrée à partir du haut (celle avec le mode de récupération dans la description), puis appuyez sur Enter.
Maintenant, vous devriez voir ce menu:
À l’aide des touches fléchées, faites défiler jusqu’à racine , puis appuyez sur Enter deux fois.
Vous devriez maintenant voir une invite racine, quelque chose comme ceci:
root@ubuntu:~#
A ce stade, vous devriez avoir un système de fichiers en lecture seule. Vous devez le remonter avec des autorisations en écriture:
mount -o rw,remount /
Vous pouvez maintenant exécuter les mêmes commandes que dans un terminal.
Faisons un pas en arrière et commençons par la confusion: qu'est-ce qu'un tty? À l’origine, tty était une abréviation de télétype qui est devenu un télétype de verre qui est devenu tout terminal ou la connexion à un terminal, en particulier un port série (ceux-ci existent toujours, le plus souvent/dev/ttyS0,/dev/ttyUSB0 et parfois/dev/ttyacm0). Ensuite, vous avez pseudo ttys et ttys virtuels. les anciennes mains unix connaissent bien les pseudo-ttys; elles sont utilisées pour les terminaux distants (ssh et telnet), les terminaux virtuels (xterm et autres) et les multiplexeurs de terminaux (screen et tmux). Les pseudo ttys ont eu divers schémas de nommage au fil du temps, mais celui-ci utilise des noms tels que/dev/pts/0. Les terminaux virtuels, d’autre part, sont associés aux consoles virtuelles. En particulier, lorsque vous utilisez les touches de commande de contrôle alt, vous commutez les consoles virtuelles, chacune d’elles étant associée à un terminal virtuel. Le tty virtuel le plus célèbre est/dev/tty7, qui est souvent utilisé pour les sessions graphiques (car les six premiers sont généralement des connexions de texte). Tty7 n’a rien de spécial, car vous pouvez exécuter des serveurs X sur n’importe quelle console virtuelle (même si vous en exécutez un sur/dev/tty1 est vraiment difficile car le noyau l’ouvre pour la journalisation de démarrage, mais je l’ai fait) et vous pouvez effectuer des ouvertures de session texte sur n’importe quel tty virtuel, y compris tty7 (bien que la configuration init soit nécessaire et que l’allocation dynamique de systemd rend les choses intéressantes et passe à tty13 et supérieur peut avoir besoin d'une modification de la carte du clavier).
Donc, si vous avez besoin de trouver votre pseudo tty (ou un tty virtuel en mode texte), il existe toutes sortes de solutions comme who am i
ou ps ax|grep $$
, ce qui est relativement facile à faire car il existe plusieurs façons de le savoir car le pseudo tty est ouvert le io standard dans la plupart des cas et il existe d'autres méthodes qui fonctionnent même lorsque io est redirigé. Cela présente également l’avantage de bien faire lorsqu’on utilise des ports série et des terminaux virtuels tant que vous n’utilisez pas d’émulateurs de terminaux graphiques ou de multiplexeurs de terminaux.
Mais que se passe-t-il si vous souhaitez identifier la console virtuelle? Sudo fgconsole
peut être utile pour les cas interactifs. Ou ce que je fais est simplement de marcher sur les consoles car le changement est généralement assez rapide. Je ne suis pas au courant d'une méthode de programmation qui fonctionne de manière fiable dans les cas non interactifs ou non-plan.
Examinons un exemple qui garantit de ne jamais pouvoir répondre de manière fiable à la console virtuelle. L'ordinateur sur lequel je suis assis (alpha) a un serveur X tournant sur tty2 (: 1), j'ai trois fenêtres ouvertes sur deux xterms et un vncviewer (connecté à bravo: 2). Un xterm est en cours d'exécution écran, l'autre est en cours d'exécution ssh charley. Screen a deux fenêtres ouvertes, ssh delta et who (qui identifie correctement le pseudo tty dans la deuxième colonne et fournit l’indicateur (:1:S0)
dans la cinquième colonne nous indiquant que le pseudo tty est connecté à la première session écran connectée au deuxième serveur X , mais ne donne aucune information sur la console virtuelle). Exécuter who sur l'une des sessions ssh donne l'indice (alpha)
qui identifie la machine d'où provient la session ssh, ce qui est relativement bon pour les sessions à distance. Bien qu'il y ait peu d'informations sur ce qui est connecté au pseudo-terminal (et qu'aucune information relative à la console virtuelle ou même au terminal distant n'est disponible), au moins, l'hôte distant est identifié. les informations sur screen peuvent être fausses car les sessions screen sont détachables, et vnc ne fournit aucune information utile car la seule différence entre une session vnc et une session locale est le numéro d'affichage. Dans de nombreux cas, vous pouvez supposer que: 0 est sur tty7 mais pas toujours, et jamais sur le mien car bravo n’a pas de carte graphique et: 0 est une session vnc (ce qui confond qui parce qu’il pense que c’est la console locale) et aucune des machines n'utilise tty7 en tant que session graphique, parce que je (non seulement pour être contraire) dumpe les journaux sur tty7 (et tty5, tty6 et tty8 également) en publiant des sessions graphiques ailleurs. Mais l'écran d'attente peut également servir de programme de terminal vous permettant d'établir une session via un câble série. Que signale une telle session quand est exécuté? Pourquoi rien si ce n’est le port série, que ce soit via vnc, xterm, ssh, écran et un adaptateur série USB en même temps ou est connecté à ma télévidéo.
Je suppose que vous cherchez autre chose que les autres réponses fournies. Exécutez Sudo fgconsole
pour savoir quel tty réel est maintenant actif.
Utilisez la commande tty, elle fonctionne sous Linux et macOS et donne une sortie assez simple à lire, seul le nom du tty dans lequel vous vous trouvez.
Exemple:
$ tty
/dev/pts/0
Il est facile de scripter ceci ou de l'inclure dans l'invite, par exemple:
$ PS1='`tty`: '
/dev/pts/0: _
De cette façon, vous saurez toujours sur quel terminal vous vous trouvez.
À l'exception de l'interface graphique, auquel cas vous obtenez un point, cela affiche le résultat souhaité:
ls -l `tty` | awk '{print $10}'