Quando avvio una sessione SSH che esegue un comando di lunga durata, cosa succede con la gestione Ctrl+ C(SIGINT)?
Vedo che la sessione SSH è chiusa, ma non sono sicuro di chi ottenga SIGINT per primo: è ...
il comando remoto di lunga durata? cioè, (a) il gestore del segnale nel comando remoto viene chiamato e arresta il comando remoto, (b) la shell che lo ha generato rileva che il comando si è fermato, e si ferma anche (c) lo sshd remoto rileva che la shell si è fermata, quindi chiude la connessione
o
lo ssh locale riceve il segnale e chiude la connessione.
Penso che (1) stia accadendo, ma voglio essere sicuro.
Sono anche incerto su ciò che accade con la gestione della shell di SIGINT in questo caso. Ad esempio, se io ...
ssh remote 'while true ; do sleep 1 ; date ; done'
e Ctrl+ C, quindi la connessione remota viene interrotta. C'è un modo per eseguire il comando remoto sotto una shell che rimarrà in vita dopo Ctrl+ C? Cioè, in questo caso, interrompere il loop e permettermi di continuare a lavorare sulla shell remota?
ssh remote command
, al contrario dissh remote
) verrà ucciso (sul lato locale) dal SIGINT generato digitando ctrl-C. Il lato remoto probabilmente (dipende dal sistema operativo) rimarrà in esecuzione fino a quando non tenta di leggere o scrivere nel socket chiuso. Se si desidera che tutte le sequenze di tasti, incluso Ctrl-C, vengano trasmesse al telecomando, utilizzaressh remote
.