echo autodetach off >> ~/.screenrc
Leia a manpage de tela para autodetach. Isso fará com que ele simplesmente mate tudo se a conexão estiver desativada.
Você ainda desejará as outras soluções mencionadas ...
Eu estou querendo saber se isso é possível. Eu gostaria que os usuários pudessem iniciar a tela em alguns de nossos hosts com o propósito de multiplexar suas sessões de login de terminal. No entanto, não quero que eles possam separar a tela e deixá-la em execução em segundo plano.
A razão para isso é que a única maneira de efetuar login nessas máquinas é através de um sistema de submissão de tarefas em cluster, portanto, se uma tela for desconectada e o usuário fizer logoff, a única maneira de retornar seria se de volta ao mesmo nó nas próximas submissões de trabalhos.
Você pode desativar o recurso de desanexar colocando
bind d
em .screenrc
, que remove a tecla de atalho padrão ^ A D para desanexar. Ou talvez
bind d echo Don't detach screens, it won't work because of the cluster.
Fazer uma desativação de desanexação, incluindo os formulários de linha de comando, levaria a sua própria versão de screen
e a codificação da capacidade. O que, sabe, pode ser feito, sendo um projeto de código aberto e tudo mais.
Aqui está um hack que você pode colocar em um script bash e rodar a cada minuto com o cron para matar as sessões desconectadas. Não é a solução mais limpa :-P
screen -S $(screen -ls | grep Detached | awk '{ print $1}') -X kill
Eles sempre serão capazes de se desconectar sem fechar o (s) terminal (is), a menos que você hackear automaticamente a tela.
Como a tela de separação deixa o usuário logado, você pode adicionar ao script de login uma verificação para ver em qual servidor o usuário já está logado. Isso seria mais trabalho do que simplesmente desanexar, mas seria muito mais útil para seus usuários.
Uma ideia para o script: percorra os servidores, grep
o outpot de who
e, em seguida, conecte o usuário ao servidor que reporta os dados em primeiro lugar; caso contrário, registre-os como seriam agora (para manipular quando um usuário efetua logout).
Tags gnu-screen