É uma boa ideia colocar “screen -r” no meu .bashrc?

16

Gostaria de usar a tela para manter as sessões do ssh ativas no meu servidor. Seria bom se eu pudesse retomar automaticamente qualquer sessão em execução para o meu usuário quando eu logar. A maneira simples de fazer isso seria adicionar "screen -r" ao meu .bashrc, e isso parece funcionar bem. Só estou querendo saber se isso vai quebrar alguma coisa em condições que ainda não testei. Alguém com experiência aqui que pode me dizer se é isso que devo fazer?

    
por marcusw 21.12.2010 / 20:49

2 respostas

19

Você precisa de screen -R -d para anexar automaticamente a uma sessão existente, se existir uma, e criar uma sessão de outra forma.

Certifique-se de fazer somente isso em shells interativos . Fontes de bash ~/.bashrc mesmo para shells não interativos quando seu processo pai é rshd ou sshd (isso é mencionado na documentação, mas é fácil errar). Você pode dizer que um shell é interativo porque $- contém i .

case $- in
  *i*) screen -Rd;;
esac

Isso não permitirá que você execute sessões de tela diferentes em terminais diferentes.

Você precisará desanexar da tela e sair do shell pai para fazer logout. Isso pode ser resolvido usando exec screen em vez de screen .

Se você iniciar um shell diferente de um shell de login, será colocado na tela, o que não é o que você deseja na maior parte do tempo. Eu, pelo menos, restringiria isso quando você estiver executando diretamente em uma sessão ssh interativa, com algo como o seguinte em seu ~/.bash_profile :

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

Tenha cuidado ao fazer coisas complexas com o .bashrc , pois um erro que faz com que o shell seja encerrado dificultaria o login.

O que eu recomendo é não modificar seus arquivos de inicialização do shell no servidor, mas sim executar a tela explicitamente a partir do cliente, como em

ssh -t host.example.com screen -R -d

(Você provavelmente criaria um atalho de shell ou atalho de ambiente de desktop no cliente.) Dessa forma, você pode escolher facilmente não executar a tela, especificar um nome de sessão alternativo e assim por diante.

    
por 22.12.2010 / 00:15
2

Os scripts de inicialização do seu servidor X geralmente iniciam um novo shell, por exemplo, se você está logando usando o gdm usando a "Sessão Definida pelo Usuário".

Acho que qualquer coisa que não saia pode fazer com que sua inicialização do X seja interrompida. Isso incluiria screen -r .

    
por 21.12.2010 / 21:31