Estou executando o comando abaixo e monitorando o arquivo de saída no outro sistema:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Se eu matar o comando ssh usando ^C
ou apenas matando o terminal no qual estou conectado, esperaria que o comando remoto também terminasse. Porém, isso não acontece: /tmp/count
obtém todos os números de 1 a 5 independentemente e ps -ejH
mostra o shell e seu sleep
filho continuando em execução.
Esse comportamento é esperado e está documentado em algum lugar? Posso desativá-lo? Pela leitura, eu esperava ter que habilitar explicitamente esse tipo de comportamento com nohup, não para que seja o padrão.
Dei uma olhada nas páginas de manual para ssh e sshd, mas não vi nada óbvio, e o Google me aponta instruções para ativar esse comportamento, não para desativá-lo.
Estou executando o Red Hat Enterprise Linux 6.2, com um login root e um shell bash nos dois sistemas.
-tt
vez de-t
se o próprio ssh não tiver um tty alocado. O SSH não receberá um tty alocado se o ssh ficar em segundo plano imediatamente após a chamada, por meio de opções como-f
ou-n
.