[英]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.