Запуск 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
Вы могли бы использовать screen -d script.sh
запустить скрипт с screen
в автономном режиме.