-
一:緣起
昨夜雨疏風驟,家裏飯菜已好. 趕着下班.
但是爲了監控一個安卓設備的軟件問題.
於是乎, 輸入 adb logcat |grep *********>my.log (*****就是某關鍵字)
準備監控一晚上,明早來看看日誌中有沒有要的記錄.
今朝來看,my.log裏面一片空白. 按住ctrl+c終止命令後. my.log裏面還是什麼都沒有.
然而輸入"adb logcat |grep *********" 卻是有一大片內容的
爲什麼不能重定向輸入到文件呢?
------------------------------------------------
-
二:衆裏尋他千百度
難道grep的問題; 輸入"echo ** |grep *********>my.log" 是可以的
又或是adb的問題? 嘗試"adb logcat -d |grep *********>my.log" 也寫進去了
說明不是這2個原因,
默然回首是否是緩衝的問題呢,百度了一下果然"那人的確在燈火闌珊處"
grep 在控制檯裏面直接輸出,是用了行緩衝區,也就是收到一行就輸出了.能看到內容
但是將他重定向輸出到文件,則用的是full緩衝,必須等輸出全部結束才寫入.
所以中途看不到,按住ctrl+c,結束進程(直接退出)也寫不進去.
--------------------------------------------------
-
三:解決
grep命令增加 "--line-buffered" 參數 設置爲行緩衝
adb logcat | grep XXX --line-buffered > my.log
日誌隨後徐徐寫之. 問題解決