技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> 小心grep 的buffer

小心grep 的buffer

浏览:3069次  出处信息
在统计mysql查询次数时,有如下命令:

 while :; do sleep 1;  mysql -u user -ppass -h phpor.net -P 3306 -e 'show status like "Questions";'; done |grep Ques | awk '{print $2 - old; old = $2; }'

几秒钟后都看不到结果,怀疑是awk的buffer造成的,于是改写为:
 while :; do sleep 1;  mysql -u user -ppass -h phpor.net -P 3306 -e  'show status like "Questions";'; done |grep Ques | awk  '{print $2 - old; old = $2; fflush();}'

依然不行,于是,把该命令推到后台,使用strace跟踪了一下awk,发现awk没有读到内容,很自然地,跟踪grep吧,发现grep read到内容了,但是总是不write,开始怀疑我的 Ques写错了,仔细比对,也没有问题呀,突然,屏幕上打印出了很多信息,于是,我恍然大悟,应该是grep的buffer搞的鬼,于是man了一下grep,果然有这方面的选项,再次修改如下:

 while :; do sleep 1;  mysql -u user -ppass -h phpor.net -P 3306 -e  'show status like "Questions";'; done |grep --line-buffered Ques | awk  '{print $2 - old; old = $2; fflush();}'

终于OK了

建议继续学习:

  1. Buffer和cache的区别是什么?    (阅读:6849)
  2. Linux grep命令用法    (阅读:6059)
  3. Linux操作系统中内存buffer和cache的区别    (阅读:5328)
  4. grep 正则表达式选项要记得转义    (阅读:5186)
  5. 快速预热Innodb Buffer Pool的方法    (阅读:4036)
  6. 学习Grep,Sed中的正则    (阅读:3965)
  7. MySQL数据库InnoDB存储引擎 Buffer pool LRU List Flush策略详解    (阅读:3840)
  8. MySQL数据库InnoDB存储引擎 Insert Buffer实现机制详解    (阅读:3597)
  9. grep: writing output: Broken pipe in iTerm2    (阅读:3545)
  10. InnoDB之Dirty Page、Redo log    (阅读:3492)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1