簡體   English   中英

bash將輸出重定向到文件但結果不完整

[英]bash redirect output to file but result is incomplete

重定向命令輸出的問題已經被問過很多次了,但是我有一個奇怪的行為。 我正在使用版本為 4.3.30(1)-release 的 bash shell (debian) 並嘗試將輸出重定向到一個文件,但並非所有內容都記錄在文件中。 我嘗試運行的 bin 文件是用於 linux 的sauce-connectv4.4.1(在互聯網上公開的saucelabs 客戶端)

如果我跑

#sudo ./bin/sc --doctor

它向我展示了完整的線條
它打印:

信息:解析為“23.42.27.27”
信息:使用解決“g2.symcb.com”
DNS 服務器 '10.0.0.5'...(后跟其他行)
信息:“google.com”不在主機文件中
信息:可以訪問 URL https://google.com

但是,如果我使用以下命令將相同的命令重定向到文件

#sudo ./bin/sc --doctor > alloutput.txt 2>&1

並做

#cat alloutput.txt

記錄了相同的命令輸出,但不推薦使用如下:

信息:解析為 '23.42.2me@mymachine:/opt/$

它有不完整的行,接下來的行甚至沒有記錄(丟失)。

我試過用 >> 附加,它有同樣的問題。 使用命令 &> alloutput.txt 也不會打印整個內容。 誰能指出如何將上述命令的所有行完全記錄到文本文件中?

更新

最后,我通過使用 --log alloutput.txt 設法使用本機二進制日志記錄,它完全為我提供了正確的輸出。 但是我讓這個問題打開,因為我仍然想知道為什么通過執行輸出重定向會錯過一些信息/行

這是一個有趣的問題,我從未見過這種情況。 我將在這里提出建議,看看它是如何工作的:

 sudo ./bin/sc --doctor 2>&1 | tee -a alloutput.txt

你應該試試這個: stdbuf -o0

喜歡:

stdbuf -o0  ./bin/sc --doctor 2>&1 | tee -a alloutput.txt
#commandtorun &> alloutput.txt

此命令會將錯誤重定向並輸出到同一文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM