J'exécute la commande ci-dessous et surveille le fichier de sortie sur l'autre système:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Si je tue la commande ssh en utilisant ^C
ou en tuant simplement le terminal auquel je suis connecté, je m'attends à ce que la commande à distance se termine également. Cependant, cela ne se produit pas: /tmp/count
obtient tous les nombres de 1 à 5 et ps -ejH
montre que le shell et son sleep
enfant continuent de fonctionner.
Ce comportement est-il attendu et est-il documenté quelque part? Puis-je le désactiver? En lisant, je m'attendais à devoir explicitement activer ce type de comportement avec nohup, pas pour que ce soit la valeur par défaut.
J'ai jeté un coup d'œil dans les pages de manuel pour ssh et sshd, mais je n'ai rien repéré d'évident, et Google me montre les instructions pour activer ce comportement, pas pour le désactiver.
J'utilise Red Hat Enterprise Linux 6.2, avec un login root et un shell bash sur les deux systèmes.
-tt
au lieu de-t
si ssh lui-même n'a pas de tty alloué. SSH n'obtiendra pas de tty alloué si ssh est mis en arrière-plan immédiatement lors de l'appel via des options comme-f
ou-n
.