iperf 守护进程不向日志文件输出任何内容

iperf 守护进程不向日志文件输出任何内容

根据文档,iperf (v2) 服务器可以在守护进程模式下运行,并将其输出发送到日志文件,如下所示:iperf -s -D > iperflog

我以普通用户身份从 CentOS 上的主目录中准确运行该命令,但日志文件始终为空。

如果我在没有 的情况下运行它-D,它会按预期运行,创建一个如下所示的日志文件:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local x.x.x.x port 5001 connected with x.x.x.x port 50928
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 3.0 sec   100 MBytes   279 Mbits/sec

这是 iperf 中的错误,还是我不理解输出重定向,还是什么?

答案1

在尝试完全相同的事情后遇到了这个问题。正如新手在评论中提到的,有一个-o标志应该输出到文件,但是我发现尽管在手册页中,但它在 Linux 下不起作用。最终我需要的是 iperf 在 ssh 会话中断后继续运行。最后我使用了以下命令。

nohup iperf -s > iperflog 2>&1 &

为了稍微分解一下,我们使用服务器标志运行 iperf 并将 stdout 重定向到 file iperflog2>&1将 stderr 重定向到 stdout 以确保在此文件中捕获所有输出,包括错误。告诉&shell 在后台运行此命令。当会话关闭时,这仍然会导致进程被终止,因为它会收到 SIGHUP 信号。nohup通过忽略该信号并允许进程继续运行来修复此问题。

然后,您可以运行tail -f iperflog以在 shell 中查看正常显示的输出。

这并不理想,因为它确实需要一个 shell,而前面的命令不需要,但这让我到达了我需要的地方。

相关内容