Sto eseguendo il comando seguente e monitorando il file di output sull'altro sistema:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Se uccido il comando ssh usando ^C
o semplicemente uccidendo il terminale a cui ho effettuato l'accesso, mi aspetto che anche il comando remoto venga interrotto. Questo non accade, però: /tmp/count
ottiene tutti i numeri 1–5 a prescindere e ps -ejH
mostra la shell e il suo sleep
bambino continua a correre.
Questo comportamento è previsto ed è documentato ovunque? Posso disabilitarlo? Da quando ho letto, mi sarei aspettato di dover esplicitamente abilitare questo tipo di comportamento senza nohup, non perché fosse quello predefinito.
Ho dato un'occhiata alle pagine man per ssh e sshd, ma non ho notato nulla di ovvio, e Google mi indica le istruzioni per attivare questo comportamento, non per disattivarlo.
Sto eseguendo Red Hat Enterprise Linux 6.2, con un login di root e una shell bash su entrambi i sistemi.
-tt
invece di-t
se ssh stesso non ha un tty allocato. SSH non riceverà un tty allocato se ssh viene immediatamente messo in background al momento dell'invocazione tramite opzioni come-f
o-n
.