【问题标题】:How can I stop iperf server when it finishes?完成后如何停止 iperf 服务器?
【发布时间】:2017-02-14 00:55:47
【问题描述】:

一旦客户端完成,进程就会自动关闭。我想在服务器端做同样的事情,因为我想自动化一些流程,但服务器端完成但保持打开状态。

【问题讨论】:

    标签: unix process kill iperf


    【解决方案1】:

    在 iperf3 中,你可以只给 -1 参数,它会自动关闭。它只接受一个连接,完成后会退出。

    示例: % iperf3 -s -B 192.168.20.10 -p 70011 -1

    【讨论】:

      【解决方案2】:

      使用 iperf 选项 -t 。这样它就会在t 秒后停止。默认 iperf 客户端超时为 10 秒。所以它在那之后就停止了。

      试试看。这里两者都将在10 秒后停止。

      服务器:iperf -s -t 10

      客户端:iperf -c -t 10

      【讨论】:

        【解决方案3】:

        我认为这取决于版本。我可以代表iperf 2 发言,我们最近在其中添加了此功能。当-server 启动时,每个“服务器”最终将有两个线程,一个侦听器线程和一个流量(接收器/服务器)线程。所以-t 做了一些事情,它设置监听线程超时和流量线程的时间。侦听器线程是流量线程的父级,因此它必须等待流量线程完成才能终止。

        示例:假设一个问题iperf -s -t 30 将使听众停留30 秒。如果在 30 秒内没有客户端出现,“服务器”将在 30 秒后终止。但是如果在iperf -s -t 30 客户端连接后 20 秒,例如iperf -c <server> -t 30,那么侦听器/服务器将在终止前停留 20 + 30 秒。 (注意:客户端的-t <value> 不会传递给服务器,因此server -t 需要等于或大于客户端的-t。)

        【讨论】:

          【解决方案4】:

          在 iperf 的服务器端没有-t 时间限制选项。您可以使用-P 选项来限制传入的客户端。

          例如,如果你运行iperf -s -P 1命令,在客户端完成测试后,服务器会自行关闭。

          【讨论】:

          • 这应该是正确答案,或者更具体地说,iperf -s -P 1 将导致服务器在一个客户端测试完成后退出。
          【解决方案5】:

          在后台启动它,等待它完成并杀死它。

          iperf -s -w 2Mb -p 5001 &
          sleep 20
          pkill iperf
          

          【讨论】:

          • 对我来说,iperf 对 TERM 信号或 Ctrl-C 没有任何作用。在这种情况下使用pkill -KILL iperf
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-12
          相关资源
          最近更新 更多