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

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

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

Responder1

Você precisa screen -R -dse conectar automaticamente a uma sessão existente, se existir, e criar uma sessão caso contrário.

Assegure-se de que vocêfaça isso apenas em shells interativos. Fontes Bash ~/.bashrcmesmo para shells não interativos quando seu processo pai é rshd ou sshd (isso é mencionado na documentação, mas é fácil de ignorar). 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á se desconectar da tela e sair do shell pai para fazer logout. Isso pode ser resolvido usando exec screenem vez de screen.

Se você iniciar um shell diferente de login, você será colocado na tela, o que não é o que você deseja na maioria das vezes. Eu restringiria isso pelo menos 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 seu, .bashrcpois um erro que causa a saída do shell dificultaria o login.


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

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

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

Responder2

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

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

informação relacionada