SSH não finalizado após a saída quando existe o programa X Forward

9

Depois de executar os programas X no SSH, o SSH não termina após a saída do shell (tem que usar, por exemplo, CtrlCpara matá-lo).

Meu palpite é que, embora o programa X já saia, ainda resta alguma "conexão" (não liberada). As exceções que encontrei agora são gtk-demoe acroread.

Alguém sabe a razão? Isso é um problema com a configuração do ssh {, d}?

yuyichao
fonte
11
Você pode testar isso por si mesmo. Execute ssh com -v e ele reportará as conexões X11 abertas e fechadas.
Kyle Jones
@KyleJones THX, parece que esse é o problema (duas "conexões" liberadas depois de C-cpressionadas).
yuyichao 6/02/12
Eu tenho o mesmo problema no SLES11 em qualquer janela X11. Como você chegou ao dbus?
Nils
Você pode simplesmente verificar o processo em execução como você (se não houver outras sessões ativas). Eu uso systemd e permitiu-nos sshd (configuração pam), de modo que todo o processo na sessão ssh está no mesmo cgroup, o que torna muito fácil de verificar ~~.
yuyichao

Respostas:

5

Iniciar o programa X provavelmente inicia um processo em segundo plano que não termina quando você fecha o programa (ou o programa em si não termina corretamente). Veja aqui uma explicação do que acontece.

Para corrigir isso, você pode tentar descobrir quais processos ainda estão em execução e impedir que eles sejam iniciados quando você efetuar login via SSH ou simplesmente matá-los antes de sair. Certamente você pode simplesmente matar a conexão SSH depois de fazer o logout.

Lars Kotthoff
fonte
K, o problema é que o processo dbus (gconf) ainda está em execução. (obrigado a systemd-cgls~~) (tentei killall -KILLo programa em si, pensando que poderia ter algum processo em segundo plano antes, mas esse não parece ser o caso.). Então, existe uma maneira de fazer as coisas bem? (ex .: kill dbus (gconf) automaticamente) THX
yuyichao 06/02
11
Você poderia colocar killall dbusalgo assim no seu .logout, mas isso provavelmente atrapalharia outras coisas (ou seja, quando você estiver conectado localmente).
Lars Kotthoff
Hmm, parece que preciso fazer isso manualmente (ou seja, nenhuma opção direta para isso). Pelo menos eu já estou usando kill-session=1e espero systemd pode me dizer qual é o processo de direito de matar ~~~ THX (ou seja, os processos não matar em outras sessões.)
yuyichao