Copiei um trecho de Bash para segundo plano um comando ssh executado remotamente:
ssh user@remote <<CMD
some process <&- >log 2>error &
CMD
O que <&-faz?
Meu palpite é que é o mesmo que< /dev/null
Minha próxima entendimento é que os três principais descritores de arquivos ( stdin, stdout, stderr) precisam ser fechados para evitar:
- O trabalho que está sendo realizado em segundo plano e o script saindo - conflitante de alguma forma?
- Quando o terminal é fechado, todos os processos que estão aceitando stdin do terminal são fechados?
ssh -nNT user@remote 'command'criará uma sessão SSH não interativa. Acrescente-o &ao segundo plano, anexe nohup-o commandao para mantê-lo em execução se a sua conexão acabar.
man sshsugere que -N desabilite a execução de um comando remoto por completo, e um teste rápido suporta isso.