inicia a tela do gnu automaticamente

3

Eu quero iniciar a tela do gnu automaticamente quando eu fizer login na minha máquina remota via ssh, então eu adiciono

exec screen

no final do arquivo .bash_profile, então descubro que quando termino a triagem, minha conexão com o host ssh também é fechada imediatamente. Como posso evitar isso?

Caso eu queira retomar uma tela (por exemplo, chamada de "tela antiga"), porque eu começo a fazer triagem toda vez que faço login, enfrento uma situação em que estou conectado à nova tela e quero volte a ligar ao 'ecrã antigo'. Se eu apenas

screen -r old-screen

Eu me encontro em uma tela recursiva, e não consigo navegar dentro da 'tela antiga' porque todas as teclas de atalho são recebidas pela 'nova tela'. Se eu tentar sair da tela atual, minha conexão com a máquina remota também será perdida imediatamente.

Alguma solução para isso?

    
por zhanwu 09.03.2011 / 13:35

4 respostas

6

Em vez de usar screen -r , que tenta retomar uma sessão de tela, você pode usar screen -R , que tenta retomar uma sessão de tela e cria uma nova, se não existir.

   -r [pid.tty.host]
   -r sessionowner/[pid.tty.host]
        resumes  a detached screen session.  No other options (except com-
        binations with -d/-D) may be specified, though an optional  prefix
        of  [pid.]tty.host  may  be needed to distinguish between multiple
        detached screen sessions.  The second form is used to  connect  to
        another  user's  screen session which runs in multiuser mode. This
        indicates that screen should look for sessions in  another  user's
        directory. This requires setuid-root.

   -R   attempts to resume the first detached screen session it finds.  If
        successful, all other command-line options  are  ignored.   If  no
        detached  session exists, starts a new session using the specified
        options, just as if -R had not been specified. The option  is  set
        by default if screen is run as a login-shell (actually screen uses
        "-xRR" in that case).  For combinations with the -d/-D option  see
        there.

Pessoalmente, costumo usar screen -DRA .

   -D -R   Attach here and now. In detail this means: If a session is run-
           ning, then reattach. If necessary detach  and  logout  remotely
           first.   If  it  was not running create it and notify the user.
           This is the author's favorite.
   -A      Adapt  the  sizes of all windows to the size of the current termi-
           nal.  By default, screen tries to restore  its  old  window  sizes
           when  attaching  to  resizable  terminals  (those with "WS" in its
           description, e.g. suncmd or some xterm).
    
por 10.03.2011 / 09:36
2

O seguinte parece funcionar para mim no meu: ~ / .bash_profile

## if $STY is not set...
if [ -z "$STY" ]; then
    screen  -d -RR
fi

Eu tirei a resposta daqui: link

mas, em vez de criar uma nova tela, cada vez que reamar uma sessão ou criar uma, se necessário. Também parece que nem a conexão ssh sai quando a tela é recolocada ou fechada.

    
por 01.11.2012 / 21:42
1

Eu sempre ponderei a mesma coisa.

O mais próximo que eu cheguei é rodar screen como parte do comando ssh para conectar ao servidor remoto:

$ ssh -t [email protected] screen -r

ou no PuTTY insira screen -r na caixa Remote command das preferências do SSH.

Eu costumo alias um número de comandos ssh para hosts diferentes e sessões de tela diferentes.

    
por 09.03.2011 / 13:52
0

O seu sistema operacional suporta opções de linha de comando com a definição de comando shell no parâmetro "login" da sua conta? Se sim, tente alterá-lo para:

  • / caminho / para / bash -c "tela -R"
por 10.03.2011 / 05:10

Tags