¿Cómo se puede configurar la pantalla bash en segundo plano y llevarla al frente más tarde?

¿Cómo se puede configurar la pantalla bash en segundo plano y llevarla al frente más tarde?

Esta es una explicación más profunda para la pregunta.

Mi meta es:

  1. Inicie un shell bash configurado con un conjunto de variables de entorno, pero ejecutándose en segundo plano.

  2. Lanzar alrededor de cincopantallacomandos en el shell bash, cada uno ejecuta sus propios comandos, pero usando las variables de entorno configuradas en el shell bash. Todos los screencomandos deben estar organizados en la ventana de bash, preferiblemente en mosaico.

  3. Llame al shell bash más tarde, donde screense mostrarán todos los comandos.

  4. Cierre el shell bash y el asociado screencuando haya terminado.

Respuesta1

Bueno, después de un tiempo con tu pregunta, hay algunas observaciones:

línea 2:Todos los comandos deben estar organizados en la ventana de bash, preferiblemente en mosaico.no es posible, como cuando se desapega,no hay ventanas.

Entonces, cuando vuelvas a conectar, siempre verás solo unopseudo-tty.

Pero para hacer aproximadamente lo solicitado, intente lo siguiente:

Primero cree un archivo RC escribiendo: cat >screenRcTestcon lo siguiente:

setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i

Luego prepare un runenvoltorio como:

screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest

esto ejecutará una nueva sesión de pantalla en segundo plano si aún no existe.

Para construirembaldosadopresentación, prepare otro script de shell comocat >screenSplitTest

#!/bin/bash

while read line ;do
    screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof

y no lo olvides chmod +x screenSplitTest.

Finalmente ejecuta elcomando de visualizacióncomo:

xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest 

Esto abrirá una nueva ventana con solo un bashlisto.

En estointernobash, presione simplemente:

./screenSplitTest

Esto dividirá su ventana y lo dejará listo nuevamente en su sesión de bash.

captura de pantalla del resultado

Escribe ahora:

echo $MyVariable
Test

Entonces verá cómo la variable de entorno se pasa al bash secundario.

Editar adición:

Después de hacer todo, podrías presionar lo siguiente en tuinternointento:

trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH

Por lo tanto, puede desconectarse escribiendo: Ctrl-A dla próxima vez que ejecute xtermcon los mismos argumentos y geometría, el script screenSplitTest se iniciará automáticamente.

Editar 2

Y ahora, incluso podrías instalar esto trapen tu .bashrc, usándolo MyVariablepara asegurar que bash sea hijo depantallaRcTestpantalla (después de pasar screenSplitTesta un archivo oculto, $HOME/.screenSplitTestpor ejemplo):

[ "$TERM.$MyVariable" == "screen.Test" ] && \
    trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH

Respuesta2

Que yo sepa, no se pueden colocar en mosaico instancias de pantalla, pero sí instancias de tmux. Lo que podría hacer es crear un archivo rc para la configuración del entorno compartido y luego cargarlo en cada uno de sus 5 shells bash usando bash --rcfile <your file here>.

Los shells de bash se iniciarían iniciando tmux y, cuando estén dentro, ejecutarían algún comando para crear una nueva división (por ejemplo, Ctrl+b % para una división vertical, usando la configuración estándar) para cada instancia de bash.

información relacionada