Quando inicio uma sessão SSH que executa um comando de longa execução, o que acontece com o tratamento Ctrl+ C(SIGINT)?
Percebo que a sessão SSH está encerrada, mas não tenho certeza de quem recebe o SIGINT primeiro: é ...
o comando remoto de longa duração? isto é, (a) o manipulador de sinal no comando remoto é chamado e para o comando remoto, (b) o shell que gerou ele detecta que o comando parou e também para (c) o sshd remoto detecta o shell parado, então fecha a conexão
ou
o ssh local recebe o sinal e fecha a conexão.
Eu acho que (1) está acontecendo, mas quero ter certeza.
Também estou incerto sobre o que acontece com o manuseio de shell dos SIGINTs neste caso. Por exemplo, se eu ...
ssh remote 'while true ; do sleep 1 ; date ; done'
e Ctrl+ C, a conexão remota é interrompida. Existe uma maneira de executar o comando remoto em um shell que permanecerá ativo após o Ctrl+ C? Ou seja, nesse caso, interrompa o loop e permita-me continuar trabalhando no shell remoto?
ssh remote command
em oposição assh remote
) será eliminado (no lado local) pelo SIGINT gerado, digitando ctrl-C. O lado remoto provavelmente (depende do sistema operacional) permanecerá em execução até tentar ler ou gravar no soquete fechado. Se você deseja que todas as teclas digitadas, incluindo ctrl-C, sejam passadas para o controle remoto, usessh remote
.