在后台运行ssh / netcat

我试图在OS X和Linux主机之间运行networking吞吐量testing。 我希望能够测量从Linux主机到OS X主机的持续吞吐量。 我想把这个包装成一个单一的脚本,这样我可以很容易地运行它,因为我对networking进行了更改。

到目前为止,我的方法是在侦听端口的OS X主机上启动netcatnc -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来测量吞吐量并将其logging到文件中。

这一切都很好,当我打开3个terminal窗口,并在前台运行这些命令。 但是,当我尝试在后台运行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

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

您可以使用screen -d script.sh以分离模式使用screen -d script.sh启动脚本。