Я пытаюсь запустить тест пропускной способности сети между 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
Вероятно, вам просто нужно использовать nohup
Вы можете использовать screen -d script.sh
чтобы запустить скрипт с screen
в автономном режиме.