我有一個程序在多臺機器上運行NFS,我想將它們的所有輸出記錄到一個文件中。我可以在每臺計算機上運行./my_program >> filename
,還是存在併發性問題,我應該注意?由於我只是追加,我不認爲會有問題,但我只是想確定。將多個stdouts重定向到單個文件
回答
這可以工作,但是,您將遇到併發問題,並且日誌文件基本上無法解讀。
我會建議是,有對每一個機器,然後在一些週期性的基礎上(比如夜間)日誌文件,該文件與機器名作爲文件名一起串連:
for i in "/path/to/logfiles/*"; do
echo "Machine: $i";
cat $i;
done > filename.log
那應該給你一些想法,我想。
它爲什麼認爲這是C? * Facepalm * – supercheetah 2010-04-26 05:06:34
那麼,報價就好了。 – supercheetah 2010-04-26 05:09:31
NFS協議不支持原子追加寫操作,所以在任何平臺上,追加寫操作在NFS上都不會原子化。如果您嘗試,文件將最終損壞。
當追加到來自多個線程或進程的文件時,在文件以附加模式打開的情況下,該文件的fwrites是原子的,寫入它的字符串不超過文件系統塊大小,文件系統是本地的。在NFS中哪個不是這種情況。
有一個解決方法,雖然我不知道如何從shellcript中做到這一點。該技術被稱爲close-to-open cache consistency
- 1. 將多個文件重定向到stdin
- 2. 將多個命令的輸出重定向到單個文件
- 3. 重定向多個文件夾到單個文件夾
- 4. 301將多個文件重定向到一個子文件夾
- 5. 使用重寫和重定向將多個文件重定向到多個子文件夾
- 6. Logcat被重定向到多個文件
- 7. 輸出重定向到多個文件
- 8. 將多個命令的輸出重定向到一個文件
- 9. 如何將多個URL重定向到一個文件夾
- 10. 將OutputStream重定向到一個文件
- 11. Bash模棱兩可重定向 - 重定向到多個文件
- 12. 將多個域重定向到文件夾+非www到www
- 13. .htaccess將多個域名重定向到單個域名
- 14. 301將多個域重定向到單個域
- 15. 將stdout/stderr重定向到多個文件
- 16. 將stdin stdout重定向到多個文件
- 17. 將stdout和stderr重定向到C++中的單個文件
- 18. 將所有HTTP重定向到單個文件夾的HTTPS
- 19. 如何將docker日誌重定向到單個文件?
- 20. 將單個目錄重定向到HTTPS
- 21. htaccess 301多個文件的重定向
- 22. Apache重定向單個XML文件
- 23. Htaccess重定向單個文件301
- 24. 重定向多個網址單個URL
- 25. Mod重寫將一個文件重定向到另一個域上的文件
- 26. Web.config將一個域重定向到非https文件夾,另一個域重定向到https文件夾
- 27. htaccess將每個子文件夾重定向到新文件夾
- 28. 將整個站點重定向到一個子文件夾
- 29. htacess - 將一個文件夾重定向到另一個內部
- 30. 將301從一個目錄重定向到一個文件
嘗試superuser.com – WhirlWind 2010-04-26 00:28:48
從多個nfs客戶端寫入單個文件最終會導致文件損壞,而不僅僅是交錯數據。 – 2010-04-26 05:09:50