Ich führe den folgenden Befehl aus und überwache die Ausgabedatei auf dem anderen System:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Wenn ich den Befehl ssh mit ^C
oder nur mit dem Terminal töte, an dem ich angemeldet bin, würde ich erwarten, dass auch der Remote-Befehl beendet wird. Dies ist jedoch nicht der Fall: /tmp/count
Erhält unabhängig davon alle Zahlen 1 bis 5 und ps -ejH
zeigt, dass die Shell und ihr sleep
Kind weiterlaufen.
Ist dieses erwartete Verhalten und wird es irgendwo dokumentiert? Kann ich es deaktivieren? Beim Lesen hatte ich erwartet, dass ich diese Art von Verhalten explizit mit nohup aktivieren muss, nicht damit es die Standardeinstellung ist.
Ich habe in den Manpages nach ssh und sshd gesucht, aber nichts Offensichtliches entdeckt, und Google weist mich auf Anweisungen zum Aktivieren dieses Verhaltens und nicht zum Deaktivieren hin.
Ich verwende Red Hat Enterprise Linux 6.2 mit einem Root-Login und einer Bash-Shell auf beiden Systemen.
-tt
anstelle von,-t
wenn ssh selbst kein tty zugewiesen hat. SSH erhält keine zugewiesene tty, wenn ssh sofort nach dem Aufruf über Optionen wie-f
oder im Hintergrund angezeigt wird-n
.