вы спросили о двух случаях, но я думаю, что вам нужен третий:
без фона:
ssh remotehost
foo
С справочная информация:
ssh remotehost
foo &
выход перенаправляется:
ssh remotehost
foo > bar
без фона и с фоном не будет -- bash(1)
не нужно do что-нибудь со стандартного ввода, стандартного вывода и стандартной ошибки при вы выполняете другую программу. bash(1)
даже не видит его. Он просто ждет, пока процесс умрет, поэтому он может дать вам еще одну подсказку оболочки.
когда вы запускаете скрипт в фоновом режиме, вы сможете взаимодействовать с вашим bash(1)
опять очень быстро, но любой вывод все равно будет перебирать ваш ssh(1)
канал, потенциально очень медленно, и потенциально write(2)
syscalls в вашем ssh(1)
клиент может заблокировать, вызывая псевдо-терминала он создает блок, в результате чего скрипт для блокировки при it звонки write(2)
. Это все идентично первому случаю - единственное различие заключается в том, что вы можете вводить команды в свой bash(1)
в то время как сценарий посылает вам вывод, и, возможно,kill %1
, чтобы убить его, или начать другие услуги, или что-то еще. В любом случае скрипт будет работать с одинаковой скоростью.
в третьем случае, когда вы перенаправить вывод в файл ssh(1)
сессия больше не является потенциальным узким местом, и, следовательно, не потенциальным узким местом для выполнение вашего скрипта. Он может работать довольно быстро, возможно, намного быстрее, чем даже работает локально без перенаправления вывода. (Вы когда-нибудь видели top(1)
вывод для ваших терминалов когда вы запускаете команду, которая генерирует много вывода терминала?)
конечно, такой инструмент, как screen(1)
(или dtach(1)
?) также позволяет запускать сценарий, не отправляя его выходные данные через сеанс терминала, поэтому, возможно, требуется четвертый вариант. Но есть, вероятно, больше способов запустить сценарий без принудительная передача выходных данных по сети...