Cuando inicio una sesión SSH que ejecuta un comando de ejecución prolongada, ¿qué sucede con el manejo de Ctrl+ C(SIGINT)?
Puedo ver que la sesión SSH está cerrada, pero no estoy seguro de quién recibe primero el SIGINT: ¿es ...
el comando remoto de larga duración? es decir, (a) se llama al controlador de señal en el comando remoto y detiene el comando remoto, (b) el shell que generó detecta que el comando se detuvo y también se detiene (c) el sshd remoto detecta que el shell se detuvo, entonces cierra la conexión
o
el ssh local recibe la señal y cierra la conexión.
Creo que (1) está sucediendo, pero quiero asegurarme.
Tampoco estoy seguro de lo que sucede con el manejo de shell de SIGINT en este caso. Por ejemplo, si yo ...
ssh remote 'while true ; do sleep 1 ; date ; done'
y Ctrl+ C, entonces se cae la conexión remota. ¿Hay alguna manera de ejecutar el comando remoto en un shell que permanecerá vivo después de Ctrl+ C? Es decir, en este caso, ¿detener el ciclo y permitirme seguir trabajando en el shell remoto?
ssh remote command
en oposición assh remote
) será eliminado (en el lado local) por el SIGINT generado al escribir ctrl-C. El lado remoto probablemente (depende del sistema operativo) permanecerá ejecutándose hasta que intente leer o escribir en el socket cerrado. Si desea que todas sus pulsaciones de teclas, incluida ctrl-C, se transfieran al control remoto, usessh remote
.