É uma boa ideia colocar “screen -r” no meu .bashrc?
17
Eu gostaria de usar a tela para manter as sessões ssh ativas no meu servidor. Seria bom se eu pudesse retomar automaticamente qualquer sessão em execução para o meu usuário ao fazer o 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 vai 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?
Você precisa screen -R -dse conectar automaticamente a uma sessão existente, se houver, e criar uma sessão caso contrário.
Certifique-se de fazer isso apenas em conchas interativas . Fontes Bash ~/.bashrcmesmo para shells não interativos quando o processo pai é rshd ou sshd (isso é mencionado na documentação, mas é fácil perder). Você pode dizer que um shell é interativo porque $-contém i.
case $-in*i*) screen -Rd;;esac
Isso não permitirá que você execute diferentes sessões de tela em diferentes terminais.
Você precisará se desconectar da tela e sair do shell pai para sair. Isso pode ser resolvido usando em exec screenvez de screen.
Se você iniciar um shell que não seja o de login, será exibido na tela, o que não é o que você deseja na maioria das vezes. Eu pelo menos restringiria isso quando você estiver executando diretamente em uma sessão ssh interativa, com algo como o seguinte no seu ~/.bash_profile:
Tenha cuidado ao fazer coisas complexas com você, .bashrcpois um erro que causa a saída do shell dificulta o logon.
O que eu recomendo é não modificar os arquivos de inicialização do shell no servidor, mas 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 do ambiente de área de trabalho no cliente.) Dessa forma, você pode optar facilmente por não executar a tela, especificar um nome de sessão alternativo e assim por diante.
Não é melhor para o ssh rodar screen -D -Rou até mesmo screen -D -RR?
Niutech 29/01
2
Seus scripts de inicialização do servidor X geralmente iniciam um novo shell, por exemplo, se você estiver efetuando login usando o gdm usando a "Sessão Definida pelo Usuário".
Eu acho que qualquer coisa que não saia pode causar a sua inicialização do X travar. Isso incluiria screen -r.
Os scripts de inicialização do servidor X não serão executados .bashrc. Mas há outras circunstâncias em que isso seria um problema, por exemplo, ao executar ssh host.example.com somecommand(estranhamente, o bash é executado .bashrc).
Gilles
Está em algumas distros se você escolher "Sessão definida pelo usuário". No Ubuntu, ele origina .profile explicitamente, outros chamam .xsession de dentro de um shell de logon, o que normalmente significa .bash_profile, e a maioria dos usuários origina .bashrc de dentro de seu .bash_profile.
screen -D -R
ou até mesmoscreen -D -RR
?Seus scripts de inicialização do servidor X geralmente iniciam um novo shell, por exemplo, se você estiver efetuando login usando o gdm usando a "Sessão Definida pelo Usuário".
Eu acho que qualquer coisa que não saia pode causar a sua inicialização do X travar. Isso incluiria
screen -r
.fonte
.bashrc
. Mas há outras circunstâncias em que isso seria um problema, por exemplo, ao executarssh host.example.com somecommand
(estranhamente, o bash é executado.bashrc
).