Если ваша команда не выполняется в фоновом режиме, выполнение ssh server command
будет ожидать ее завершения.Например, попробуйте это:
ssh server "sleep 3"
echo finished
Будет напечатано «готово» после sleep 3
, фактически выполненного на удаленном сервере (т.е. через 3 секунды).
Попробуйте это - создайте три файлав ~ / tmp - вызываемые линии, parent.sh и child.sh.Для теста сделайте их на каком-нибудь компьютере с запущенным sshd, чтобы вы могли использовать ssh localhost
вместо ssh server
.Поместите это в них:
Когда вы запускаете parent:
$ cd ~/tmp
$ ./parent.sh
, вывод будет следующим:
next line
child processing: line1
child done
next line
child processing: line2
child done
next line
child processing: line3
child done
parent
, который показываетэтот потомок выполнится до того, как родитель продолжит обработку следующей строки.Вы увидите 2-секундный сон (результат выполнения sleep 2
в child.sh) между строками "child processing" и "child done".
Обратите внимание, что ssh -n
не для запуска ssh
в фоновом режиме - это не для потребления стандартного ввода.Для запуска ssh в фоновом режиме можно использовать ssh -f
- см. man ssh
.