Lorsque je démarre une session SSH qui exécute une commande de longue durée, que se passe-t-il avec la gestion de Ctrl+ C(SIGINT)?
Je peux voir que la session SSH est fermée, mais je ne sais pas qui obtient le SIGINT en premier: est-ce ...
la commande à distance longue durée? c'est-à-dire que (a) le gestionnaire de signal dans la commande à distance est appelé et arrête la commande à distance, (b) le shell qui l'a engendrée détecte que la commande s'est arrêtée, et s'arrête également (c) le sshd distant détecte le shell arrêté, il ferme donc la connexion
ou
le ssh local reçoit le signal et ferme la connexion.
Je pense que (1) se produit, mais je veux m'assurer.
Je ne suis pas sûr non plus de ce qui se passe avec la gestion shell des SIGINT dans ce cas. Par exemple, si je ...
ssh remote 'while true ; do sleep 1 ; date ; done'
et Ctrl+ C, puis la connexion à distance est interrompue. Existe-t-il un moyen d'exécuter la commande à distance sous un shell qui restera en vie après Ctrl+ C? Autrement dit, dans ce cas, arrêter la boucle et me permettre de continuer à travailler sur le shell distant?
ssh remote command
, par opposition àssh remote
) sera tué (du côté local) par le SIGINT généré en tapant ctrl-C. Le côté distant continuera probablement (en fonction du système d'exploitation) jusqu'à ce qu'il essaie de lire ou d'écrire sur le socket fermé. Si vous souhaitez que toutes vos frappes, y compris ctrl-C, soient transmises à la télécommande, utilisezssh remote
.