скорость bash-скрипт через SSH в фоновом режиме или на переднем плане

У меня любопытство:

Я запускаю сценарий bash через SSH-соединение, которое имеет много выходных данных для stdout.
есть ли разница в производительности, если я запускаю процесс в фоновом режиме или на переднем плане?

У меня есть ощущение, что работает в фоновом режиме, даже если я вижу вывод stdout в любом случае, может быть быстрее, потому что сам bash не зависит от задержки SSH. Разве это имеет смысл?

29
задан Andrea Zonca
26.01.2023 13:07 Количество просмотров материала 3101
Распечатать страницу

2 ответа

как указал сарнольд, запуск процесса в фоновом режиме не будет иметь заметной разницы. Я думаю, что перенаправление вывода в файл удалит возможное узкое место локального терминала и, таким образом, будет быстрее.

во всяком случае, если вам все еще нужно увидеть выходные данные, попробуйте добавить эти параметры для ssh:

ssh -c blowfish -C remotehost foo

где -C включит сжатие, а-c blowfish выберет алгоритм шифрования, который имеет меньшее влияние на процессор

0
отвечен user842313 2023-01-27 20:55

вы спросили о двух случаях, но я думаю, что вам нужен третий:

  1. без фона:

    ssh remotehost
    foo
    
  2. С справочная информация:

    ssh remotehost
    foo &
    
  3. выход перенаправляется:

    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)?) также позволяет запускать сценарий, не отправляя его выходные данные через сеанс терминала, поэтому, возможно, требуется четвертый вариант. Но есть, вероятно, больше способов запустить сценарий без принудительная передача выходных данных по сети...

1
отвечен sarnold 2023-01-27 23:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх