Después de aproximadamente una hora de buscar en Google esto, no puedo creer que nadie haya hecho esta pregunta antes ...
Así que tengo un script ejecutándose en TTY1. ¿Cómo hago para que ese script inicie algún programa arbitrario en TTY2?
- Encontré
tty, que te dice en qué TTY estás actualmente. - Encontré
writevt, que escribe una sola línea de texto en un TTY diferente. - Encontré
chvt, que cambia qué TTY se muestra actualmente.
No quiero mostrar TTY2. Solo quiero que el script principal continúe ejecutándose normalmente, pero si cambio manualmente a TTY2 puedo interactuar con el segundo programa.

[command] > /dev/tty2(ya debe iniciar sesión en tty2)?Respuestas:
Mientras nada más esté usando el otro TTY (
/dev/tty2en este ejemplo), esto debería funcionar. Esto incluye ungettyproceso que puede estar esperando que alguien inicie sesión; tener más de un proceso de lectura de su entrada desde un TTY será conducir a resultados inesperados.setsidse encarga de iniciar el comando en una nueva sesión.Tenga en cuenta que
commandtendrá que ocuparse de configurar lossttyajustes correctamente, p. Ej., Active el "modo cocinado" y, de esteonlcrmodo, al generar una nueva línea se agregará un retorno de carro, etc.fuente
/dev/stdin,/dev/stdouty/dev/stderr.psmuestra fácilmente quecommandno tiene un terminal de control en absoluto en su caso.sleep 1000y todavía no funciona aquí. Sin embargo, usé un pseudo tty (no debería hacer una diferencia, supongo).setsid sh -c 'exec sleep 1000 <>/dev/pts/4 >&0 2>&1'en una ventana de emulador de terminal./dev/pts/4es otra ventana del emulador de terminal (mismo usuario, conbashejecución).En el segundo tty normalmente habrá un programa en ejecución, ya sea algún programa de inicio de sesión o algún shell como bash. Si desea interactuar, deberá reemplazar el programa de inicio de sesión con el suyo o indicarle a un shell que ejecute el programa como si el programa se iniciara desde la línea de comandos.
Una solución más simple, IMO, sería iniciar una
tmuxsesión después de iniciar sesión en la segunda pantalla y luego usar:para iniciar el programa en la
tmuxsesión que se mostrará después de cambiar al segundo terminal.fuente
Acabo de hacer un descubrimiento:
¿Cómo puedo iniciar aplicaciones desde 2 ttys en el lanzamiento?
Uno de los comentarios menciona algo llamado
openvt. ¡Este comando parece hacer exactamente lo que busco!http://linux.about.com/library/cmd/blcmdl1_openvt.htm
A menos que alguien sepa algo diferente, creo que esta es probablemente la forma "correcta" de hacerlo.
(Acabo de probarlo y parece funcionar bien, aunque se
gettyestá ejecutando, elige el siguiente terminal no utilizado. Supongo que los VT no se "abren" hasta que cambie a uno para intentar iniciar sesión ...)fuente
Comienzo una nueva sesión gráfica en el vt5 con el siguiente comando
por ejemplo :
Si desea iniciar una aplicación gráfica en una sesión gráfica ya activa, puede hacerlo con:
fuente