Hay 7 terminales que se pueden usar en nuestro sistema. tty7
está basado en GUI.
¿Cómo puedo saber qué tty estoy usando actualmente?
como, tty1, tty2 ... tty6?
Hay 7 terminales que se pueden usar en nuestro sistema. tty7
está basado en GUI.
¿Cómo puedo saber qué tty estoy usando actualmente?
como, tty1, tty2 ... tty6?
Respuestas:
Hay varias formas de descubrir esto. Yo iría con el comando who am i
(no who
):
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
Cuando estoy en una terminal gráfica, devolvería algo como:
ravexina pts/0 2017-04-10 1:19 (:0)
En una sesión ssh, usar un resultado de terminal gráfico es el mismo, pero en lugar de (: 0), obtendré la IP de mi máquina (192.168.xx). otros comandos como w
, who
, pgrep
, ps
, etc, son útiles también.
Por ejemplo, para averiguar en qué se tty
está ejecutando mi interfaz gráfica:
ps $(pgrep Xorg)
Lo que en mi caso, debido a que no uso ningún administrador de pantalla como gdm o slim, producirá:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
no devuelve nada, y whoami
regresa zanna
, (mientras who
devuelve todas las sesiones (recuerdo una pregunta relacionada (que resultó sin respuesta) en la que notamos que diferentes emuladores producían diferentes resultados who
)).
who am i
siempre funcionará bien en un vt, y pgrep
es muy inteligente (es posible que desee utilizar la $()
sintaxis para subtítulos de comando puede ser un poco confuso en la reducción), por lo que su respuesta es muy agradable y quien haya votado negativamente no debería haberlo hecho. ...
Usa el tty
comando.
Si estoy en lo cierto, esta es la referencia:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
significa que está utilizando la terminal desde la GUI o mediante SSH
Retrocedamos un paso y comencemos con la confusión: ¿qué es un tty? Originalmente, tty era una abreviatura de teletipo que se convirtió en teletipo de vidrio que se convirtió en cualquier terminal o la conexión a uno, específicamente un puerto serie (estos todavía están presentes, más comúnmente / dev / ttyS0, / dev / ttyUSB0 y a veces / dev / ttyacm0). Entonces tienes pseudo ttys y ttys virtuales. las viejas manos de Unix están familiarizadas con los pseudo ttys que se utilizan para terminales remotos (ssh y telnet), terminales virtuales (xterm y similares) y multiplexores de terminales (pantalla y tmux). Los pseudo ttys han tenido varios esquemas de nombres a lo largo del tiempo, pero el actual usa nombres como / dev / pts / 0. Los ttys virtuales, por otro lado, están asociados con las consolas virtuales, específicamente cuando usa las teclas de función alt de control, está cambiando las consolas virtuales, cada una de las cuales está emparejada con un tty virtual.
Entonces, si necesita encontrar su pseudo tty (o tty virtual cuando usa el modo de texto), hay todo tipo de soluciones, who am i
o ps ax|grep $$
esto es relativamente fácil de hacer, ya que hay varias formas de averiguarlo a medida que se abre el pseudo tty en io estándar en la mayoría de los casos y existen otros métodos que funcionan incluso cuando io se redirige. Esto también tiene la ventaja de hacer lo correcto cuando se usan puertos serie y ttys virtuales siempre que no se utilicen emuladores de terminal gráficos o multiplexores de terminal.
Pero, ¿qué sucede si desea identificar la consola virtual? sudo fgconsole
Puede ser útil para casos interactivos. O lo que hago es caminar por las consolas, ya que el cambio suele ser lo suficientemente rápido. No conozco un método programático que funcione de manera confiable en casos no interactivos o sin antecedentes.
Veamos un ejemplo que garantiza que nunca podrá responder de manera confiable a la consola virtual. La computadora en la que estoy sentado (alpha) tiene un servidor X que se ejecuta en tty2 (: 1), tengo tres ventanas abiertas, dos xterms y un vncviewer (conectado a bravo: 2). Un xterm está ejecutando la pantalla, el otro está ejecutando ssh charley. La pantalla tiene dos ventanas abiertas, ssh delta y who (quién identifica correctamente el pseudo tty en la columna dos y proporciona la pista(:1:S0)
en la columna cinco que nos dice que el pseudo tty está conectado a la primera sesión de pantalla que está conectada al segundo servidor X, pero no proporciona ninguna información de consola virtual). Ejecutar quién en cualquiera de las sesiones ssh da la pista(alpha)
que identifica la máquina de la que proviene la sesión ssh, que es relativamente buena para sesiones remotas. Aunque hay poca información sobre lo que está conectado a la pseudo tty (y absolutamente ninguna consola virtual o incluso información remota de tty está disponible), al menos se identifica el host remoto. la información sobre la pantalla puede ser incorrecta ya que las sesiones de pantalla son desmontables, y vnc no proporciona información útil, ya que la única diferencia entre una sesión de vnc y una sesión local es el número de pantalla. En muchos casos, puede suponer que: 0 está en tty7 pero no siempre, y nunca en el mío, ya que bravo no tiene una tarjeta gráfica y: 0 es una sesión de vnc (que confunde a quién porque cree que es la consola local) y ninguna de las máquinas usa tty7 como sesión gráfica, porque yo (no solo para ser contrario) vuelco los registros a tty7 (y tty5, tty6 y tty8 también) religando sesiones gráficas en otros lugares. Pero la pantalla de espera también puede actuar como un programa de terminal que le permite establecer una sesión a través de un cable serie. ¿Qué informa tal sesión cuando se ejecuta? ¿Por qué nada más que el puerto serie ya sea a través de vnc, xterm, ssh, pantalla y un adaptador serie usb todo a la vez o está conectado a mi televideo?
Cuando haya iniciado sesión en un tty, muestra qué tty está utilizando en la primera línea automáticamente.
Si al presionar la combinación de teclado Ctrl+ Alt+ F3solo se muestra una pantalla en negro, como escribió en un comentario, hay una forma alternativa de obtener acceso a un shell raíz al iniciar la computadora sin presionar Ctrl+ Alt+ F3para que aparezca un tty.
Inmediatamente después de la pantalla de inicio BIOS / UEFI durante el arranque, con BIOS, presione y mantenga presionada la Shifttecla rápidamente , lo que abrirá el menú GNU GRUB. (Si ve el logotipo de Ubuntu, se ha perdido el punto en el que puede ingresar al menú de GRUB). Con UEFI presione (quizás varias veces) la Esctecla para acceder al menú de GRUB. A veces, la pantalla de inicio del fabricante es parte del gestor de arranque de Windows, por lo que cuando enciende la máquina va directamente a la pantalla de GRUB, y luego no Shiftes necesario presionar .
Desde la primera pantalla púrpura de GNU GRUB, seleccione Opciones avanzadas para Ubuntu con las teclas ↑ y ↓ y presione Enter. Luego aparecerá otro menú de menú de GNU GRUB púrpura que tiene una lista de opciones de kernel.
Presione la tecla de flecha hacia abajo hasta que seleccione la segunda entrada desde arriba (la que tiene el modo de recuperación en la descripción) y luego presione Enter.
Ahora debería ver este menú de recuperación:
Con las teclas de flecha, desplácese hacia abajo hasta la raíz y luego presione Enter.
Ahora debería ver un mensaje raíz, algo como esto:
root@ubuntu:~#
En esta etapa, debe tener un sistema de archivos de solo lectura. Tienes que volver a montarlo con permisos de escritura:
mount -o rw,remount /
Ahora puede ejecutar comandos de la misma manera que en una terminal.
Supongo que estás buscando algo más que las otras respuestas proporcionadas. Ejecute sudo fgconsole
para descubrir qué tty real está ahora activo.
Use el comando tty, funciona en Linux y macOS y proporciona una salida bastante simple para leer, solo el nombre del tty en el que se encuentra.
Ejemplo:
$ tty
/dev/pts/0
Es fácil escribir esto o incluirlo en la solicitud, por ejemplo:
$ PS1='`tty`: '
/dev/pts/0: _
De esta manera siempre sabrás en qué terminal estás.