Запуск ssh/netcat в фоновом режиме

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

Мой подход до сих пор состоял в том, чтобы запустить netcat на хосте OS X, слушающем порт (nc -l -k 20000 > /dev/null). Затем я запускаю netcat на хосте Linux и отправляю данные на хост OS X (ssh <Linux host> 'dd if=/dev/zero | nc <OS X host> 20000 2>&1'). После этого я побегу netstat -i 1 измерить пропускную способность и записать его в файл.

Все это прекрасно работает, когда я открываю 3 окна терминала и запускаю эти команды на переднем плане. Однако когда я пытаюсь запустить одну из команд netcat в фоновом режиме, процесс ssh завершается. Я пытался использовать & а также -f в фоновом режиме ssh.

Вот как выглядит полный скрипт:

#!/usr/bin/env bash

set -o errexit

nc -l -k 20000 > /dev/null &
LISTEN_PID=$!

ssh <linux host> 'dd if=/dev/zero | nc <os x host> 20000 2>&1' &
SEND_PID=$!

echo "Listen: ${LISTEN_PID}, Send: ${SEND_PID}"

netstat -i 1

2 ответа

Вам, вероятно, просто нужно использовать nohup

http://linux.die.net/man/1/nohup

Вы могли бы использовать screen -d script.sh запустить скрипт с screen в автономном режиме.

Другие вопросы по тегам