Después de aproximadamente una hora de buscar esto en Google, no puedo creer nadie ha 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 le indica en qué TTY se encuentra 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.
Respuesta aceptada:
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
Mientras nada más esté usando el otro TTY (/dev/tty2
en este ejemplo), esto debería funcionar. Esto incluye un getty
proceso que puede estar esperando que alguien inicie sesión; tener más de un proceso leyendo su entrada de un TTY will conducir a resultados inesperados.
setsid
se encarga de iniciar el comando en una nueva sesión.
Tenga en cuenta que command
tendrá que encargarse de configurar el stty
ajustes correctamente, p. activa el “modo cocinado” y onlcr
para que la salida de una nueva línea agregue un retorno de carro, etc.