我正在尝试在 OS X 和 Linux 主机之间运行网络吞吐量测试。我希望能够测量从 Linux 主机到 OS X 主机的持续吞吐量。我希望将其打包成一个脚本,以便在更改网络时轻松运行它。
到目前为止,我的方法是在 OS X 主机上启动 netcat 监听端口 ( nc -l -k 20000 > /dev/null
)。然后,我将在 Linux 主机上启动 netcat,并让其将数据发送到 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
答案1
你可能只需要使用nohup
答案2
您可能习惯以分离模式screen -d script.sh
启动脚本。screen