~によると文書、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では動作しないことがわかりました。最終的に私に必要なのは、SSHセッションが中断された後でもiperfが実行され続けることです。最後に、次のコマンドを使用しました。
nohup iperf -s > iperflog 2>&1 &
より詳細に説明するために、サーバーフラグでiperfを実行し、stdoutをfileにリダイレクトしますiperflog
。2>&1
エラーを含むすべての出力がこのファイルにキャプチャされるように、stderrをstdoutにリダイレクトします。&
バックグラウンドでこのコマンドを実行するようにシェルに指示します。セッションが閉じてもSIGHUP信号を受信するため、プロセスは終了します。nohup
シグナルを無視してプロセスを実行し続けることで、この問題を解決してください。
その後、実行してtail -f iperflog
シェルに正常に表示される出力を表示できます。
前のコマンドでは不要なシェルが必要なので、これは理想的ではありませんが、必要な場所に移動させました。