grep后保存到文件为空的异常

本文探讨了在使用adb logcat结合grep命令实时监控安卓设备软件问题时遇到的日志无法重定向至文件的困扰,并提供了增加--line-buffered参数的解决方案,确保日志能实时写入。
  • 一:缘起

昨夜雨疏风骤,家里饭菜已好. 赶着下班.

但是为了监控一个安卓设备的软件问题.

于是乎,  输入  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

日志随后徐徐写之. 问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值