Logs
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 中的錯誤,還是我不理解輸出重定向,還是什麼?
在嘗試完全相同的事情后遇到了這個問題。正如新手在評論中提到的那樣,有一個
-o
應該輸出到文件的標誌,但是我發現這在 linux 下不起作用,儘管它在手冊頁中。最終我需要的是 iperf 在 ssh 會話中斷後繼續執行。最後我使用了以下命令。
nohup iperf -s > iperflog 2>&1 &
為了稍微分解一下,我們使用 server 標誌執行 iperf 並將 stdout 重定向到 file
iperflog
。2>&1
正在將 stderr 重定向到 stdout 以確保在此文件中擷取所有輸出,包括錯誤。&
告訴 shell 在後台執行這個命令。當會話關閉時,這仍然會導致程序終止,因為它將被發送一個 SIGHUP。nohup
通過忽略該信號並允許程序繼續執行來解決此問題。然後,您可以執行
tail -f iperflog
以在 shell 中查看正常顯示的輸出。這並不理想,因為它確實需要一個 shell,而前一個命令不應該這樣做,但這讓我到達了我需要的地方。