2010-03-29 23 views
6

Tengo una aplicación Erlang ejecutándose como daemon, configurado como servidor SSH. Puedo conectarme con un cliente SSH y obtengo el REPL estándar de Erlang.Cerrar sesión en una sesión SSH en la máquina virtual Erlang sin detener la máquina virtual ni dejar procesos obsoletos

If I 'q().' Apagué la VM de Erlang, no la conexión. Si cierro la conexión ('~.' Para OpenSSH, cierro la ventana en PuTTY) algunos procesos permanecen bajo el árbol sshd_sup/ssh_system_xx_sup. Estos parecen ser procesos de shell obsoletos.

No veo ninguna función exportada en el módulo de shell que me permita cerrar el shell (y por lo tanto la conexión SSH) sin afectar toda la máquina virtual.

¿Cómo debo cerrar sesión en la sesión SSH para no dejar procesos obsoletos en la máquina virtual?

Respuesta

4

'exit().' en el cliente SSH se cierra la conexión sin detener la VM.

No pude encontrar esto documentado en ninguna parte, pero parece hacer casi lo que quiero.

En lugar de dejar 4 procesos obsoletos por cada conexión terminada como matar al cliente, 'exit().' deja 2 procesos obsoletos.

Esto ahora puede estar en el dominio del módulo 'ssh' y ya no en el reino del módulo 'shell'.

+0

No deja ningún proceso obsoleto para mí (R15B01) con los comportamientos '~ .' y' exit() ': ' 4> erlang: system_info (process_count). 43' '% connect by shh 5> erlang: system_info (process_count). 53' '% termina sesión por" ~ ". o "exit()" 6> erlang: system_info (process_count). 43' – seriyPS

Cuestiones relacionadas