在后台运行 ssh/netcat

在后台运行 ssh/netcat

我正在尝试在 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

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

答案2

您可能习惯以分离模式screen -d script.sh启动脚本。screen

相关内容