Запуск 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 в автономном режиме.